diff --git a/SVSim.BattleNode/Bridge/MatchContext.cs b/SVSim.BattleNode/Bridge/MatchContext.cs new file mode 100644 index 0000000..b5b81d2 --- /dev/null +++ b/SVSim.BattleNode/Bridge/MatchContext.cs @@ -0,0 +1,29 @@ +namespace SVSim.BattleNode.Bridge; + +/// +/// Per-battle player snapshot captured at do_matching time and replayed into the scripted +/// lifecycle on WS connect. SVSim.BattleNode does not know how to build this — the HTTP-side +/// per-mode controller is the source. Snapshot semantics: cosmetic changes between matching +/// and WS connect have no effect on the in-battle render. +/// +public sealed record MatchContext( + // Player's drafted deck — exactly 30 entries, idx 1..30 paired with the chosen cardIds + // in the order this list provides them. Producer is responsible for the count. + IReadOnlyList SelfDeckCardIds, + + // Player class + leader (BattleStartSelfInfo) + string ClassId, // "1".."8" + string CharaId, // "1".."8" — equals ClassId when no leader skin chosen + string CardMasterName, // current card-master, e.g. "card_master_node_10015" + + // Player cosmetics (MatchedSelfInfo) + string CountryCode, // "KOR", "JPN", ... + string UserName, + string SleeveId, + string EmblemId, + string DegreeId, + int FieldId, + int IsOfficial, // 0 or 1 + + // Battle-mode hint, currently TK2 == 11. Future modes populate their own value. + int BattleType);