Files
SVSimServer/SVSim.BattleEngine/Shim/GodObjects/GodObjects.cs
gamer147 957af3d1ec feat(battle-engine): full Unity/VFX/god-object shims + expanded copy closure (2570 files)
Authored Unity primitive/object-model shim, VFX layer (control-flow-preserving, InstantVfx never invokes its action -- headless suppression), god-object stubs (GameMgr/EffectMgr/UIManager with faithfully-extracted nested enums), View/UI/Touch tree, LitJson+BetterList+Tuple copied, third-party stubs. Discovered Roslyn header-error masking: fixing class-header type errors unmasks body references, so the true copy closure is ~2570 files (was 782 under masking). Errors: masked-25720 -> 268; our shim files compile clean. Remaining: ~50 residual shim/external types, 24 NGUI UI-base overrides, static-type fixes, plus likely 1-2 more unmask waves.
2026-06-05 17:22:20 -04:00

62 lines
2.8 KiB
C#

// AUTHORED SHIM (not copied). The god-object singletons the engine reaches for
// presentation/scene/effects. These are the M0 "stop the bleed" types: copying
// them would re-explode the closure into the whole app (audio, scene, UI, net),
// so we shim a minimal surface. The nested enums below are presentation
// classifiers used only inside never-run VFX actions (IsForecast suppresses VFX),
// so their VALUES are immaterial to game state -- but the symbols the engine
// references must exist to compile. Members listed are exactly those the compiler
// demanded (extracted from the copied engine, not guessed).
// (Global namespace: the decomp root files declare no namespace.)
public class EffectMgr
{
public enum EffectType
{
NONE,
CMN_CARD_ACCELERATE_1, CMN_CARD_CRYSTALLIZE_1, CMN_CARD_SELECT_3,
CMN_CARD_SET_1, CMN_CARD_SET_2, CMN_CARD_SET_3,
CMN_CARD_TARGET_1, CMN_CARD_TARGET_2,
CMN_CRAFT_CARD_1, CMN_CRAFT_CARD_2, CMN_CRAFT_ICON_1,
CMN_CRAFT_SPLASH_1, CMN_CRAFT_SPLASH_2, CMN_CRAFT_SPLASH_3, CMN_CRAFT_SPLASH_4,
CMN_CRAFT_TRACK_1, CMN_FRAME_BTN_1, CMN_FRAME_BTN_2,
CMN_GACHA_CURSOR_1, CMN_GACHA_OPEN_2, CMN_GACHA_OPEN_3, CMN_GACHA_OPEN_4,
CMN_INPUT_DRAG_1, CMN_INPUT_TOUCH_1, CMN_INPUT_TOUCH_2,
CMN_RESULT_BACK_1, CMN_RESULT_BACK_2, CMN_RESULT_BACK_3,
CMN_RESULT_FAILED_1, CMN_RESULT_GAUGE_1, CMN_RESULT_GAUGE_2,
CMN_RESULT_LVUP_1, CMN_RESULT_MATCH_1, CMN_RESULT_ORB_1, CMN_RESULT_ORB_2,
CMN_RESULT_RANKDOWN_1, CMN_RESULT_RANKUP_1, CMN_RESULT_TIERUP_1,
CMN_START_CARD_1, CMN_START_VS_1, CMN_START_VS_ST2,
CMN_UI_TURN_1, CMN_UI_TURN_5, CMN_UI_TURN_6,
}
public enum MoveType { NONE, DIRECT, DIRECT_HAND, DIRECT_LEADER }
public enum TargetType { NONE, NONE_WAIT, SINGLE, SINGLE_ONLY_OPPONENT, AREA_ALL, AREA_OPPONENT, AREA_SELF }
public enum EngineType { NONE, SHURIKEN, SOLID }
}
public class UIManager
{
public static UIManager GetIns() => _ins ??= new UIManager();
private static UIManager _ins;
public enum ViewScene
{
None, Battle, Bingo, BuildDeckPurchasePage, CardAllList, CardSleevePurchasePage,
ClassSkinPurchasePage, Colosseum, CrossoverPortal, DeckList, Gacha, Gathering,
LeaderPopularityVote, LoginBonus, LotteryPage, Mission, MyPage,
NeutralPopularityVote, Profile, QuestSelectionPage, RankMatch, Room,
StorySelectPage, StorySelectionWorld, TwoPick,
}
public class ChangeViewSceneParam { }
}
public class GameMgr
{
public static GameMgr GetIns() => _ins ??= new GameMgr();
private static GameMgr _ins;
public bool IsAdminWatch => false;
public bool IsWatchBattle => false;
public bool IsReplayBattle => false;
public EffectMgr GetEffectMgr() => _effect ??= new EffectMgr();
private EffectMgr _effect;
}