refactor(battlenode): guard generated iface-impl against regen + stub visibility (M-HC-0 review)
- _IfaceImpl.g.cs: extend header to warn about hand-edits; tag all bare // HEADLESS-FIX lines with their milestone (M13 on GetSideLogControl ×2) so `grep HEADLESS-FIX` reliably surfaces every block before a regen. - HeadlessHandViewStub / HeadlessPlayQueueViewStub: narrow from public to internal sealed — both stubs are consumed only within SVSim.BattleEngine (via the generated partial impls); no public surface exposes the concrete type, so internal is correct and aligns with HeadlessIconAnimations. - SessionBattleEngine.SeedMulliganInfoControl: add one-line comment on the GetComponent<MulliganInfoControl>() call explaining the shim's lazy materialisation behaviour (otherwise reads like a guaranteed NRE). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -277,7 +277,7 @@ internal sealed class SessionBattleEngine
|
||||
// (it isn't a Component, so WireComponentFields skips it). Node seed (allowed) — pure no-op view leaves.
|
||||
private static void SeedMulliganInfoControl(GameObject prefab)
|
||||
{
|
||||
var ctrl = prefab.GetComponent<MulliganInfoControl>();
|
||||
var ctrl = prefab.GetComponent<MulliganInfoControl>(); // Shim GameObject.GetComponent<T>() lazily materialises a no-op component — not a real Unity scene; this is intentional and will not NRE.
|
||||
var partsType = typeof(MulliganInfoControl)
|
||||
.GetNestedType("MulliganParts", BindingFlags.NonPublic)
|
||||
?? throw new InvalidOperationException("MulliganInfoControl.MulliganParts nested type not found");
|
||||
|
||||
Reference in New Issue
Block a user