using GeometryTD.CustomEvent; using GeometryTD.Procedure; using UnityEngine; using UnityGameFramework.Runtime; namespace GeometryTD.UI { public class TestMenuForm : UGuiForm { [SerializeField] private GameObject combatButtonObject; [SerializeField] private GameObject eventButtonObject; [SerializeField] private GameObject shopButtonObject; private TestMenuFormContext _context; public void RefreshUI(TestMenuFormContext context) { _context = context; if (_context == null) { SetButtonVisible(combatButtonObject, false); SetButtonVisible(eventButtonObject, false); SetButtonVisible(shopButtonObject, false); return; } SetButtonVisible( combatButtonObject, _context.CurrentNodeType == RunNodeType.Combat || _context.CurrentNodeType == RunNodeType.BossCombat); SetButtonVisible(eventButtonObject, _context.CurrentNodeType == RunNodeType.Event); SetButtonVisible(shopButtonObject, _context.CurrentNodeType == RunNodeType.Shop); } public void OnCombatButtonClick() { GameEntry.Event.Fire(this, TestMenuNodeClickEventArgs.Create(TestMenuNodeType.Combat)); } public void OnEventButtonClick() { GameEntry.Event.Fire(this, TestMenuNodeClickEventArgs.Create(TestMenuNodeType.Event)); } public void OnShopButtonClick() { GameEntry.Event.Fire(this, TestMenuNodeClickEventArgs.Create(TestMenuNodeType.Shop)); } protected override void OnOpen(object userData) { base.OnOpen(userData); if (userData is TestMenuFormContext context) { RefreshUI(context); return; } Log.Warning("TestMenuForm requires TestMenuFormContext as userData."); } protected override void OnClose(bool isShutdown, object userData) { _context = null; SetButtonVisible(combatButtonObject, false); SetButtonVisible(eventButtonObject, false); SetButtonVisible(shopButtonObject, false); base.OnClose(isShutdown, userData); } private static void SetButtonVisible(GameObject buttonObject, bool visible) { if (buttonObject != null) { buttonObject.SetActive(visible); } } } }