From 2f14d8a0ae628b913452fca5afb49e964446f2c5 Mon Sep 17 00:00:00 2001 From: unanmed <1319491857@qq.com> Date: Fri, 11 Sep 2026 13:25:48 +0800 Subject: [PATCH] fix(03-13): execute single event bodies directly - Accept anon-tokyo Statement[] bodies for eventInsertEvent - Execute bodies through the existing interpreter without event-store lookup - Preserve eventInsertEvents as the ordered id-sequence path --- packages-user/data-state/src/event/event.ts | 29 ++++++++++++++------- packages-user/data-state/src/event/types.ts | 8 +++--- 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/packages-user/data-state/src/event/event.ts b/packages-user/data-state/src/event/event.ts index efd9ee4..02925de 100644 --- a/packages-user/data-state/src/event/event.ts +++ b/packages-user/data-state/src/event/event.ts @@ -205,15 +205,6 @@ export async function eventInsertEvents( } } -/** 临时执行指定事件 */ -export async function eventInsertEvent( - param: IInsertEventEventParam, - env: IBlockEventEnv -): Promise { - if (!param.id) return; - await eventInsertEvents({ ids: [param.id] }, env); -} - /** 创建事件控制事件的内建函数注册项 */ export function createControlEventBuiltinRegistrations(): ReadonlyArray { return [ @@ -228,3 +219,23 @@ export function createControlEventBuiltinRegistrations(): ReadonlyArray { + if (param.length === 0 || !hasEventSystem(env.state)) return; + const depth = eventInsertDepth.get(env) ?? 0; + if (depth >= EVENT_INSERT_MAX_DEPTH) return; + eventInsertDepth.set(env, depth + 1); + try { + await env.state.eventSystem.executor.interpreter.exec( + param, + { custom: {} }, + env + ); + } finally { + eventInsertDepth.delete(env); + } +} diff --git a/packages-user/data-state/src/event/types.ts b/packages-user/data-state/src/event/types.ts index b777ea9..3f06a57 100644 --- a/packages-user/data-state/src/event/types.ts +++ b/packages-user/data-state/src/event/types.ts @@ -1,4 +1,5 @@ import { ObjectMoveStep } from '@user/data-common'; +import { Statement } from 'anon-tokyo'; //#region 地图控制 @@ -58,11 +59,8 @@ export interface IInsertEventsEventParam { readonly ids: readonly string[]; } -/** 事件:临时插入一个事件 */ -export interface IInsertEventEventParam { - /** 事件 id */ - readonly id: string; -} +/** 事件:临时执行一段事件语句 */ +export type IInsertEventEventParam = Statement[]; /** 内建函数的稳定注册名称 */ export const enum EventBuiltinName {