using System.Threading.Tasks; using Common.Utility.CombatEvent; using Core.Utility; using Fort23.Core; using Fort23.UTool; using GameLogic.Hero; using UnityEngine; using UnityEngine.UI; using Utility; namespace Fort23.Mono { [UIBinding(prefab = "WidgetHero")] public partial class WidgetHero : UIComponent { private void Init() { SetMoreBtnActive(false); } public override void AddEvent() { } public override void DelEvent() { } public override void AddButtonEvent() { LogTool.Log("添加英雄点击事件"); btnHero.onClick.AddListener(OnHeroClick); btnUpgrade.onClick.AddListener(OnUpgradeClick); btnHeroPanel.onClick.AddListener(OnHeroPanelClick); } private void OnUpgradeClick() { // throw new System.NotImplementedException(); PlayerManager.Instance.heroController.UpgradeHeroLogic(heroInfo); if (PlayerManager.Instance.heroController.CanUpgrade(heroInfo) == HeroUpResultType.Success) { txtUpgrade.color = Color.white; } else { txtUpgrade.color = Color.red; } } private async void OnHeroPanelClick() { // throw new System.NotImplementedException(); await OpenHeroDetailPanel(); } public void SetMoreBtnActive(bool isActive) { btnUpgrade.gameObject.SetActive(isActive); btnHeroPanel.gameObject.SetActive(isActive); } private async void OnHeroClick() { LogTool.Log("点击英雄"); HeroClickEventData heroClickEventData = HeroClickEventData.Create(); heroClickEventData.heroId = heroInfo.modelID; EventManager.Instance.Dispatch(CustomEventType.HeroClick, heroClickEventData); // OffsetPos(); await OpenHeroDetailPanel(); } private void OffsetPos() { Vector3 curPos = transform.parent.localPosition; Vector3 newPos; if (curPos.y == 0) { newPos = new Vector3(curPos.x, curPos.y + GlobalParam.Hero_Pos_Offset, curPos.z); SetMoreBtnActive(true); txtUpgrade.text = heroInfo.powerUpConfig.levelUpExp.ToStringEx(); if (PlayerManager.Instance.heroController.CanUpgrade(heroInfo) == HeroUpResultType.Success) { txtUpgrade.color = Color.white; } else { txtUpgrade.color = Color.red; } } else { newPos = new Vector3(curPos.x, curPos.y - GlobalParam.Hero_Pos_Offset, curPos.z); SetMoreBtnActive(false); } transform.parent.localPosition = newPos; MainSceneController.Instance.mainUI?.RestWidgetHeroPos(this); } private async Task OpenHeroDetailPanel() { // HeroDetailPanel heroDetailPanel = UIManager.Instance.GetComponent(); // if (heroDetailPanel == null) // { // heroDetailPanel = await UIManager.Instance.LoadAndOpenPanel(Callback); // } HeroDetailPanel heroDetailPanel = await UIManager.Instance.LoadAndOpenPanel(Callback,UILayer.Top,isFullUI:true); heroDetailPanel.InitHeroDetailPanel(heroInfo); } private void Callback(HeroDetailPanel obj) { LogTool.Log("HeroDetailPanel 加载完成"); } public HeroInfo heroInfo; /// /// /// /// public void InitHero(HeroInfo heroInfo) { this.heroInfo = heroInfo; // lv.text = heroInfo.level.Value.ToString(); iconHero.icon_name = heroInfo.modelConfig.headicon; // iconHero.SetNativeSize(); iconZhiYe.icon_name = heroInfo.iconZhiYe; // HeroUITools.SetStarShow(stars, heroInfo.star.Value); SetDynamicData(); } public void UpdateWidgetUI(HeroInfo heroInfo) { this.heroInfo = heroInfo; SetDynamicData(); } public void SetDynamicData() { lv.text = heroInfo.level.Value.ToString(); HeroUITools.SetStarShow(stars, heroInfo.star.Value); } } }