magicciv/.project/objectives/p0-04-wonder-tracking.md
Natalie e18ef65121 feat(@projects): add automated regression test suite
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-17 01:55:35 -07:00

2.3 KiB

id title priority status scope updated_at evidence
p0-04 World wonder tracking in PlayerState and score victory p0 done game1 2026-04-17
src/simulator/crates/mc-core/src/wonder.rs
src/simulator/crates/mc-turn/src/game_state.rs
src/simulator/crates/mc-city/src/production.rs
src/simulator/crates/mc-turn/src/processor.rs
src/simulator/crates/mc-turn/src/victory.rs
public/games/age-of-dwarves/data/buildings/mundane_wonders.json
src/game/engine/scenes/encyclopedia/encyclopedia_panel.gd
src/game/engine/scenes/city/city_screen.gd
src/game/engine/scenes/city/city_screen.tscn
src/game/engine/tests/unit/test_wonders_built_ui.gd

Summary

Wonder tracking fully wired end-to-end. Rust: PlayerState.wonders_built: BTreeMap<WonderId, u8>, wonder completion hooks in process_city_production, calculate_score folds tier-weighted points. GDScript UI: encyclopedia "Wonders" tab (filter on flags.has("wonder"), built/unbuilt status from GameState.wonders_built); city screen left column shows WondersList of player-owned wonders with tier when non-empty. GUT: 5 tests in test_wonders_built_ui.gd.

Acceptance

  • PlayerState.wonders_built: BTreeMap<WonderId, u8> added — evidence: src/simulator/crates/mc-turn/src/game_state.rs; deterministic BTree iteration. WonderId newtype at src/simulator/crates/mc-core/src/wonder.rs.
  • ✓ Wonder completion appended on build — evidence: src/simulator/crates/mc-turn/src/processor.rs::process_city_production detects Queueable::Wonder { wonder_id } completion, reads queue_tier, inserts into player.wonders_built.
  • victory::calculate_score folds tier-weighted wonder points — evidence: src/simulator/crates/mc-turn/src/victory.rs defines SCORE_WONDER_BASE const; calculate_score sums SCORE_WONDER_BASE * tier per wonder. Test: victory::tests::wonder_score_weighted_by_tier PASS on apricot.
  • ✓ Encyclopedia/city UI "Wonders built" listing — evidence: src/game/engine/scenes/encyclopedia/encyclopedia_panel.gd adds "Wonders" tab (filter on flags.has("wonder")) with built/unbuilt status; src/game/engine/scenes/city/city_screen.gd + .tscn add WondersList ItemList showing player-owned wonders with tier. GUT: src/game/engine/tests/unit/test_wonders_built_ui.gd (5 tests).