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.
This commit is contained in:
gamer147
2026-06-05 20:11:08 -04:00
parent 957af3d1ec
commit a00e90c74a
7 changed files with 300 additions and 0 deletions

View File

@@ -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 { } }

View File

@@ -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<T>(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 { }
}

View File

@@ -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 { } }

View File

@@ -67,6 +67,8 @@ namespace Wizard.RoomMatch
public class RoomConnectController
{
public enum BattleRule { None, Bo1 }
public enum PositionMode { OWNER, VISITOR, WATCHER }
public class InitializeParameter { }
}
}