geometry-tower-defense-base/src-ref/UI/Menu/View/TestMenuForm.cs

81 lines
2.5 KiB
C#

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);
}
}
}
}