TH1/Unity/Assets/Scripts/TH1_UI/Controller/Info/UIInfoHeroController.cs
2026-04-10 12:23:41 +08:00

98 lines
2.9 KiB
C#

// 文件位置建议: Assets/Scripts/TH1_UI/Controller/UIAnnounceMajorEventController.cs
using TH1_Core.Events;
using TH1_Core.Managers;
using TH1_UI.Controller.Base;
using TH1_UI.View.Info;
using UnityEngine;
// 确保这里引用了View脚本的命名空间
namespace TH1_UI.Controller.Info
{
public class UIInfoHeroController : ViewController<UIInfoHeroView>, IEscClosable // 泛型参数是对应的View脚本
{
/// <summary>
/// ✅ 【新增】一个空的构造函数,以满足 ViewControllerManager._CreateView 的 new() 泛型约束。
/// </summary>
public UIInfoHeroController() { }
protected override void RegisterEventCallback()
{
base.RegisterEventCallback();
if (WindowScript != null)
{
WindowScript.OnBtnCloseClick += _OnBtnCloseClick;
}
EventManager.Subscribe<UpdateUIInfoHeroCultureCards>(_OnCultureCardsUpdate);
}
protected override void UnregisterEventCallback()
{
if (WindowScript != null)
{
WindowScript.OnBtnCloseClick = null;
}
EventManager.Unsubscribe<UpdateUIInfoHeroCultureCards>(_OnCultureCardsUpdate);
base.UnregisterEventCallback();
}
private void _OnCultureCardsUpdate(UpdateUIInfoHeroCultureCards evt)
{
WindowScript?.SetContent(false);
}
public override void OnMatchStart()
{
WindowScript?.OnMatchStart();
}
protected override void OnOpen()
{
base.OnOpen();
// 检查暂存的参数是否存在且类型正确
if (_openParameter is ShowUIInfoHero evt)
{
// 使用接收到的数据设置UI内容
if (WindowScript != null)
{
WindowScript.SetContent();
}
}
else
{
// 如果没有参数或参数类型不符,可以提供默认内容或打印警告
Debug.LogWarning("[UIInfoHero] Opened without valid parameters.");
if (WindowScript != null)
{
//WindowScript.SetContent("警告", "内容未提供");
}
}
}
public override bool Close()
{
WindowScript.CloseView();
// 关闭时顺带隐藏固定中的 HeroHintPanel
EventManager.Publish(new HideHeroHintPanelEvent { Force = true });
return base.Close();
}
void _OnBtnCloseClick()
{
Close();
}
public bool CanCloseByEsc()
{
return true;
}
public void CancelMapHighlightsOrDoNothing()
{
// 英雄UI不需要取消地图高亮
}
}
}