using System; using System.Collections.Generic; using KernelPanic.Core; using KernelPanic.Data; using KernelPanic.Meta; using UnityEngine; using UnityEngine.TextCore.Text; using UnityEngine.UIElements; #if UNITY_EDITOR using UnityEditor; #endif namespace KernelPanic.UI { /// /// Binds the main menu terminal UI document and routes command activation between panels. /// [RequireComponent(typeof(UIDocument))] public sealed class MainMenuController : MonoBehaviour { private const string HiddenClassName = "hidden"; private const string SelectedClassName = "selected"; private const string CursorOnClassName = "cursor-on"; private const float BootIntroSeconds = 1.5f; private static bool bootIntroPlayed; [SerializeField] private FontAsset monospaceFont; // TODO: Assign a real monospace FontAsset when typography assets exist. [SerializeField] private string motdBody = "unstable userspace detected; keep a rollback shell open."; [SerializeField] private DistroDatabase distroDatabase; [SerializeField] private CardDatabase cardDatabase; [SerializeField] private FeaturedUnitPanel featuredUnitPanel = new(); private readonly List commandEntries = new(); private readonly List starterCards = new(); private readonly List