MainUIPanel.cs 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  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. }
  23. protected override void AddEvent()
  24. {
  25. CombatEventManager.Instance.AddEventListener(CombatEventType.CombatExpAlter, CombatExpAlter);
  26. EventManager.Instance.AddEventListener(CustomEventType.HeroPowerUp, OnHeroPowerUp);
  27. EventManager.Instance.AddEventListener(CustomEventType.ItemUpdate, OnItemUpdate);
  28. EventManager.Instance.AddEventListener(CustomEventType.ShowBossHp, ShowBossHp);
  29. CombatEventManager.Instance.AddEventListener(CombatEventType.HeroHpUpdate, HeroHpUpdateEventData);
  30. EventManager.Instance.AddEventListener(CustomEventType.ShowBattleExp, ShowBattleExp);
  31. EventManager.Instance.AddEventListener(CustomEventType.StartBossBattle, StartBossBattle);
  32. }
  33. private void StartBossBattle(IEventData iEventData)
  34. {
  35. UIManager.Instance.LoadAndOpenPanel<StartBossPanel>(null, UILayer.Top);
  36. }
  37. private void ShowBattleExp(IEventData iEventData)
  38. {
  39. bossHp.SetActive(false);
  40. Slider_Exp_Process.SetActive(true);
  41. bossHeroEntity = null;
  42. }
  43. private void HeroHpUpdateEventData(IEventData iEventData)
  44. {
  45. HeroHpUpdateEventData heroHpUpdateEventData = iEventData as HeroHpUpdateEventData;
  46. if (heroHpUpdateEventData.combatHeroEntity == bossHeroEntity)
  47. {
  48. UpdateBossHp();
  49. }
  50. }
  51. protected override void DelEvent()
  52. {
  53. CombatEventManager.Instance.RemoveEventListener(CombatEventType.CombatExpAlter, CombatExpAlter);
  54. EventManager.Instance.RemoveEventListener(CustomEventType.HeroPowerUp, OnHeroPowerUp);
  55. EventManager.Instance.RemoveEventListener(CustomEventType.ItemUpdate, OnItemUpdate);
  56. EventManager.Instance.RemoveEventListener(CustomEventType.ShowBossHp, ShowBossHp);
  57. CombatEventManager.Instance.RemoveEventListener(CombatEventType.HeroHpUpdate, HeroHpUpdateEventData);
  58. EventManager.Instance.RemoveEventListener(CustomEventType.ShowBattleExp, ShowBattleExp);
  59. }
  60. public override void AddButtonEvent()
  61. {
  62. }
  63. private void OnItemUpdate(IEventData e)
  64. {
  65. ItemUpdateData data = e as ItemUpdateData;
  66. if (data.ItemInfo.ID == GlobalParam.Item_Coin_ID)
  67. {
  68. txtCoin.text = BagController.Instance.GetItemInfo(GlobalParam.Item_Coin_ID).count.Value.ToStringEx();
  69. }
  70. else if (data.ItemInfo.ID == GlobalParam.Item_Diamond_ID)
  71. {
  72. txtDiamond.text = BagController.Instance.GetItemInfo(GlobalParam.Item_Diamond_ID).count.Value.ToStringEx();
  73. }
  74. else if (data.ItemInfo.ID == GlobalParam.Item_HeroExp_ID)
  75. {
  76. txtHeroExp.text = BagController.Instance.GetItemInfo(GlobalParam.Item_HeroExp_ID).count.Value.ToStringEx();
  77. }
  78. }
  79. private void ShowBossHp(IEventData eventData)
  80. {
  81. ShowBossHpEventData showBossHpEventData = eventData as ShowBossHpEventData;
  82. bossHeroEntity = showBossHpEventData.boss;
  83. bossHp.SetActive(true);
  84. Slider_Exp_Process.SetActive(false);
  85. bossName.text = bossHeroEntity.CurrCombatHeroInfo.heroName;
  86. UpdateBossHp();
  87. }
  88. protected void UpdateBossHp()
  89. {
  90. Slider_Hp_Boss.value = bossHeroEntity.CurrCombatHeroInfo.hp.Value * 1.0f /
  91. bossHeroEntity.MaxCombatHeroInfo.hp.Value;
  92. bossHpText.text = bossHeroEntity.CurrCombatHeroInfo.hp.Value + "/" +
  93. bossHeroEntity.MaxCombatHeroInfo.hp.Value;
  94. }
  95. private void CombatExpAlter(IEventData eventData)
  96. {
  97. ExpAlter();
  98. }
  99. private void ExpAlter()
  100. {
  101. if (CombatController.currActiveCombat == null || CombatController.currActiveCombat.CombatTypeBasic == null)
  102. {
  103. return;
  104. }
  105. LevelBattleCombatType levelBattleCombatType =
  106. CombatController.currActiveCombat.CombatTypeBasic as LevelBattleCombatType;
  107. float bl = (levelBattleCombatType.exp * 1.0f) / levelBattleCombatType.CurrMaxExp;
  108. exp.value = bl;
  109. TextExp.text = levelBattleCombatType.exp + "/" + levelBattleCombatType.CurrMaxExp;
  110. }
  111. private void OnHeroPowerUp(IEventData eventData)
  112. {
  113. HeroPowerUpEventData data = eventData as HeroPowerUpEventData;
  114. HeroInfo heroInfo = (HeroInfo)PlayerManager.Instance.heroController.GetHeroInfo(data.heroModelID);
  115. foreach (WidgetHero widgetHero in widgetHeroes)
  116. {
  117. if (widgetHero.heroInfo.modelID == heroInfo.modelID)
  118. {
  119. widgetHero.UpdateWidgetUI(heroInfo);
  120. break;
  121. }
  122. }
  123. }
  124. private List<WidgetHero> widgetHeroes = new List<WidgetHero>();
  125. public void RestWidgetHeroPos(WidgetHero wh)
  126. {
  127. Vector3 v;
  128. Vector3 origin;
  129. foreach (WidgetHero w in widgetHeroes)
  130. {
  131. if (wh != null && w.Equals(wh))
  132. {
  133. continue;
  134. }
  135. v = w.transform.parent.localPosition;
  136. if (v.y > 0)
  137. {
  138. origin = new Vector3(v.x, 0, v.z);
  139. w.transform.parent.localPosition = origin;
  140. w.SetMoreBtnActive(false);
  141. }
  142. }
  143. }
  144. private async void InitBattleHeroWidget()
  145. {
  146. widgetHeroes.Clear();
  147. int i = 0;
  148. foreach (KeyValuePair<int,HeroInfo> keyValuePair in PlayerManager.Instance.heroController.heroDicInLead)
  149. {
  150. RectTransform rectTransform = hero_battle[i] as RectTransform;
  151. WidgetHero itemHero = await UIManager.Instance.CreateGComponent<WidgetHero>(null,
  152. poolName: "WidgetHero", root: rectTransform);
  153. itemHero.InitHero(keyValuePair.Value);
  154. widgetHeroes.Add(itemHero);
  155. i++;
  156. }
  157. }
  158. private void InitRes()
  159. {
  160. txtDiamond.text = BagController.Instance.GetItemInfo(GlobalParam.Item_Diamond_ID).count.Value.ToStringEx();
  161. txtCoin.text = BagController.Instance.GetItemInfo(GlobalParam.Item_Coin_ID).count.Value.ToStringEx();
  162. txtHeroExp.text = BagController.Instance.GetItemInfo(GlobalParam.Item_HeroExp_ID).count.Value.ToStringEx();
  163. }
  164. }
  165. }