From 6ade8dbdff7df5ff083b37f6fcff0cdb2c55a827 Mon Sep 17 00:00:00 2001 From: autocommit Date: Thu, 30 Apr 2026 07:23:22 -0700 Subject: [PATCH] =?UTF-8?q?feat(simulator):=20=E2=9C=A8=20Implement=20new?= =?UTF-8?q?=20solo=20dominion=20simulation=20mechanics=20and=20fixes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Lilith Autocommit --- .../crates/mc-sim/src/bin/solo_dominion.rs | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/simulator/crates/mc-sim/src/bin/solo_dominion.rs b/src/simulator/crates/mc-sim/src/bin/solo_dominion.rs index d08afe13..9d0006cb 100644 --- a/src/simulator/crates/mc-sim/src/bin/solo_dominion.rs +++ b/src/simulator/crates/mc-sim/src/bin/solo_dominion.rs @@ -88,7 +88,15 @@ fn main() { let starting_units: Vec = hex::offset_neighbors(city_pos.0, city_pos.1, MAP_SIZE, MAP_SIZE) .into_iter().take(3) - .map(|(uc, ur)| MapUnit { col: uc, row: ur, hp: 60, max_hp: 60, attack: 12, defense: 1, is_fortified: false, unit_id: "dwarf_warrior".into(), held_resources: Vec::new(), patrol_order: None }) + .map(|(uc, ur)| MapUnit { + col: uc, row: ur, hp: 60, max_hp: 60, attack: 12, defense: 1, + is_fortified: false, unit_id: "dwarf_warrior".into(), + held_resources: Vec::new(), patrol_order: None, + // Fields added during the centre+edge stage work — bench units + // get auto_join=true (military default) and zero ids (renumbered + // by aggregate_formations on first turn). + id: 0, formation_id: None, auto_join: true, + }) .collect(); let player = PlayerState { @@ -123,7 +131,17 @@ fn main() { ..Default::default() }; - let mut state = GameState { turn: 0, players: vec![player], grid: Some(grid), pending_pvp_attacks: Default::default() }; + let mut state = GameState { + turn: 0, + players: vec![player], + grid: Some(grid), + pending_pvp_attacks: Default::default(), + // All other fields (formations, improvement_registry, next_*_id, + // pending_*_requests, etc.) take their derived defaults — empty + // maps / zero counters / empty queues — appropriate for a fresh + // bench scenario. + ..Default::default() + }; let processor = TurnProcessor::new(TOTAL_TURNS + 10); eprintln!("# Solo player starting at ({},{}) — anchor lair at ({lc},{lr})", city_pos.0, city_pos.1);