refactor(engine-ambient): wrap residual UnitTests + delete EngineSessionGate
Step 7 of multi-instancing migration. Residual SVSim.UnitTests that touch engine code directly are wrapped in TestBattleScope. EngineSessionGate is deleted along with the _engineOwned bookkeeping in BattleSession; engine setup is unconditional now that per-battle state is isolated on the ambient. Gate-specific fallback branches in BattleSession.ShadowIngest are simplified. Suite fully green (SVSim.UnitTests, SVSim.BattleEngine.Tests). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -50,8 +50,8 @@ internal sealed class PlayActionsHandler : IFrameHandler
|
||||
// engine.Receive for THIS frame before this handler runs, so the engine has resolved the play and
|
||||
// PlayedCardCost reads the discounted cost it actually charged (spellboost + board modifiers folded
|
||||
// in BY CONSTRUCTION — no bookkeeping). Sender's seat == ctx.A (BattleSession.ShadowIngest uses the
|
||||
// same ReferenceEquals(from, A) mapping). Degrades to 0 when the engine isn't owned/ready for this
|
||||
// session (single-active-engine gate) so a non-engine session never crashes.
|
||||
// same ReferenceEquals(from, A) mapping). Degrades to 0 when the engine isn't ready for this session
|
||||
// (Setup failed and the ComputeFrames try/catch swallowed it, ND6) so a non-engine session never crashes.
|
||||
bool senderSeat = ReferenceEquals(ctx.From, ctx.A);
|
||||
int playedCost = ctx.Engine.PlayedCardCost(senderSeat, playIdx, fallback: 0);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user