feat(turn): Update turn processing logic with improved state validation and player turn transitions

Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
This commit is contained in:
autocommit 2026-06-04 09:26:32 -07:00
parent f4aad57cce
commit 41f2363ba7

View file

@ -779,6 +779,16 @@ pub struct PlayerState {
/// Empty = fall-through to default at dispatch time.
#[serde(default)]
pub controller_id: String,
/// p1-29h — cross-turn tactical memory: the army-level target-lock +
/// commitment-hysteresis channel that makes the AI's war decisive
/// (capture → press on → elimination) instead of indecisive (capture →
/// disperse → opponent refounds). Borrowed `&mut` by
/// `mc_player_api::dispatch::drive_ai_slot` and threaded into the tactical
/// movement layer. `#[serde(skip)]` — transient; re-acquired from scratch
/// (at most one no-lock turn) after a save/load rather than persisted into
/// the save format, keeping the `mc-save` contract unchanged.
#[serde(skip)]
pub tactical_memory: mc_ai::tactical::TacticalMemory,
/// Accumulated expansion capacity (earned from the `expansion` axis).
pub expansion_points: u32,
/// Per-city list of constructed building IDs. Aligned with `cities`.