Commit Graph

20 Commits

Author SHA1 Message Date
6d3d4dbaed fix(state): replace removed noRoute with replaySystem disable/revert in hero events 2026-09-14 20:20:20 +08:00
c80516deb7 fix(event): 采纳七个内建并修正 touched-jsdoc 门禁
- event.test.ts 与 03-EVENT-CONTRACT.md 同步为七个内建(移除 touchFront/EventTouchFront)

- check-touched-jsdoc 按 dev.md 豁免继承/implements 成员,补充防误删说明

- 刷新 Phase 01-03 验证指纹,三个阶段恢复 passed
2026-09-13 23:38:46 +08:00
b623e8ac98 fix: 勇士事件移动时不应记录录像 2026-09-13 20:42:48 +08:00
0ba70e1a63 docs(event-contract): sync with current built-in names and collection design
- built-in names: setBlock/moveBlock/removeBlock/moveHero/stepHero/touchFront/
  insertEvents/insertEvent (class names Event*)
- removeBlock: static by default, dynamic:true also removes dynamic tiles
- touchFront: steps the hero forward; the mover produces the OnTouch on bump
- GameEventSystem.collectEvent owns source collection; mover enter/leave/hit reuse it
- IBlockEventEnv gains required system and nullable heroFloor; utils.ts keeps only
  getPossibleMap/getPossibleLayer
2026-09-13 20:40:15 +08:00
a66be585d1 feat(event): rework built-ins and centralize trigger collection
- rename deleteBlock -> removeBlock (dynamic tiles need dynamic:true),
  moveHeroStep -> stepHero; touchFront steps forward and lets the mover bump
- GameEventSystem.collectEvent owns point/tile source collection; moverImpl
  enter/leave/hit reuse it with OnEnter/OnLeave/OnTouch
- IBlockEventEnv gains required system field and nullable heroFloor
- MapLayer.removeBlock added and setBlock guarded by inMap; GameMap owns floorId
- IObjectMover.push accepts readonly steps
- update event/eventDispatch tests to the current implementation (fixtures
  supply system, hero location snapshots, renamed registrations)

Verified: data type gate 0 in-scope; vitest 19 files / 112 tests pass; prettier
and eslint clean on touched files.
2026-09-13 20:37:32 +08:00
f0fd2f54a1 refactor(event): class-based built-ins, shared utils, single registration
- rewrite every built-in as EventXxx implements BuiltInFunction<P, E>
  (setBlock/moveBlock/deleteBlock/moveHero/moveHeroStep/touchFront/
  insertEvents/insertEvent), matching the EventSetBlock reference style
- move shared helpers to event/utils.ts (getPossibleMap, getPossibleLayer,
  getEventExecutor, enter/exitEventInsert); utils is not exported via index
- move per-class helpers into private methods (EventTouchFront and
  EventInsertEvents collectInvocations)
- use IObjectMover.push for move sequences instead of manual step calls
- registrations.ts: one createEventRegistrations() writing the eight entries
  in order, categories separated by single-line comments
- remove EventBuiltinName; classes own short string names
- update event tests; core.ts uses createEventRegistrations
2026-09-13 19:17:32 +08:00
5a05eecad1 wip(event): scaffold EventSetBlock class, utils helpers, anon-tokyo workspace dep
- data-state: add @motajs/anon-tokyo workspace dependency
- map.ts: new EventSetBlock BuiltInFunction class (reference style)
- utils.ts: getPossibleMap/getPossibleLayer helpers (not yet wired)

Checkpoint of user-authored in-progress event refactor.
2026-09-13 19:04:25 +08:00
521413fea4 style(03-19): normalize touched event JSDoc to multiline
- Convert map, hero, event, and registration-assembly function JSDoc
  into multiline form for every touched declaration
- Preserve export-only barrels, class-owned registration order, direct
  Statement[] insertion, hero front-touch ownership, and Chinese event
  test comments
2026-09-12 13:26:13 +08:00
a69130c8ad test(03-18): cover event registration ownership and barrel purity
- Assert the real eight-entry class registry, fresh per-group instances,
  and the three-map/three-hero/two-control ownership split
- Prove every class owns its stable name and function, classes originate
  from their owning modules, and hero owns the front-touch registration
- Verify both event barrels stay export-only while prior public event
  symbols remain reachable from the data-state root index
2026-09-11 23:10:37 +08:00
0dc30aace8 refactor(03-18): move event registration assembly out of the barrel
- Add event/registrations.ts as the sole direct-construction assembler for
  the eight class-based registrations in stable map/hero/control order
- Reduce event/index.ts and data-state/src/index.ts to export-only barrels
  that re-export the four public registration creators
- Point CoreState at event/registrations and record the ownership and
  public-export boundaries in the event contract
2026-09-11 23:02:15 +08:00
cb716f699e refactor(03-18): own event registrations as explicit classes
- Replace generic per-invocation registration factories with explicit
  SetBlock/MoveBlock/DeleteBlock, MoveHero/MoveHeroStep/TouchFront, and
  InsertEvents/InsertEvent registration classes
- Move eventTouchFront, invocation collection, and target resolution into
  the hero event layer while keeping awaited OnTouch behavior
- Keep map and control modules limited to their own registration ownership
2026-09-11 22:59:16 +08:00
7315681272 test(03-13): cover direct event body execution
- Exercise eventInsertEvent with an inline Statement[] body
- Prove the body mutates the event layer without an event-store id
- Document the superseding direct-body event contract
2026-09-11 13:28:33 +08:00
2f14d8a0ae 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
2026-09-11 13:25:48 +08:00
d2ebf1cefc test(03-12): cover module-owned event registrations
- Exercise all eight approved registrations with valid typed parameters
- Retain awaited behavior and missing-target safety without nullish guard tests
2026-09-11 11:11:48 +08:00
9c39895620 refactor(03-12): move event registrations into modules
- Keep the barrel limited to registration assembly and exports
- Give map, hero, and control modules typed registration builders without hot-path shape validation
2026-09-11 11:08:49 +08:00
82687b2f56 style(03-08): format event guard coverage
- Restore repository CRLF and Prettier layout for the changed event files
2026-09-10 18:50:33 +08:00
f8cae08bd9 test(03-08): cover nullish event registrations
- Exercise all eight registration functions with null and undefined\n- Assert resolved void results and unchanged fixture state
2026-09-10 18:48:57 +08:00
95df6a0198 fix(03-08): guard registered event parameters
- Return safely before parsing nullish or non-object runtime parameters\n- Cover the real eventSetBlock registration with a null regression
2026-09-10 18:47:26 +08:00
3134537d30 feat(03-02): implement approved event built-ins
- Add map, hero, touch, and temporary event controls
- Register exactly eight built-ins through top-level event assembly
- Cover awaited behavior and safe failure with explicit fixtures
2026-09-10 16:25:02 +08:00
7f19773477 chore(03): checkpoint data layer structure 2026-09-10 13:30:53 +08:00