using GeometryTD.CustomEvent; using TMPro; using UnityEngine; using UnityGameFramework.Runtime; namespace GeometryTD.UI { public class CombatInfoForm : UGuiForm { [SerializeField] private TMP_Text _levelMetaText; [SerializeField] private TMP_Text _levelPhaseText; [SerializeField] private TMP_Text _coinText; [SerializeField] private TMP_Text _baseHpText; [SerializeField] private TMP_Text _enemyHpRateText; [SerializeField] private CommonButton _pauseButton; [SerializeField] private CommonButton _endButton; private CombatInfoFormContext _context; public void RefreshUI(CombatInfoFormContext context) { _context = context; if (_levelMetaText != null) { _levelMetaText.text = context?.LevelMetaText ?? string.Empty; } if (_levelPhaseText != null) { _levelPhaseText.text = context?.LevelPhaseText ?? string.Empty; } if (_coinText != null) { _coinText.text = context?.CoinText ?? "0"; } if (_baseHpText != null) { _baseHpText.text = context?.BaseHpText ?? string.Empty; } if (_enemyHpRateText != null) { _enemyHpRateText.text = context?.EnemyHpRateText ?? string.Empty; } if (_pauseButton != null) { _pauseButton.Interactive = context?.CanPause ?? false; } if (_endButton != null) { _endButton.gameObject.SetActive(context?.CanEnd ?? false); } } public void OnPauseButtonClick() { if (_context != null && !_context.CanPause) { return; } GameEntry.Event.Fire(this, CombatPauseEventArgs.Create()); } public void OnEndButtonClick() { if (_context != null && !_context.CanEnd) { return; } GameEntry.Event.Fire(this, CombatEndEventArgs.Create()); } protected override void OnOpen(object userData) { base.OnOpen(userData); if (userData is CombatInfoFormContext context) { RefreshUI(context); return; } Log.Warning("CombatInfoForm requires CombatInfoFormContext as userData."); } protected override void OnClose(bool isShutdown, object userData) { _context = null; if (_levelMetaText != null) { _levelMetaText.text = string.Empty; } if (_levelPhaseText != null) { _levelPhaseText.text = string.Empty; } if (_coinText != null) { _coinText.text = string.Empty; } if (_baseHpText != null) { _baseHpText.text = string.Empty; } if (_enemyHpRateText != null) { _enemyHpRateText.text = string.Empty; } base.OnClose(isShutdown, userData); } } }