using System.Collections.Generic; using System.Threading.Tasks; using Common.Utility.CombatEvent; using Fort23.Core; using GameLogic.Combat.CombatTool; using GameLogic.Combat.CombatType; using GameLogic.Hero; using UnityEngine; namespace Fort23.Mono { [UIBinding(prefab = "MainUIPanel")] public partial class MainUIPanel : UIPanel { private void Init() { InitBattleHero(); } protected override void AddEvent() { CombatEventManager.Instance.AddEventListener(CombatEventType.CombatExpAlter, CombatExpAlter); EventManager.Instance.AddEventListener(CustomEventType.HeroUpgrade, OnHeroUpgrade); } protected override void DelEvent() { CombatEventManager.Instance.RemoveEventListener(CombatEventType.CombatExpAlter, CombatExpAlter); EventManager.Instance.RemoveEventListener(CustomEventType.HeroUpgrade, OnHeroUpgrade); } public override void AddButtonEvent() { } 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) { HeroLvUpgradeEventData data = eventData as HeroLvUpgradeEventData; HeroInfo heroInfo = (HeroInfo)PlayerManager.Instance.GetHeroInfo(data.heroModelID); foreach (WidgetHero widgetHero in widgetHeroes) { if (widgetHero.heroInfo.modelID == heroInfo.modelID) { widgetHero.UpdateHero(heroInfo); break; } } } private List widgetHeroes = new List(); private async void InitBattleHero() { 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); } } } }