MainUIPanel.cs 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. using System.Collections.Generic;
  2. using System.Threading.Tasks;
  3. using Common.Utility.CombatEvent;
  4. using Core.Utility;
  5. using Excel2Json;
  6. using Fort23.Core;
  7. using Fort23.UTool;
  8. using GameLogic.Bag;
  9. using GameLogic.Combat.CombatTool;
  10. using GameLogic.Combat.CombatType;
  11. using GameLogic.Hero;
  12. using UnityEngine;
  13. using Utility;
  14. namespace Fort23.Mono
  15. {
  16. [UIBinding(prefab = "MainUIPanel")]
  17. public partial class MainUIPanel : UIPanel
  18. {
  19. private CombatHeroEntity bossHeroEntity;
  20. private void Init()
  21. {
  22. InitRes();
  23. InitBattleHeroWidget();
  24. LevelUpdate(null);
  25. }
  26. protected override void AddEvent()
  27. {
  28. CombatEventManager.Instance.AddEventListener(CombatEventType.CombatExpAlter, CombatExpAlter);
  29. EventManager.Instance.AddEventListener(CustomEventType.HeroPowerUp, OnHeroPowerUp);
  30. EventManager.Instance.AddEventListener(CustomEventType.ItemUpdate, OnItemUpdate);
  31. EventManager.Instance.AddEventListener(CustomEventType.ShowBossHp, ShowBossHp);
  32. EventManager.Instance.AddEventListener(CustomEventType.LevelUpdate, LevelUpdate);
  33. CombatEventManager.Instance.AddEventListener(CombatEventType.HeroHpUpdate, HeroHpUpdateEventData);
  34. EventManager.Instance.AddEventListener(CustomEventType.ShowBattleExp, ShowBattleExp);
  35. EventManager.Instance.AddEventListener(CustomEventType.StartBossBattle, StartBossBattle);
  36. }
  37. private void StartBossBattle(IEventData iEventData)
  38. {
  39. UIManager.Instance.LoadAndOpenPanel<StartBossPanel>(null, UILayer.Top);
  40. }
  41. private void ShowBattleExp(IEventData iEventData)
  42. {
  43. bossHp.SetActive(false);
  44. Slider_Exp_Process.SetActive(true);
  45. bossHeroEntity = null;
  46. }
  47. private void HeroHpUpdateEventData(IEventData iEventData)
  48. {
  49. HeroHpUpdateEventData heroHpUpdateEventData = iEventData as HeroHpUpdateEventData;
  50. if (heroHpUpdateEventData.combatHeroEntity == bossHeroEntity)
  51. {
  52. UpdateBossHp();
  53. }
  54. }
  55. protected override void DelEvent()
  56. {
  57. CombatEventManager.Instance.RemoveEventListener(CombatEventType.CombatExpAlter, CombatExpAlter);
  58. EventManager.Instance.RemoveEventListener(CustomEventType.HeroPowerUp, OnHeroPowerUp);
  59. EventManager.Instance.RemoveEventListener(CustomEventType.ItemUpdate, OnItemUpdate);
  60. EventManager.Instance.RemoveEventListener(CustomEventType.ShowBossHp, ShowBossHp);
  61. EventManager.Instance.RemoveEventListener(CustomEventType.LevelUpdate, LevelUpdate);
  62. CombatEventManager.Instance.RemoveEventListener(CombatEventType.HeroHpUpdate, HeroHpUpdateEventData);
  63. EventManager.Instance.RemoveEventListener(CustomEventType.ShowBattleExp, ShowBattleExp);
  64. }
  65. public override void AddButtonEvent()
  66. {
  67. }
  68. private void OnItemUpdate(IEventData e)
  69. {
  70. ItemUpdateData data = e as ItemUpdateData;
  71. if (data.ItemInfo.ID == GlobalParam.Item_Coin_ID)
  72. {
  73. txtCoin.text = BagController.Instance.GetItemInfo(GlobalParam.Item_Coin_ID).count.Value.ToStringEx();
  74. }
  75. else if (data.ItemInfo.ID == GlobalParam.Item_Diamond_ID)
  76. {
  77. txtDiamond.text = BagController.Instance.GetItemInfo(GlobalParam.Item_Diamond_ID).count.Value.ToStringEx();
  78. }
  79. else if (data.ItemInfo.ID == GlobalParam.Item_HeroExp_ID)
  80. {
  81. txtHeroExp.text = BagController.Instance.GetItemInfo(GlobalParam.Item_HeroExp_ID).count.Value.ToStringEx();
  82. }
  83. }
  84. private void LevelUpdate(IEventData eventData)
  85. {
  86. int levelBattle= AccountFileInfo.Instance.playerData.levelBattle;
  87. LevelBattleConfig levelBattleConfig= ConfigComponent.Instance.Get<LevelBattleConfig>(levelBattle);
  88. levelName.text = levelBattleConfig.levelName;
  89. }
  90. private void ShowBossHp(IEventData eventData)
  91. {
  92. ShowBossHpEventData showBossHpEventData = eventData as ShowBossHpEventData;
  93. bossHeroEntity = showBossHpEventData.boss;
  94. bossHp.SetActive(true);
  95. Slider_Exp_Process.SetActive(false);
  96. bossName.text = bossHeroEntity.CurrCombatHeroInfo.heroName;
  97. UpdateBossHp();
  98. }
  99. protected void UpdateBossHp()
  100. {
  101. Slider_Hp_Boss.value = bossHeroEntity.CurrCombatHeroInfo.hp.Value * 1.0f /
  102. bossHeroEntity.MaxCombatHeroInfo.hp.Value;
  103. }
  104. private void CombatExpAlter(IEventData eventData)
  105. {
  106. ExpAlter();
  107. }
  108. private void ExpAlter()
  109. {
  110. if (CombatController.currActiveCombat == null || CombatController.currActiveCombat.CombatTypeBasic == null)
  111. {
  112. return;
  113. }
  114. LevelBattleCombatType levelBattleCombatType =
  115. CombatController.currActiveCombat.CombatTypeBasic as LevelBattleCombatType;
  116. float bl = (levelBattleCombatType.exp * 1.0f) / levelBattleCombatType.CurrMaxExp;
  117. exp.value = bl;
  118. TextExp.text = levelBattleCombatType.exp + "/" + levelBattleCombatType.CurrMaxExp;
  119. }
  120. private void OnHeroPowerUp(IEventData eventData)
  121. {
  122. HeroPowerUpEventData data = eventData as HeroPowerUpEventData;
  123. HeroInfo heroInfo = (HeroInfo)PlayerManager.Instance.heroController.GetHeroInfo(data.heroModelID);
  124. foreach (WidgetHero widgetHero in widgetHeroes)
  125. {
  126. if (widgetHero.heroInfo.modelID == heroInfo.modelID)
  127. {
  128. widgetHero.UpdateWidgetUI(heroInfo);
  129. break;
  130. }
  131. }
  132. }
  133. private List<WidgetHero> widgetHeroes = new List<WidgetHero>();
  134. /// <summary>
  135. /// 把主界面的几个英雄UI归位
  136. /// </summary>
  137. /// <param name="wh"></param>
  138. public void RestWidgetHeroPos(WidgetHero wh)
  139. {
  140. Vector3 v;
  141. Vector3 origin;
  142. foreach (WidgetHero w in widgetHeroes)
  143. {
  144. if (wh != null && w.Equals(wh))
  145. {
  146. continue;
  147. }
  148. v = w.transform.parent.localPosition;
  149. if (v.y > 0)
  150. {
  151. origin = new Vector3(v.x, 0, v.z);
  152. w.transform.parent.localPosition = origin;
  153. w.SetMoreBtnActive(false);
  154. }
  155. }
  156. }
  157. private async void InitBattleHeroWidget()
  158. {
  159. widgetHeroes.Clear();
  160. int i = 0;
  161. foreach (KeyValuePair<int,HeroInfo> keyValuePair in PlayerManager.Instance.heroController.heroDicInLead)
  162. {
  163. RectTransform rectTransform = hero_battle[i] as RectTransform;
  164. WidgetHero itemHero = await UIManager.Instance.CreateGComponent<WidgetHero>(null,
  165. poolName: "WidgetHero", root: rectTransform);
  166. itemHero.InitHero(keyValuePair.Value);
  167. widgetHeroes.Add(itemHero);
  168. i++;
  169. }
  170. }
  171. private void InitRes()
  172. {
  173. txtDiamond.text = BagController.Instance.GetItemInfo(GlobalParam.Item_Diamond_ID).count.Value.ToStringEx();
  174. txtCoin.text = BagController.Instance.GetItemInfo(GlobalParam.Item_Coin_ID).count.Value.ToStringEx();
  175. txtHeroExp.text = BagController.Instance.GetItemInfo(GlobalParam.Item_HeroExp_ID).count.Value.ToStringEx();
  176. }
  177. }
  178. }