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.
This commit is contained in:
61
SVSim.BattleEngine/Shim/GodObjects/GodObjects.cs
Normal file
61
SVSim.BattleEngine/Shim/GodObjects/GodObjects.cs
Normal file
@@ -0,0 +1,61 @@
|
||||
// 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;
|
||||
}
|
||||
Reference in New Issue
Block a user