63 lines
2.4 KiB
TypeScript
63 lines
2.4 KiB
TypeScript
import { AnimationState, type StoryOption } from '../../../types';
|
|
import type { FunctionDocumentationEntry } from '../types';
|
|
|
|
/**
|
|
* camp_travel_home_scene
|
|
*
|
|
* 从营地与同伴对话结束后,正式前往角色主线场景的控制 function。
|
|
* 这里除了元信息,也直接收口了它的按钮构造与判定 helper。
|
|
*/
|
|
export const CAMP_TRAVEL_HOME_OPTION_VISUALS: StoryOption['visuals'] = {
|
|
playerAnimation: AnimationState.RUN,
|
|
playerMoveMeters: 1.1,
|
|
playerOffsetY: 0,
|
|
playerFacing: 'right',
|
|
scrollWorld: false,
|
|
monsterChanges: [],
|
|
};
|
|
|
|
export function buildCampTravelHomeOption(sceneName: string): StoryOption {
|
|
return {
|
|
functionId: CAMP_TRAVEL_HOME_FUNCTION.id,
|
|
actionText: `前往 ${sceneName}`,
|
|
text: `前往 ${sceneName}`,
|
|
detailText: `离开营地,前往 ${sceneName}。`,
|
|
visuals: CAMP_TRAVEL_HOME_OPTION_VISUALS,
|
|
};
|
|
}
|
|
|
|
export function isCampTravelHomeFunctionId(functionId: string) {
|
|
return functionId === CAMP_TRAVEL_HOME_FUNCTION.id;
|
|
}
|
|
|
|
export function isCampTravelHomeOption(option: StoryOption) {
|
|
return isCampTravelHomeFunctionId(option.functionId);
|
|
}
|
|
|
|
export const CAMP_TRAVEL_HOME_FUNCTION: FunctionDocumentationEntry = {
|
|
id: 'camp_travel_home_scene',
|
|
domain: 'flow',
|
|
title: '前往角色主场景',
|
|
source: 'src/data/functionCatalog/flow/campTravelHomeScene.ts',
|
|
summary: '营地开场后的专用旅行控制项。',
|
|
detailedDescription:
|
|
'它负责把开局同伴营地流程平稳切到角色真正的起始场景,并清理当前营地 encounter、战斗态和镜头残留状态。',
|
|
trigger: '常见于开局同伴营地对话后的跟进选项。',
|
|
execution:
|
|
'点击后不会走普通 state function 结算,而是执行一次定制的场景迁移和历史写入。',
|
|
result: '玩家会离开营地进入角色主场景,正式开始该角色的冒险线。',
|
|
active: true,
|
|
runtime: {
|
|
storyMode: 'special_travel',
|
|
uiMode: 'none',
|
|
visuals: CAMP_TRAVEL_HOME_OPTION_VISUALS,
|
|
executor:
|
|
'src/hooks/rpg-runtime-story/choiceActions.ts -> handleCampTravelHome',
|
|
animationNote:
|
|
'先播放营地离场的 run 演出,再切到正式场景并生成 encounter preview。',
|
|
storyNote:
|
|
'通过 commitGeneratedStateWithEncounterEntry 写入离营结果,并在新场景继续后续剧情。',
|
|
uiNote: '这是专用旅行流程,不会打开 modal。',
|
|
},
|
|
};
|