docs(battlenode): regen-guard banners on hand-edited .g.cs + accessor-band null-policy invariant (M-HC-4 final review)

This commit is contained in:
gamer147
2026-06-07 01:02:00 -04:00
parent 8bd8d1db2f
commit 97e4664cc4
4 changed files with 15 additions and 0 deletions

View File

@@ -1,4 +1,6 @@
// AUTO-GENERATED no-op stubs (m1_stub_gen) from Shadowverse_Code_2026-05-23\Wizard.Battle.View\BattleCardView.cs
// CONTAINS HAND-EDITS (HEADLESS-FIX). Before any regen, grep this file for "HEADLESS-FIX" and re-apply
// those blocks; a plain regen will clobber them.
using System;
using System.Collections.Generic;
using System.Linq;

View File

@@ -1,4 +1,6 @@
// AUTO-GENERATED no-op stubs (m1_stub_gen) from Shadowverse_Code_2026-05-23\Wizard.Battle.View\EnemyClassBattleCardView.cs
// CONTAINS HAND-EDITS (HEADLESS-FIX). Before any regen, grep this file for "HEADLESS-FIX" and re-apply
// those blocks; a plain regen will clobber them.
using UnityEngine;
using Wizard.Battle.Player.ClassCharacter;
namespace Wizard.Battle.View

View File

@@ -1,4 +1,6 @@
// AUTO-GENERATED no-op stubs (m1_stub_gen) from Shadowverse_Code_2026-05-23\Wizard.Battle.View\PlayerClassBattleCardView.cs
// CONTAINS HAND-EDITS (HEADLESS-FIX). Before any regen, grep this file for "HEADLESS-FIX" and re-apply
// those blocks; a plain regen will clobber them.
using UnityEngine;
using Wizard.Battle.Player.ClassCharacter;
namespace Wizard.Battle.View

View File

@@ -159,6 +159,15 @@ internal sealed class SessionBattleEngine
// Each returns LIVE engine state off the seated player, mirroring the Phase-1 oracle reads
// (VanillaFollowerOracleTests: player.Pp, player.HandCardList.Count, ClassAndInPlayCardList,
// leader == the Class card). seat:true == player, false == opponent (F-N-2).
//
// INVARIANT (two accessor bands, different null-engine policy):
// • This "oracle" band (down to EvolveWaitTurnCount) goes through Seat(), which THROWS if the
// engine isn't owned/seated for this session. It is TEST-ONLY — called solely from the
// node-native harness/tests, where the engine is always seated. Do NOT call these from a wire
// handler.
// • The wire-path band below (PlayedCardCost/Spellboost/Clan/Tribe/Id) DEGRADES to a fallback
// when the engine isn't owned (single-active-engine gate), so a non-engine session never
// crashes. Production handlers read ONLY that band.
public int LeaderLife(bool playerSeat) => Seat(playerSeat).Class.Life;
public int Pp(bool playerSeat) => Seat(playerSeat).Pp;