MainUIPanel.cs 9.0 KB

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