using System.Collections.Generic; using System.Threading.Tasks; using Common.Utility.CombatEvent; using Core.Utility; using Fort23.Core; using GameLogic.Bag; using GameLogic.Combat.CombatTool; using GameLogic.Combat.CombatType; using GameLogic.Hero; using UnityEngine; using Utility; namespace Fort23.Mono { [UIBinding(prefab = "MainUIPanel")] public partial class MainUIPanel : UIPanel { private void Init() { InitRes(); InitBattleHeroWidget(); } protected override void AddEvent() { CombatEventManager.Instance.AddEventListener(CombatEventType.CombatExpAlter, CombatExpAlter); EventManager.Instance.AddEventListener(CustomEventType.HeroPowerUp, OnHeroUpgrade); EventManager.Instance.AddEventListener(CustomEventType.ItemUpdate, OnItemUpdate); } protected override void DelEvent() { CombatEventManager.Instance.RemoveEventListener(CombatEventType.CombatExpAlter, CombatExpAlter); EventManager.Instance.RemoveEventListener(CustomEventType.HeroPowerUp, OnHeroUpgrade); EventManager.Instance.RemoveEventListener(CustomEventType.ItemUpdate, OnItemUpdate); } public override void AddButtonEvent() { } private void OnItemUpdate(IEventData e) { ItemUpdateData data = e as ItemUpdateData; if (data.ItemInfo.ID == GlobalParam.Item_Coin_ID) { txtCoin.text = BagController.Instance.GetItemInfo(GlobalParam.Item_Coin_ID).count.Value.ToStringEx(); } else if (data.ItemInfo.ID == GlobalParam.Item_Diamond_ID) { txtDiamond.text = BagController.Instance.GetItemInfo(GlobalParam.Item_Diamond_ID).count.Value.ToStringEx(); } else if (data.ItemInfo.ID == GlobalParam.Item_HeroExp_ID) { txtHeroExp.text = BagController.Instance.GetItemInfo(GlobalParam.Item_HeroExp_ID).count.Value.ToStringEx(); } } private void CombatExpAlter(IEventData eventData) { ExpAlter(); } private void ExpAlter() { if (CombatController.currActiveCombat == null || CombatController.currActiveCombat.CombatTypeBasic == null) { return; } LevelBattleCombatType levelBattleCombatType = CombatController.currActiveCombat.CombatTypeBasic as LevelBattleCombatType; float bl = (levelBattleCombatType.exp * 1.0f) / levelBattleCombatType.CurrMaxExp; exp.value = bl; TextExp.text = levelBattleCombatType.exp + "/" + levelBattleCombatType.CurrMaxExp; } private void OnHeroUpgrade(IEventData eventData) { HeroPowerUpEventData data = eventData as HeroPowerUpEventData; HeroInfo heroInfo = (HeroInfo)PlayerManager.Instance.GetHeroInfo(data.heroModelID); foreach (WidgetHero widgetHero in widgetHeroes) { if (widgetHero.heroInfo.modelID == heroInfo.modelID) { widgetHero.UpdateWidgetUI(heroInfo); break; } } } private List widgetHeroes = new List(); private async void InitBattleHeroWidget() { widgetHeroes.Clear(); for (int i = 0; i < PlayerManager.Instance.heroListInLead.Count; i++) { RectTransform rectTransform = hero_battle[i] as RectTransform; WidgetHero itemHero = await UIManager.Instance.CreateGComponent(null, poolName: "WidgetHero", root: rectTransform); itemHero.InitHero(PlayerManager.Instance.heroListInLead[i]); widgetHeroes.Add(itemHero); } } private void InitRes() { txtDiamond.text = BagController.Instance.GetItemInfo(GlobalParam.Item_Diamond_ID).count.Value.ToStringEx(); txtCoin.text = BagController.Instance.GetItemInfo(GlobalParam.Item_Coin_ID).count.Value.ToStringEx(); txtHeroExp.text = BagController.Instance.GetItemInfo(GlobalParam.Item_HeroExp_ID).count.Value.ToStringEx(); } } }