77 lines
2.0 KiB
C#
77 lines
2.0 KiB
C#
using GeometryTD.CustomEvent;
|
|
using TMPro;
|
|
using UnityEngine;
|
|
using UnityGameFramework.Runtime;
|
|
|
|
namespace GeometryTD.UI
|
|
{
|
|
public class MenuForm : UGuiForm
|
|
{
|
|
[SerializeField] private TMP_Text _titleText;
|
|
[SerializeField] private TMP_Text _startButtonText;
|
|
[SerializeField] private TMP_Text _settingsButtonText;
|
|
[SerializeField] private TMP_Text _exitButtonText;
|
|
|
|
private MenuFormContext _context;
|
|
|
|
public void RefreshUI(MenuFormContext context)
|
|
{
|
|
_context = context;
|
|
if (_context == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
SetText(_titleText, _context.TitleText);
|
|
SetText(_startButtonText, _context.StartButtonText);
|
|
SetText(_settingsButtonText, _context.SettingsButtonText);
|
|
SetText(_exitButtonText, _context.ExitButtonText);
|
|
}
|
|
|
|
public void OnStartButtonClick()
|
|
{
|
|
GameEntry.Event.Fire(this, MenuStartRequestedEventArgs.Create());
|
|
}
|
|
|
|
public void OnSettingsButtonClick()
|
|
{
|
|
GameEntry.Event.Fire(this, MenuSettingsRequestedEventArgs.Create());
|
|
}
|
|
|
|
public void OnExitButtonClick()
|
|
{
|
|
GameEntry.Event.Fire(this, MenuExitRequestedEventArgs.Create());
|
|
}
|
|
|
|
protected override void OnOpen(object userData)
|
|
{
|
|
base.OnOpen(userData);
|
|
|
|
if (userData is MenuFormContext context)
|
|
{
|
|
RefreshUI(context);
|
|
return;
|
|
}
|
|
|
|
Log.Warning("MenuForm requires MenuFormContext as userData.");
|
|
}
|
|
|
|
protected override void OnClose(bool isShutdown, object userData)
|
|
{
|
|
_context = null;
|
|
|
|
base.OnClose(isShutdown, userData);
|
|
}
|
|
|
|
private static void SetText(TMP_Text textComponent, string value)
|
|
{
|
|
if (textComponent == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
textComponent.text = value ?? string.Empty;
|
|
}
|
|
}
|
|
}
|