123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236 |
- 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 bool _isSelectHeroCame;
- public HeroInfo heroInfo;
- private void Init()
- {
- SetMoreBtnActive(false);
- }
- public override void AddEvent()
- {
- EventManager.Instance.AddEventListener(CustomEventType.HeroClick, HeroClickEvent);
- EventManager.Instance.AddEventListener(CustomEventType.HeroPowerUp, OnHeroPowerUp);
- CombatEventManager.Instance.AddEventListener(CombatEventType.HeroDie, HeroDie);
- CombatEventManager.Instance.AddEventListener(CombatEventType.HeroResurrection, HeroResurrection);
- }
- public override void DelEvent()
- {
- EventManager.Instance.RemoveEventListener(CustomEventType.HeroClick, HeroClickEvent);
- EventManager.Instance.RemoveEventListener(CustomEventType.HeroPowerUp, OnHeroPowerUp);
- CombatEventManager.Instance.RemoveEventListener(CombatEventType.HeroDie, HeroDie);
- CombatEventManager.Instance.RemoveEventListener(CombatEventType.HeroResurrection, HeroResurrection);
- }
- public override void AddButtonEvent()
- {
- LogTool.Log("添加英雄点击事件");
- btnHero.onClick.AddListener(OnHeroClick);
- btnUpgrade.onClick.AddListener(OnUpgradeClick);
- btnHeroPanel.onClick.AddListener(OnHeroPanelClick);
- Button_came.onClick.AddListener(OnHeroClickCame);
- }
- private void HeroResurrection(IEventData eventData)
- {
- HeroResurrectionEventData heroResurrectionEventData = eventData as HeroResurrectionEventData;
- if (this.heroInfo.modelID == heroResurrectionEventData.combatHeroEntity.CurrCombatHeroInfo.modelID)
- {
- UIManager.Instance.SetGray(own, false, true);
- }
- }
- private void HeroDie(IEventData eventData)
- {
- HeroDieEventData data = eventData as HeroDieEventData;
- if (this.heroInfo.modelID == data.combatHeroEntity.CurrCombatHeroInfo.modelID)
- {
- UIManager.Instance.SetGray(own, true, true);
- }
- }
- private void OnHeroPowerUp(IEventData eventData)
- {
- HeroPowerUpEventData data = eventData as HeroPowerUpEventData;
- if (data.upType == HeroUpType.BasicEquip)
- {
- return;
- }
- HeroInfo heroInfo = (HeroInfo)PlayerManager.Instance.heroController.GetHeroInfo(data.heroModelID);
- if (this.heroInfo.modelID == heroInfo.modelID)
- {
- UpdateWidgetUI(heroInfo);
- }
- }
- private void HeroClickEvent(IEventData iEventData)
- {
- HeroClickEventData heroClickEventData = iEventData as HeroClickEventData;
- if (heroClickEventData.heroId == heroInfo.modelID)
- {
- if (_isSelectHeroCame)
- {
- Button_came_icon.color = Color.white;
- }
- else
- {
- Button_came_icon.color = Color.green;
- }
- _isSelectHeroCame = !_isSelectHeroCame;
- }
- else
- {
- if (_isSelectHeroCame)
- {
- Button_came_icon.color = Color.white;
- }
- _isSelectHeroCame = false;
- }
- }
- 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 OnHeroClickCame()
- {
- HeroClickEventData heroClickEventData = HeroClickEventData.Create();
- heroClickEventData.heroId = heroInfo.modelID;
- EventManager.Instance.Dispatch(CustomEventType.HeroClick, heroClickEventData);
- }
- private async void OnHeroClick()
- {
- // 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<HeroDetailPanel>();
- // if (heroDetailPanel == null)
- // {
- // heroDetailPanel = await UIManager.Instance.LoadAndOpenPanel<HeroDetailPanel>(Callback);
- // }
- UIPanelName current = UIPanelName.MainPanel;
- HeroDetailPanel heroDetailPanel =
- await UIManager.Instance.LoadAndOpenPanel<HeroDetailPanel>(Callback, isFullUI: true);
- heroDetailPanel.InitHeroDetailPanel(this, current);
- }
- private void Callback(HeroDetailPanel obj)
- {
- LogTool.Log("HeroDetailPanel 加载完成");
- }
- /// <summary>
- ///
- /// </summary>
- /// <param name="heroInfo"></param>
- public void InitHero(HeroInfo heroInfo)
- {
- this.heroInfo = heroInfo;
- SetBasicData();
- SetDynamicData();
- }
- public void InitHeroForBag(HeroInfo heroInfo)
- {
- this.heroInfo = heroInfo;
- SetBasicData();
- SetDynamicData();
- // Button_came_icon.gameObject.SetActive(false);
- }
- private void SetBasicData()
- {
- iconHero.icon_name = heroInfo.modelConfig.headicon;
- iconZhiYe.icon_name = HeroUITools.GetZyIcon(heroInfo.modelConfig.profession);
- //heroInfo.iconZhiYe;
- }
- public void UpdateWidgetUI(HeroInfo heroInfo)
- {
- this.heroInfo = heroInfo;
- SetDynamicData();
- }
- public void SetDynamicData()
- {
- lv.text = heroInfo.level.Value.ToString();
- HeroUITools.SetStarShow(stars, heroInfo.star.Value);
- }
- }
- }
|