using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Reflection; using UnityEditor; using UnityEngine; using UnityEngine.UIElements; namespace Ironspore.Editor { // Editor-only integration checks and real Game View captures, invoked through Unity MCP. public static class LocalizationSmoke { const string Folder = "Docs/QA/Localization"; static readonly List steps = new List(); static readonly Dictionary rangeFiles = new Dictionary(); static Result result; static GameSession game; static string preference, mainState; static bool hadPreference; static int initialChassis, step; static int[] initialEquipment; static float nextAt; static VisualElement Root => game.Hud.GetComponent().rootVisualElement; static string MainPath => Path.Combine(Application.persistentDataPath, "Ironspore", "profile.json"); static byte[] mainBytes; [Serializable] public sealed class Check { public string name; public bool passed; } [Serializable] public sealed class Result { public bool passed; public int stepsCompleted; public string error; public List checks = new List(); } static void CheckThat(string name, bool condition) { result.checks.Add(new Check { name = name, passed = condition }); if (!condition) throw new InvalidOperationException(name); } static void Submit(string name) { var button = Root.Q