From a00e90c74ad75d34db39aef343d5eccef7dd9c87 Mon Sep 17 00:00:00 2001 From: gamer147 Date: Fri, 5 Jun 2026 20:11:08 -0400 Subject: [PATCH] feat(battle-engine): clear header frontier (Item/ErrorDialog/SDK shims + infra copies) Resolves the 268-error header frontier: settings Item base, ErrorDialog.Data, RoomConnectController nested types, Unity asset/light/collider types, CriWare/ CodeStage/Spine SDK surface, and copies INetworkLogger + SingletonMonoBehaviour verbatim. Per F3 this unmasks the type bodies (~26.5k member-level errors now visible) -- the real M1 bulk, attacked in following waves. --- SVSim.BattleEngine/COPIED.manifest.tsv | 2 + SVSim.BattleEngine/Engine/INetworkLogger.cs | 13 ++ .../Engine/SingletonMonoBehaviour.cs | 43 ++++++ SVSim.BattleEngine/Shim/External/SdkStubs.cs | 50 +++++++ .../Shim/UnityEngine/UnityShim2.cs | 68 ++++++++++ .../Shim/View/SettingsUiStubs.cs | 122 ++++++++++++++++++ .../Shim/View/ViewUiTouchStubs.cs | 2 + 7 files changed, 300 insertions(+) create mode 100644 SVSim.BattleEngine/Engine/INetworkLogger.cs create mode 100644 SVSim.BattleEngine/Engine/SingletonMonoBehaviour.cs create mode 100644 SVSim.BattleEngine/Shim/External/SdkStubs.cs create mode 100644 SVSim.BattleEngine/Shim/UnityEngine/UnityShim2.cs create mode 100644 SVSim.BattleEngine/Shim/View/SettingsUiStubs.cs diff --git a/SVSim.BattleEngine/COPIED.manifest.tsv b/SVSim.BattleEngine/COPIED.manifest.tsv index 046f7e1..1850f17 100644 --- a/SVSim.BattleEngine/COPIED.manifest.tsv +++ b/SVSim.BattleEngine/COPIED.manifest.tsv @@ -242,6 +242,7 @@ ICardSuperSkyboundArtCountModifier.cs ICardSuperSkyboundArtCountModifier.cs 7e68 ICardUnionBurstCountModifier.cs ICardUnionBurstCountModifier.cs ba967c6dc5d5a202fc6ded3b788b4fbd14d2a840fb2ce0858c6dc9f332a4fbfc 0 IDInput.cs IDInput.cs 6366e6c23d9c954bb08d8052040e04953528b02084c380a9f6004581758d8934 0 IDetailPanelControl.cs IDetailPanelControl.cs f705759bfd1ee67cb2fd89727c9c5bc3fa339e1a45ecdba0f1deffa5d7464e71 0 +INetworkLogger.cs INetworkLogger.cs b7c350604afeec7b31078c254297785062ecdff88e65cb530d870d6b791f4a11 0 INextSceneSelector.cs INextSceneSelector.cs 52d188563368337f2653d41f54ed6ba915911929134b6bef628f6cd72c820c95 0 IPpModifier.cs IPpModifier.cs 95a83890b06528d37c73dea24b75a3dcd23dfd532508bcb90463e34a5811d19e 0 IResultAnimationHandler.cs IResultAnimationHandler.cs 0106c5eb9c8d912d47c5cc46336bffce1284cf5935088850fc0dc6c7ccfe3351 0 @@ -625,6 +626,7 @@ SimpleCardDetail.cs SimpleCardDetail.cs 9ab323d687845ca53a27651b08d9747140a1f85e SingleBattleMgr.cs SingleBattleMgr.cs 777e5bbb7292df308fa612fed9883b4b10c24451a945e56fd741bf1fe2d9b4ad 0 SingleExecutionInfoCreator.cs SingleExecutionInfoCreator.cs 1a64285907bf4fb29138cfcabeae99834a6730d2857de0cd82efb3e0ddf52f52 0 SingleSkill_attach_skill.cs SingleSkill_attach_skill.cs 65e7581c82c4bf84cf738fbd1a605670b87f9623ad7ff561a3fc1c6713c80cb9 0 +SingletonMonoBehaviour.cs SingletonMonoBehaviour.cs a69a9a5d57dbf83f6fa5c875a2788dc78b3367de0f6c81cb903f887b9a67c226 0 SkillAbilityAccelerateFilter.cs SkillAbilityAccelerateFilter.cs b13d84c14d8d8a6d3d58258b9f6c8525bf17063a7b0bdf48614c4ede1343ff91 0 SkillAbilityBurialRiteFilter.cs SkillAbilityBurialRiteFilter.cs 003b61178157d70cc51128d79e163dde19631155c2c89f6656b98f28b63f2851 0 SkillAbilityCantAttackAllFilter.cs SkillAbilityCantAttackAllFilter.cs 6998cc6f15d12ba49b5aea79d4f2e80620c998f23d82685ac7bda2164ca07ed6 0 diff --git a/SVSim.BattleEngine/Engine/INetworkLogger.cs b/SVSim.BattleEngine/Engine/INetworkLogger.cs new file mode 100644 index 0000000..706a64b --- /dev/null +++ b/SVSim.BattleEngine/Engine/INetworkLogger.cs @@ -0,0 +1,13 @@ +using System.Collections; +using System.Collections.Generic; + +public interface INetworkLogger : IEnumerable, IEnumerable +{ + void LogInfo(string text); + + void LogWarning(string text); + + void LogError(string text); + + void ClearLog(); +} diff --git a/SVSim.BattleEngine/Engine/SingletonMonoBehaviour.cs b/SVSim.BattleEngine/Engine/SingletonMonoBehaviour.cs new file mode 100644 index 0000000..0d079ae --- /dev/null +++ b/SVSim.BattleEngine/Engine/SingletonMonoBehaviour.cs @@ -0,0 +1,43 @@ +using UnityEngine; + +public class SingletonMonoBehaviour : MonoBehaviour where T : MonoBehaviour +{ + private static T _instance; + + protected bool _isRedy; + + public static T instance + { + get + { + if (_instance == null) + { + _instance = (T)Object.FindObjectOfType(typeof(T)); + if (_instance == null) + { + Debug.LogError(typeof(T)?.ToString() + "is nothing"); + } + } + return _instance; + } + } + + public bool isRedy => _isRedy; + + public static bool IsInstanceEmpty() + { + return _instance == null; + } + + private void Awake() + { + if (_instance == null) + { + _instance = (T)Object.FindObjectOfType(typeof(T)); + if (_instance == null) + { + Debug.LogError(typeof(T)?.ToString() + "is nothing"); + } + } + } +} diff --git a/SVSim.BattleEngine/Shim/External/SdkStubs.cs b/SVSim.BattleEngine/Shim/External/SdkStubs.cs new file mode 100644 index 0000000..7e05f8b --- /dev/null +++ b/SVSim.BattleEngine/Shim/External/SdkStubs.cs @@ -0,0 +1,50 @@ +// AUTHORED SHIM (not copied). Third-party SDK surface swept into the copy closure by +// non-battle files (audio/movie/anti-cheat/analytics/spine). None is on the battle- +// resolution path. Namespaces must merely exist (anchors); the few types referenced +// by member get a minimal no-op surface. Members grow only as the compile loop demands. + +// ---- CriWare audio + movie ---- +namespace CriWare +{ + public class CriAtomExAcb { } + public class CriAtomExPlayback { } + internal class _ShimAnchor { } +} +namespace CriWare.CriMana +{ + public class CriManaMovieMaterial + { + public enum MaxFrameDrop { Disable, One, Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten } + } + internal class _ShimAnchor { } +} + +// ---- CodeStage anti-cheat obscured prefs (static k/v facade; no persistence headless) ---- +namespace CodeStage.AntiCheat.ObscuredTypes +{ + public static class ObscuredPrefs + { + public static bool HasKey(string key) => false; + public static void DeleteKey(string key) { } + public static void DeleteAll() { } + public static void Save() { } + public static int GetInt(string key, int defaultValue = 0) => defaultValue; + public static float GetFloat(string key, float defaultValue = 0f) => defaultValue; + public static string GetString(string key, string defaultValue = "") => defaultValue; + public static void SetInt(string key, int value) { } + public static void SetFloat(string key, float value) { } + public static void SetString(string key, string value) { } + } +} + +// ---- Spine animation ---- +namespace Spine { public class Bone { } internal class _ShimAnchor { } } +namespace Spine.Unity { public class SkeletonMecanim { } internal class _ShimAnchor { } } + +// ---- misc third-party namespaces (anchors) ---- +namespace RedShellUnity { internal class _ShimAnchor { } } +namespace PlatformSupport.Collections.ObjectModel { internal class _ShimAnchor { } } +namespace Convention { internal class _ShimAnchor { } } +namespace com.adjust.sdk { internal class _ShimAnchor { } } +namespace BestHTTP.Decompression { internal class _ShimAnchor { } } +namespace BestHTTP.SocketIO.Transports { internal class _ShimAnchor { } } diff --git a/SVSim.BattleEngine/Shim/UnityEngine/UnityShim2.cs b/SVSim.BattleEngine/Shim/UnityEngine/UnityShim2.cs new file mode 100644 index 0000000..64048d9 --- /dev/null +++ b/SVSim.BattleEngine/Shim/UnityEngine/UnityShim2.cs @@ -0,0 +1,68 @@ +// AUTHORED SHIM (not copied). Second UnityEngine batch surfaced by the M1 compile +// loop (wave after the 2,570-file copy closure). Same rules as UnityShim.cs: no-op +// presentation/IO surface; add only what the compiler demands. Asset/light/collider +// types are referenced only as field/parameter types or via suppressed-IO calls. +using System; + +namespace UnityEngine +{ + public class TextAsset : Object + { + public string text => ""; + public byte[] bytes => new byte[0]; + } + + public class AsyncOperation + { + public bool isDone => true; + public float progress => 1f; + public int priority { get; set; } + public bool allowSceneActivation { get; set; } + } + + public class AssetBundle : Object + { + public static AssetBundle LoadFromFile(string path) => null; + public static AssetBundleCreateRequest LoadFromFileAsync(string path) => null; + public string[] GetAllAssetNames() => new string[0]; + public T LoadAsset(string name) where T : Object => null; + public Object LoadAsset(string name) => null; + public Object[] LoadAllAssets() => new Object[0]; + public AssetBundleRequest LoadAllAssetsAsync() => null; + public void Unload(bool unloadAllLoadedObjects) { } + } + + public class AssetBundleCreateRequest : AsyncOperation { public AssetBundle assetBundle => null; } + public class AssetBundleRequest : AsyncOperation { public Object asset => null; public Object[] allAssets => new Object[0]; } + + public class Collider2D : Component { public bool enabled { get; set; } } + public class BoxCollider2D : Collider2D { } + public class Light : Behaviour { } + public class AudioListener : Behaviour { } + + public enum RenderTextureFormat { ARGB32, Depth, ARGBHalf, ARGB64, Default } + + public enum RuntimeInitializeLoadType + { + AfterSceneLoad, BeforeSceneLoad, AfterAssembliesLoaded, + BeforeSplashScreen, SubsystemRegistration + } + + public sealed class RuntimeInitializeOnLoadMethodAttribute : Attribute + { + public RuntimeInitializeOnLoadMethodAttribute() { } + public RuntimeInitializeOnLoadMethodAttribute(RuntimeInitializeLoadType loadType) { } + } +} + +// Sub-namespace anchors (referenced via `using`; types unmask in later waves if used). +namespace UnityEngine.Experimental { internal class _ShimAnchor { } } +namespace UnityEngine.Experimental.Rendering { internal class _ShimAnchor { } } +namespace UnityEngine.SceneManagement { internal class _ShimAnchor { } } +namespace UnityEngine.SocialPlatforms +{ + // NOTE: no IAchievementCallback here -- the engine's AchievementImpl uses + // Cute.IAchievementCallback; adding one here makes the unqualified name ambiguous. + public interface IAchievement { } + public interface IAchievementDescription { } +} diff --git a/SVSim.BattleEngine/Shim/View/SettingsUiStubs.cs b/SVSim.BattleEngine/Shim/View/SettingsUiStubs.cs new file mode 100644 index 0000000..5b28f7e --- /dev/null +++ b/SVSim.BattleEngine/Shim/View/SettingsUiStubs.cs @@ -0,0 +1,122 @@ +// AUTHORED SHIM (not copied). Non-battle game types (settings widgets, error-dialog +// data, login-bonus, deck-builder, story chapter-selection, room-match, socket.io) +// swept into the copy closure but never driven headless. Stubbed in their ORIGINAL +// namespaces so the copied engine resolves their type references. Enums are replicated +// VERBATIM from decomp (integer values can be cast); classes are empty until the loop +// demands a member. +using UnityEngine; + +namespace Wizard.Dialog.Setting +{ + // Real base of ItemButton/ItemToggle/... (copied). Abstract methods the copied + // subclasses override -- without this base they fall back to the unrelated + // Wizard.Item data class and CS0115 ("no method to override"). + public abstract class Item : MonoBehaviour + { + public abstract void AddChangeCallback(EventDelegate.Callback callback); + public abstract void SetActive_SeparatorLine(bool isActive); + } +} + +namespace Wizard.ErrorDialog +{ + // Real Wizard.ErrorDialog.Data; without it Dialog.cs's unqualified `Data` falls + // back to the static Wizard.Data god-object (CS0718/0722/0723 + missing ButtonType). + public class Data + { + public enum ContactDisplayType { _NONE_, 表示, MAX } + public enum ButtonType { _NONE_, OK, リトライ, タイトルへ戻る, ホームへ戻る, アプリ終了, バージョンアップ, 推奨端末一覧, MAX } + + public string TitleId { get; private set; } + public string BodyId { get; private set; } + public bool IsDisplayContact { get; private set; } + public ButtonType MainButton { get; private set; } + public ButtonType SubButton { get; private set; } + public int PanelDepth { get; private set; } + + public Data(string id, string titleId, string bodyId, string contactDisplay, + string mainButton, string subButton, string panelDepth) { } + } +} + +namespace Wizard.Battle.UI +{ + public enum CantAttackType { Null, All, Class, NotHasGuard, Unit, Max } +} + +namespace Wizard.Battle.View +{ + public abstract class ClassBattleCardViewBase { } + public class NullBattleCardView { } +} + +namespace Wizard.Battle.View.Vfx +{ + // Base of the copied PuzzleBattleManager.PuzzleOpeningVfx (ctor + abstract override). + public abstract class OpeningVfx : SequentialVfxPlayer + { + protected OpeningVfx(BackGroundBase backGround) { } + public abstract void RegisterOpeningVfx(ClassBattleCardBase playerClass, ClassBattleCardBase enemyClass); + } +} + +namespace AnimationOrTween +{ + public enum DisableCondition { DisableAfterReverse = -1, DoNotDisable, DisableAfterForward } + public enum EnableCondition { DoNothing, EnableThenPlay, IgnoreDisabledState } +} + +namespace Wizard.UI.LoginBonus +{ + public class ContinuousData { } + public class NormalData { } + public class SpecialData { } + public class FreeCardPackBoxData { } +} + +namespace DeckBuilder +{ + public class GenerateDeckCode { } + public class GetDeckDataFromCode { } +} + +namespace Wizard.Story.ChapterSelection.SelectionProcessing.BattleResult +{ + public interface IProcessing { } + public class Parameter { } +} + +namespace Wizard.RoomMatch +{ + public class PlayerControllerForWatching { } + public class RoomRuleSetting { } +} + +namespace Cute +{ + public class SceneManager { } +} + +namespace Wizard.Story +{ + public enum StoryApiType { None, MainStory, LimitedStory, EventStory } + public class SelectedStoryInfo { } + public sealed class StoryWorldDataManager { } +} + +namespace BestHTTP.SocketIO +{ + public sealed class Packet { } + public sealed class Socket { } + public sealed class SocketManager + { + // Connection state enum the network agent polls (Initial/Open referenced). + public enum States { Initial, Opening, Open, Paused, Reconnecting, Closed } + } +} + +// ---- namespace anchors (referenced via `using`/qualified path; no type used yet) ---- +namespace Wizard.Scripts.Network.Task { internal class _ShimAnchor { } } +namespace Wizard.Scripts.Network.Task.Arena { internal class _ShimAnchor { } } +namespace Wizard.Scripts.Network.Task.Arena.TwoPick { internal class _ShimAnchor { } } +namespace BestHTTP.Decompression.Zlib { internal class _ShimAnchor { } } diff --git a/SVSim.BattleEngine/Shim/View/ViewUiTouchStubs.cs b/SVSim.BattleEngine/Shim/View/ViewUiTouchStubs.cs index 93d5138..09fd9c0 100644 --- a/SVSim.BattleEngine/Shim/View/ViewUiTouchStubs.cs +++ b/SVSim.BattleEngine/Shim/View/ViewUiTouchStubs.cs @@ -67,6 +67,8 @@ namespace Wizard.RoomMatch public class RoomConnectController { public enum BattleRule { None, Bo1 } + public enum PositionMode { OWNER, VISITOR, WATCHER } + public class InitializeParameter { } } }