MainUIPanel.cs 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  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. btnHeroBag.onClick.AddListener(OnClickHeroBag);
  68. }
  69. private async void OnClickHeroBag()
  70. {
  71. HeroBagPanel heroBagPanel = await UIManager.Instance.LoadAndOpenPanel<HeroBagPanel>(null);
  72. heroBagPanel.InitPanel();
  73. }
  74. private void OnItemUpdate(IEventData e)
  75. {
  76. ItemUpdateData data = e as ItemUpdateData;
  77. if (data.ItemInfo.ID == GlobalParam.Item_Coin_ID)
  78. {
  79. txtCoin.text = BagController.Instance.GetItemInfo(GlobalParam.Item_Coin_ID).count.Value.ToStringEx();
  80. }
  81. else if (data.ItemInfo.ID == GlobalParam.Item_Diamond_ID)
  82. {
  83. txtDiamond.text = BagController.Instance.GetItemInfo(GlobalParam.Item_Diamond_ID).count.Value.ToStringEx();
  84. }
  85. else if (data.ItemInfo.ID == GlobalParam.Item_HeroExp_ID)
  86. {
  87. txtHeroExp.text = BagController.Instance.GetItemInfo(GlobalParam.Item_HeroExp_ID).count.Value.ToStringEx();
  88. }
  89. }
  90. private void LevelUpdate(IEventData eventData)
  91. {
  92. int levelBattle= AccountFileInfo.Instance.playerData.levelBattle;
  93. LevelBattleConfig levelBattleConfig= ConfigComponent.Instance.Get<LevelBattleConfig>(levelBattle);
  94. levelName.text = levelBattleConfig.levelName;
  95. }
  96. private void ShowBossHp(IEventData eventData)
  97. {
  98. ShowBossHpEventData showBossHpEventData = eventData as ShowBossHpEventData;
  99. bossHeroEntity = showBossHpEventData.boss;
  100. bossHp.SetActive(true);
  101. Slider_Exp_Process.SetActive(false);
  102. bossName.text = bossHeroEntity.CurrCombatHeroInfo.heroName;
  103. UpdateBossHp();
  104. }
  105. protected void UpdateBossHp()
  106. {
  107. Slider_Hp_Boss.value = bossHeroEntity.CurrCombatHeroInfo.hp.Value * 1.0f /
  108. bossHeroEntity.MaxCombatHeroInfo.hp.Value;
  109. }
  110. private void CombatExpAlter(IEventData eventData)
  111. {
  112. ExpAlter();
  113. }
  114. private void ExpAlter()
  115. {
  116. if (CombatController.currActiveCombat == null || CombatController.currActiveCombat.CombatTypeBasic == null)
  117. {
  118. return;
  119. }
  120. LevelBattleCombatType levelBattleCombatType =
  121. CombatController.currActiveCombat.CombatTypeBasic as LevelBattleCombatType;
  122. float bl = (levelBattleCombatType.exp * 1.0f) / levelBattleCombatType.CurrMaxExp;
  123. exp.value = bl;
  124. TextExp.text = levelBattleCombatType.exp + "/" + levelBattleCombatType.CurrMaxExp;
  125. }
  126. // private void OnHeroPowerUp(IEventData eventData)
  127. // {
  128. // HeroPowerUpEventData data = eventData as HeroPowerUpEventData;
  129. // HeroInfo heroInfo = (HeroInfo)PlayerManager.Instance.heroController.GetHeroInfo(data.heroModelID);
  130. //
  131. // foreach (WidgetHero widgetHero in widgetHeroes)
  132. // {
  133. // if (widgetHero.heroInfo.modelID == heroInfo.modelID)
  134. // {
  135. // widgetHero.UpdateWidgetUI(heroInfo);
  136. // break;
  137. // }
  138. // }
  139. // }
  140. private List<WidgetHero> widgetHeroes = new List<WidgetHero>();
  141. /// <summary>
  142. /// 把主界面的几个英雄UI归位
  143. /// </summary>
  144. /// <param name="wh"></param>
  145. public void RestWidgetHeroPos(WidgetHero wh)
  146. {
  147. Vector3 v;
  148. Vector3 origin;
  149. foreach (WidgetHero w in widgetHeroes)
  150. {
  151. if (wh != null && w.Equals(wh))
  152. {
  153. continue;
  154. }
  155. v = w.transform.parent.localPosition;
  156. if (v.y > 0)
  157. {
  158. origin = new Vector3(v.x, 0, v.z);
  159. w.transform.parent.localPosition = origin;
  160. w.SetMoreBtnActive(false);
  161. }
  162. }
  163. }
  164. private async void InitBattleHeroWidget()
  165. {
  166. widgetHeroes.Clear();
  167. int i = 0;
  168. foreach (KeyValuePair<int,HeroInfo> keyValuePair in PlayerManager.Instance.heroController.heroDicInLead)
  169. {
  170. RectTransform rectTransform = hero_battle[i] as RectTransform;
  171. WidgetHero itemHero = await UIManager.Instance.CreateGComponent<WidgetHero>(null,
  172. poolName: "WidgetHero", root: rectTransform);
  173. itemHero.InitHero(keyValuePair.Value);
  174. widgetHeroes.Add(itemHero);
  175. i++;
  176. }
  177. }
  178. private void InitRes()
  179. {
  180. txtDiamond.text = BagController.Instance.GetItemInfo(GlobalParam.Item_Diamond_ID).count.Value.ToStringEx();
  181. txtCoin.text = BagController.Instance.GetItemInfo(GlobalParam.Item_Coin_ID).count.Value.ToStringEx();
  182. txtHeroExp.text = BagController.Instance.GetItemInfo(GlobalParam.Item_HeroExp_ID).count.Value.ToStringEx();
  183. }
  184. }
  185. }