MainUIPanel.cs 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. using System.Collections.Generic;
  2. using System.Threading.Tasks;
  3. using Common.Utility.CombatEvent;
  4. using Core.Utility;
  5. using Fort23.Core;
  6. using GameLogic.Bag;
  7. using GameLogic.Combat.CombatTool;
  8. using GameLogic.Combat.CombatType;
  9. using GameLogic.Hero;
  10. using UnityEngine;
  11. using Utility;
  12. namespace Fort23.Mono
  13. {
  14. [UIBinding(prefab = "MainUIPanel")]
  15. public partial class MainUIPanel : UIPanel
  16. {
  17. private CombatHeroEntity bossHeroEntity;
  18. private void Init()
  19. {
  20. InitRes();
  21. InitBattleHeroWidget();
  22. InitBattleHero();
  23. }
  24. protected override void AddEvent()
  25. {
  26. CombatEventManager.Instance.AddEventListener(CombatEventType.CombatExpAlter, CombatExpAlter);
  27. EventManager.Instance.AddEventListener(CustomEventType.HeroPowerUp, OnHeroUpgrade);
  28. EventManager.Instance.AddEventListener(CustomEventType.ItemUpdate, OnItemUpdate);
  29. EventManager.Instance.AddEventListener(CustomEventType.ShowBossHp, ShowBossHp);
  30. CombatEventManager.Instance.AddEventListener(CombatEventType.HeroHpUpdate, HeroHpUpdateEventData);
  31. EventManager.Instance.AddEventListener(CustomEventType.ShowBattleExp, ShowBattleExp);
  32. EventManager.Instance.AddEventListener(CustomEventType.StartBossBattle, StartBossBattle);
  33. }
  34. private void StartBossBattle(IEventData iEventData)
  35. {
  36. UIManager.Instance.LoadAndOpenPanel<StartBossPanel>(null, UILayer.Top);
  37. }
  38. private void ShowBattleExp(IEventData iEventData)
  39. {
  40. bossHp.SetActive(false);
  41. Slider_Exp_Process.SetActive(true);
  42. bossHeroEntity = null;
  43. }
  44. private void HeroHpUpdateEventData(IEventData iEventData)
  45. {
  46. HeroHpUpdateEventData heroHpUpdateEventData = iEventData as HeroHpUpdateEventData;
  47. if (heroHpUpdateEventData.combatHeroEntity == bossHeroEntity)
  48. {
  49. UpdateBossHp();
  50. }
  51. }
  52. protected override void DelEvent()
  53. {
  54. CombatEventManager.Instance.RemoveEventListener(CombatEventType.CombatExpAlter, CombatExpAlter);
  55. EventManager.Instance.RemoveEventListener(CustomEventType.HeroPowerUp, OnHeroUpgrade);
  56. EventManager.Instance.RemoveEventListener(CustomEventType.ItemUpdate, OnItemUpdate);
  57. EventManager.Instance.RemoveEventListener(CustomEventType.ShowBossHp, ShowBossHp);
  58. CombatEventManager.Instance.RemoveEventListener(CombatEventType.HeroHpUpdate, HeroHpUpdateEventData);
  59. EventManager.Instance.RemoveEventListener(CustomEventType.ShowBattleExp, ShowBattleExp);
  60. }
  61. public override void AddButtonEvent()
  62. {
  63. }
  64. private void OnItemUpdate(IEventData e)
  65. {
  66. ItemUpdateData data = e as ItemUpdateData;
  67. if (data.ItemInfo.ID == GlobalParam.Item_Coin_ID)
  68. {
  69. txtCoin.text = BagController.Instance.GetItemInfo(GlobalParam.Item_Coin_ID).count.Value.ToStringEx();
  70. }
  71. else if (data.ItemInfo.ID == GlobalParam.Item_Diamond_ID)
  72. {
  73. txtDiamond.text = BagController.Instance.GetItemInfo(GlobalParam.Item_Diamond_ID).count.Value.ToStringEx();
  74. }
  75. else if (data.ItemInfo.ID == GlobalParam.Item_HeroExp_ID)
  76. {
  77. txtHeroExp.text = BagController.Instance.GetItemInfo(GlobalParam.Item_HeroExp_ID).count.Value.ToStringEx();
  78. }
  79. }
  80. private void ShowBossHp(IEventData eventData)
  81. {
  82. ShowBossHpEventData showBossHpEventData = eventData as ShowBossHpEventData;
  83. bossHeroEntity = showBossHpEventData.boss;
  84. bossHp.SetActive(true);
  85. Slider_Exp_Process.SetActive(false);
  86. bossName.text = bossHeroEntity.CurrCombatHeroInfo.heroName;
  87. UpdateBossHp();
  88. }
  89. protected void UpdateBossHp()
  90. {
  91. Slider_Hp_Boss.value = bossHeroEntity.CurrCombatHeroInfo.hp.Value * 1.0f /
  92. bossHeroEntity.MaxCombatHeroInfo.hp.Value;
  93. bossHpText.text = bossHeroEntity.CurrCombatHeroInfo.hp.Value + "/" +
  94. bossHeroEntity.MaxCombatHeroInfo.hp.Value;
  95. }
  96. private void CombatExpAlter(IEventData eventData)
  97. {
  98. ExpAlter();
  99. }
  100. private void ExpAlter()
  101. {
  102. if (CombatController.currActiveCombat == null || CombatController.currActiveCombat.CombatTypeBasic == null)
  103. {
  104. return;
  105. }
  106. LevelBattleCombatType levelBattleCombatType =
  107. CombatController.currActiveCombat.CombatTypeBasic as LevelBattleCombatType;
  108. float bl = (levelBattleCombatType.exp * 1.0f) / levelBattleCombatType.CurrMaxExp;
  109. exp.value = bl;
  110. TextExp.text = levelBattleCombatType.exp + "/" + levelBattleCombatType.CurrMaxExp;
  111. }
  112. private void OnHeroUpgrade(IEventData eventData)
  113. {
  114. HeroPowerUpEventData data = eventData as HeroPowerUpEventData;
  115. HeroInfo heroInfo = (HeroInfo)PlayerManager.Instance.GetHeroInfo(data.heroModelID);
  116. foreach (WidgetHero widgetHero in widgetHeroes)
  117. {
  118. if (widgetHero.heroInfo.modelID == heroInfo.modelID)
  119. {
  120. widgetHero.UpdateWidgetUI(heroInfo);
  121. break;
  122. }
  123. }
  124. }
  125. private List<WidgetHero> widgetHeroes = new List<WidgetHero>();
  126. private async void InitBattleHeroWidget()
  127. private List<WidgetHero> widgetHeroes = new List<WidgetHero>();
  128. private async void InitBattleHero()
  129. {
  130. widgetHeroes.Clear();
  131. for (int i = 0; i < PlayerManager.Instance.heroListInLead.Count; i++)
  132. {
  133. RectTransform rectTransform = hero_battle[i] as RectTransform;
  134. WidgetHero itemHero = await UIManager.Instance.CreateGComponent<WidgetHero>(null,
  135. poolName: "WidgetHero", root: rectTransform);
  136. itemHero.InitHero(PlayerManager.Instance.heroListInLead[i]);
  137. widgetHeroes.Add(itemHero);
  138. }
  139. }
  140. private void InitRes()
  141. {
  142. txtDiamond.text = BagController.Instance.GetItemInfo(GlobalParam.Item_Diamond_ID).count.Value.ToStringEx();
  143. txtCoin.text = BagController.Instance.GetItemInfo(GlobalParam.Item_Coin_ID).count.Value.ToStringEx();
  144. txtHeroExp.text = BagController.Instance.GetItemInfo(GlobalParam.Item_HeroExp_ID).count.Value.ToStringEx();
  145. }
  146. }
  147. }