using System; using System.Collections.Generic; namespace AxibugEmuOnline.Client { public class InGameUI : CommandExecuter { public static InGameUI Instance { get; private set; } public RomFile RomFile => m_rom; public override bool Enable => gameObject.activeInHierarchy; private RomFile m_rom; private object m_core; private object m_state; private InGameUI_SaveState m_saveStateMenu; private InGameUI_LoadState m_loadStateMenu; protected override void Awake() { Instance = this; gameObject.SetActiveEx(false); base.Awake(); } private void OnDestroy() { Instance = null; } /// /// 获取模拟器核心对象 /// /// 模拟器核心对象类型 public T GetCore() => (T)m_core; /// 保存快速快照 public void SaveQuickState(object state) { m_state = state; } /// /// 读取快速快照 /// /// /// public bool GetQuickState(out T state) { state = default(T); if (m_state is T) { state = (T)m_state; return true; } else { return false; } } public void Show(RomFile currentRom, object core) { CommandDispatcher.Instance.RegistController(this); m_saveStateMenu = new InGameUI_SaveState(this); m_loadStateMenu = new InGameUI_LoadState(this); m_rom = currentRom; m_core = core; gameObject.SetActiveEx(true); } public void Hide() { CommandDispatcher.Instance.UnRegistController(this); gameObject.SetActiveEx(false); } protected override void OnCmdOptionMenu() { OptionUI.Instance.Pop(new List { m_saveStateMenu, m_loadStateMenu }); } } }