feat(battlenode): mulligan+turn ops track on engine state (M-HC-1)
Task 2's WireMulliganPhase already installed the full mulligan delegate set (Swap/Ready, not just Deal) via MulliganEventSetting, and the mulligan + turn-draw mutations flow through VfxMgr.RegisterSequentialVfx — which HeadlessConductorVfxMgr runs for InstantVfx. So Swap/Ready/ TurnStart/TurnEnd resolve headless with ZERO new shim/seed/view fills. Adds the M-HC-1 milestone assertions: a mulligan-swap test (post-swap hand holds deck idx 1,2,4 — idx-3 swapped for the next unused idx) and a two-turn test (Deal->Swap->Ready->TurnStart/TurnEnd x2) asserting the engine's deterministic node-native progression on both seats (hand/deck/PP/turn/leader-life) at each boundary. Frame shapes mirror the captured battle_test_cl1 receive stream (self/oppo pos-idx lists, spin). Harness/node: +DeckCount/Turn board-state pass-throughs (test reads). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -149,6 +149,8 @@ internal sealed class SessionBattleEngine
|
||||
public int LeaderLife(bool playerSeat) => Seat(playerSeat).Class.Life;
|
||||
public int Pp(bool playerSeat) => Seat(playerSeat).Pp;
|
||||
public int HandCount(bool playerSeat) => Seat(playerSeat).HandCardList.Count;
|
||||
public int DeckCount(bool playerSeat) => Seat(playerSeat).DeckCardList.Count;
|
||||
public int Turn(bool playerSeat) => Seat(playerSeat).Turn;
|
||||
|
||||
/// <summary>Followers in play, excluding the leader (the Class card occupies one slot of
|
||||
/// ClassAndInPlayCardList).</summary>
|
||||
|
||||
Reference in New Issue
Block a user