Close DDD refactor and remove generated asset proxy
This commit is contained in:
@@ -45,7 +45,7 @@ export const CAMP_TRAVEL_HOME_FUNCTION: FunctionDocumentationEntry = {
|
||||
'它负责把开局同伴营地流程平稳切到角色真正的起始场景;正式目标场景、encounter 清理、战斗态清理和镜头残留状态由后端 resolver 写入。',
|
||||
trigger: '常见于开局同伴营地对话后的跟进选项。',
|
||||
execution:
|
||||
'点击后作为服务端 runtime function id 提交到 /api/runtime/story/actions/resolve,由后端执行定制场景迁移和历史写入。',
|
||||
'点击后作为服务端 runtime function id 提交到 /api/story/sessions/{storySessionId}/actions/resolve,由后端执行定制场景迁移和历史写入。',
|
||||
result: '玩家会离开营地进入角色主场景,正式开始该角色的冒险线。',
|
||||
active: true,
|
||||
runtime: {
|
||||
@@ -53,7 +53,7 @@ export const CAMP_TRAVEL_HOME_FUNCTION: FunctionDocumentationEntry = {
|
||||
uiMode: 'none',
|
||||
visuals: CAMP_TRAVEL_HOME_OPTION_VISUALS,
|
||||
executor:
|
||||
'server-rs/crates/api-server/src/runtime_story/compat.rs -> resolve_camp_travel_home_scene_action',
|
||||
'server-rs/crates/module-runtime-story/src/session_action.rs -> resolve_story_runtime_action',
|
||||
animationNote:
|
||||
'前端保留 run 视觉元信息;正式状态以服务端 hydrated snapshot 为准。',
|
||||
storyNote:
|
||||
|
||||
@@ -30,7 +30,7 @@ export const STORY_OPENING_CAMP_DIALOGUE_FUNCTION: FunctionDocumentationEntry =
|
||||
storyMode: 'special_sequence',
|
||||
uiMode: 'none',
|
||||
executor:
|
||||
'server-rs/crates/api-server/src/runtime_story/compat.rs -> resolve_runtime_story_choice_action',
|
||||
'server-rs/crates/module-runtime-story/src/session_action.rs -> resolve_story_runtime_action',
|
||||
animationNote: '重点在对白本身,不额外驱动独立战斗/位移动画。',
|
||||
storyNote: '会把 prompt 切到营地开场对白模式,并要求输出结构化对话行。',
|
||||
uiNote: '不弹 modal,直接进入对白流。',
|
||||
|
||||
@@ -105,7 +105,7 @@ describe('functionCatalog', () => {
|
||||
expect(campTravelOption.actionText).toBe('前往 竹林古道');
|
||||
expect(campTravelOption.detailText).toBe('离开营地,前往 竹林古道。');
|
||||
expect(CAMP_TRAVEL_HOME_FUNCTION.runtime?.executor).toContain(
|
||||
'server-rs/crates/api-server/src/runtime_story/compat.rs',
|
||||
'server-rs/crates/module-runtime-story/src/session_action.rs',
|
||||
);
|
||||
expect(CAMP_TRAVEL_HOME_FUNCTION.detailedDescription).toContain(
|
||||
'后端 resolver',
|
||||
|
||||
@@ -8,7 +8,7 @@ import type { FunctionDocumentationEntry } from '../types';
|
||||
*/
|
||||
const QUEST_OFFER_SOURCE = 'src/data/functionCatalog/npc/npcChatQuestOffer.ts';
|
||||
const QUEST_OFFER_EXECUTOR =
|
||||
'server-rs/crates/api-server/src/runtime_story/compat.rs -> resolve_runtime_story_choice_action';
|
||||
'server-rs/crates/module-runtime-story/src/session_action.rs -> resolve_story_runtime_action';
|
||||
|
||||
export const NPC_CHAT_QUEST_OFFER_VIEW_FUNCTION: FunctionDocumentationEntry = {
|
||||
id: 'npc_chat_quest_offer_view',
|
||||
|
||||
@@ -182,7 +182,10 @@ export function buildNpcBattleFormationFromEncounter(params: {
|
||||
const slots = getSceneActBattleSlots(primaryX);
|
||||
|
||||
const resolvedFormation = formationSourceEncounters.map((memberEncounter, index) => {
|
||||
const slot = slots[index] ?? slots[slots.length - 1];
|
||||
const slot = slots[index] ?? slots[slots.length - 1] ?? {
|
||||
xMeters: primaryX,
|
||||
yOffset: 0,
|
||||
};
|
||||
const npcState = getResolvedNpcState(state, memberEncounter);
|
||||
const battleMonster = createNpcBattleMonster(
|
||||
memberEncounter,
|
||||
|
||||
Reference in New Issue
Block a user