Behavior-preserving; 231 BattleNode tests green. One enum conflated two axes. Split: - HandshakePhase (per participant): AwaitingInitNetwork..AfterReady. On IHasHandshakePhase.Phase, FrameDispatchContext.SenderPhase, the handler gates. - SessionLifecycle (per battle): Active | Terminal. On the renamed BattleSessionState.Lifecycle (was SessionPhase, defaulting to a handshake value) and BattleSession.Lifecycle (was Phase). Reads are only != Terminal, so the Active default is behavior-identical. OpponentTurn was dead (never assigned) -> dropped. BattleSessionPhase deleted; the two axes can no longer be cross-assigned. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
19 lines
749 B
C#
19 lines
749 B
C#
namespace SVSim.BattleNode.Sessions;
|
|
|
|
/// <summary>
|
|
/// Per-participant progression through the v1 server-authored setup handshake. Each side advances
|
|
/// InitNetwork → InitBattle → Loaded → Swap → AfterReady as the session acks its emits. Tracked
|
|
/// per participant via <see cref="Participants.IHasHandshakePhase"/>; the session reads the
|
|
/// SENDER's phase (<see cref="Dispatch.FrameDispatchContext.SenderPhase"/>) to gate which setup
|
|
/// frame to author next. Distinct from the session-global <see cref="SessionLifecycle"/> — this is
|
|
/// one axis per side, that is one axis per battle.
|
|
/// </summary>
|
|
public enum HandshakePhase
|
|
{
|
|
AwaitingInitNetwork,
|
|
AwaitingInitBattle,
|
|
AwaitingLoaded,
|
|
AwaitingSwap,
|
|
AfterReady,
|
|
}
|