Goal: all entities + gameplay on ECS; bespoke entity/controller/adapter code deleted.
Scope / deliverables:
cavedroid:components (Player/Inventory/Food/Armor/Bow/Ai/FluidState/…).
cavedroid:systems (movement, physics-sync, damage, fluid, fire, grow, spawn, hunger).
- AI on gdx-ai (Behavior Trees + FSM + steering) replacing
MobBehavior Passive/Aggressive/Archer/FallingBlock. Drive Timepiece from ClockContext; randomness via seeded source; emit via command bus; AI components ticked in the entityAI phase.
- A* pathfinding over the tile grid — separate, possibly-deferred sub-task (nav graph over loaded chunks, time-sliced).
cavedroid:actions (UseBucket, UseBed, PlaceSlab, …) using context parameters.
- Delete
*WorldAdapter, controllers, *Queue spawn queues.
Definition of Done: mobs/drops/projectiles/player run on ECS; no adapters in the codebase. Per-system tests asserting emitted commands (bulk of coverage).
Depends on: E2, E3
Goal: all entities + gameplay on ECS; bespoke entity/controller/adapter code deleted.
Scope / deliverables:
cavedroid:components(Player/Inventory/Food/Armor/Bow/Ai/FluidState/…).cavedroid:systems(movement, physics-sync, damage, fluid, fire, grow, spawn, hunger).MobBehaviorPassive/Aggressive/Archer/FallingBlock. DriveTimepiecefromClockContext; randomness via seeded source; emit via command bus; AI components ticked in theentityAIphase.cavedroid:actions(UseBucket, UseBed, PlaceSlab, …) using context parameters.*WorldAdapter, controllers,*Queuespawn queues.Definition of Done: mobs/drops/projectiles/player run on ECS; no adapters in the codebase. Per-system tests asserting emitted commands (bulk of coverage).
Depends on: E2, E3