MainUIPanel.cs 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
  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. EventManager.Instance.AddEventListener(CustomEventType.ShowDialogue, ShowDialogue);
  37. EventManager.Instance.AddEventListener(CustomEventType.AlterCombatHero, AlterCombatHero);
  38. }
  39. private void StartBossBattle(IEventData iEventData)
  40. {
  41. UIManager.Instance.LoadAndOpenPanel<StartBossPanel>(null, UILayer.Top);
  42. }
  43. private void ShowDialogue(IEventData iEventData)
  44. {
  45. ShowDialogueEventData dialogueData = iEventData as ShowDialogueEventData;
  46. string[] dialogueMessaga = dialogueData.dialogueMessaga;
  47. System.Action finis = dialogueData.finish;
  48. ShowDialogueEventData.MessageShowType messageShowTyp = dialogueData.messageShowType;
  49. DialoguePanel.OpenDialoguePanel(dialogueMessaga, messageShowTyp, finis);
  50. }
  51. private void ShowBattleExp(IEventData iEventData)
  52. {
  53. bossHp.SetActive(false);
  54. Slider_Exp_Process.SetActive(true);
  55. bossHeroEntity = null;
  56. }
  57. private void HeroHpUpdateEventData(IEventData iEventData)
  58. {
  59. HeroHpUpdateEventData heroHpUpdateEventData = iEventData as HeroHpUpdateEventData;
  60. if (heroHpUpdateEventData.combatHeroEntity == bossHeroEntity)
  61. {
  62. UpdateBossHp();
  63. }
  64. }
  65. protected override void DelEvent()
  66. {
  67. CombatEventManager.Instance.RemoveEventListener(CombatEventType.CombatExpAlter, CombatExpAlter);
  68. // EventManager.Instance.RemoveEventListener(CustomEventType.HeroPowerUp, OnHeroPowerUp);
  69. EventManager.Instance.RemoveEventListener(CustomEventType.ItemUpdate, OnItemUpdate);
  70. EventManager.Instance.RemoveEventListener(CustomEventType.ShowBossHp, ShowBossHp);
  71. EventManager.Instance.RemoveEventListener(CustomEventType.LevelUpdate, LevelUpdate);
  72. CombatEventManager.Instance.RemoveEventListener(CombatEventType.HeroHpUpdate, HeroHpUpdateEventData);
  73. EventManager.Instance.RemoveEventListener(CustomEventType.ShowBattleExp, ShowBattleExp);
  74. EventManager.Instance.RemoveEventListener(CustomEventType.ShowDialogue, ShowDialogue);
  75. EventManager.Instance.RemoveEventListener(CustomEventType.AlterCombatHero, AlterCombatHero);
  76. }
  77. public override void AddButtonEvent()
  78. {
  79. btnHeroBag.onClick.AddListener(OnClickHeroBag);
  80. Button_battleBoss.onClick.AddListener(OnClickButtonBattleBoss);
  81. }
  82. private async void OnClickButtonBattleBoss()
  83. {
  84. if (AccountFileInfo.Instance.playerData.isAllHeroDie)
  85. {
  86. LevelBattleCombatType levelBattleCombatType =
  87. CombatController.currActiveCombat.CombatTypeBasic as LevelBattleCombatType;
  88. levelBattleCombatType.StartBossCombat();
  89. Button_battleBoss.gameObject.SetActive(false);
  90. }
  91. }
  92. private async void OnClickHeroBag()
  93. {
  94. HeroBagPanel heroBagPanel = await UIManager.Instance.LoadAndOpenPanel<HeroBagPanel>(null);
  95. heroBagPanel.InitPanel();
  96. }
  97. private void AlterCombatHero(IEventData e)
  98. {
  99. InitHeroWidget();
  100. }
  101. private void OnItemUpdate(IEventData e)
  102. {
  103. ItemUpdateData data = e as ItemUpdateData;
  104. if (data.ItemInfo.itemID == GlobalParam.Item_Coin_ID)
  105. {
  106. txtCoin.text = BagController.Instance.GetItemInfo(GlobalParam.Item_Coin_ID).count.Value.ToStringEx();
  107. }
  108. else if (data.ItemInfo.itemID == GlobalParam.Item_Diamond_ID)
  109. {
  110. txtDiamond.text = BagController.Instance.GetItemInfo(GlobalParam.Item_Diamond_ID).count.Value
  111. .ToStringEx();
  112. }
  113. else if (data.ItemInfo.itemID == GlobalParam.Item_HeroExp_ID)
  114. {
  115. txtHeroExp.text = BagController.Instance.GetItemInfo(GlobalParam.Item_HeroExp_ID).count.Value
  116. .ToStringEx();
  117. }
  118. }
  119. private void LevelUpdate(IEventData eventData)
  120. {
  121. int levelBattle = AccountFileInfo.Instance.playerData.levelBattle;
  122. LevelBattleConfig levelBattleConfig = ConfigComponent.Instance.Get<LevelBattleConfig>(levelBattle);
  123. levelName.text = levelBattleConfig.levelName;
  124. }
  125. private void ShowBossHp(IEventData eventData)
  126. {
  127. ShowBossHpEventData showBossHpEventData = eventData as ShowBossHpEventData;
  128. bossHeroEntity = showBossHpEventData.boss;
  129. bossHp.SetActive(true);
  130. Slider_Exp_Process.SetActive(false);
  131. bossName.text = bossHeroEntity.CurrCombatHeroInfo.heroName;
  132. UpdateBossHp();
  133. }
  134. protected void UpdateBossHp()
  135. {
  136. Slider_Hp_Boss.value = bossHeroEntity.CurrCombatHeroInfo.hp.Value * 1.0f /
  137. bossHeroEntity.MaxCombatHeroInfo.hp.Value;
  138. }
  139. private void CombatExpAlter(IEventData eventData)
  140. {
  141. ExpAlter();
  142. }
  143. private void ExpAlter()
  144. {
  145. if (CombatController.currActiveCombat == null || CombatController.currActiveCombat.CombatTypeBasic == null)
  146. {
  147. return;
  148. }
  149. LevelBattleCombatType levelBattleCombatType =
  150. CombatController.currActiveCombat.CombatTypeBasic as LevelBattleCombatType;
  151. float bl = (levelBattleCombatType.exp * 1.0f) / levelBattleCombatType.CurrMaxExp;
  152. exp.value = bl;
  153. TextExp.text = levelBattleCombatType.exp + "/" + levelBattleCombatType.CurrMaxExp;
  154. if (levelBattleCombatType.exp >= levelBattleCombatType.CurrMaxExp) // 到达目标值,开始打boss
  155. {
  156. if (!levelBattleCombatType.isBossCombat && AccountFileInfo.Instance.playerData.isAllHeroDie)
  157. {
  158. Button_battleBoss.gameObject.SetActive(true);
  159. }
  160. }
  161. else
  162. {
  163. Button_battleBoss.gameObject.SetActive(false);
  164. }
  165. }
  166. // private void OnHeroPowerUp(IEventData eventData)
  167. // {
  168. // HeroPowerUpEventData data = eventData as HeroPowerUpEventData;
  169. // HeroInfo heroInfo = (HeroInfo)PlayerManager.Instance.heroController.GetHeroInfo(data.heroModelID);
  170. //
  171. // foreach (WidgetHero widgetHero in widgetHeroes)
  172. // {
  173. // if (widgetHero.heroInfo.modelID == heroInfo.modelID)
  174. // {
  175. // widgetHero.UpdateWidgetUI(heroInfo);
  176. // break;
  177. // }
  178. // }
  179. // }
  180. public List<WidgetHero> widgetHeroes = new List<WidgetHero>();
  181. /// <summary>
  182. /// 把主界面的几个英雄UI归位
  183. /// </summary>
  184. /// <param name="wh"></param>
  185. public void RestWidgetHeroPos(WidgetHero wh)
  186. {
  187. Vector3 v;
  188. Vector3 origin;
  189. foreach (WidgetHero w in widgetHeroes)
  190. {
  191. if (wh != null && w.Equals(wh))
  192. {
  193. continue;
  194. }
  195. v = w.transform.parent.localPosition;
  196. if (v.y > 0)
  197. {
  198. origin = new Vector3(v.x, 0, v.z);
  199. w.transform.parent.localPosition = origin;
  200. w.SetMoreBtnActive(false);
  201. }
  202. }
  203. }
  204. private async void InitBattleHeroWidget()
  205. {
  206. Button_battleBoss.gameObject.SetActive(false);
  207. InitHeroWidget();
  208. }
  209. private async void InitHeroWidget()
  210. {
  211. widgetHeroes.Clear();
  212. int i = 0;
  213. foreach (KeyValuePair<int, HeroInfo> keyValuePair in PlayerManager.Instance.heroController.heroDicInLead)
  214. {
  215. RectTransform rectTransform = hero_battle[i] as RectTransform;
  216. WidgetHero itemHero = await UIManager.Instance.CreateGComponent<WidgetHero>(null,
  217. poolName: "WidgetHero", root: rectTransform);
  218. itemHero.InitHero(keyValuePair.Value);
  219. widgetHeroes.Add(itemHero);
  220. i++;
  221. }
  222. }
  223. private void InitRes()
  224. {
  225. txtDiamond.text = BagController.Instance.GetItemInfo(GlobalParam.Item_Diamond_ID).count.Value.ToStringEx();
  226. txtCoin.text = BagController.Instance.GetItemInfo(GlobalParam.Item_Coin_ID).count.Value.ToStringEx();
  227. txtHeroExp.text = BagController.Instance.GetItemInfo(GlobalParam.Item_HeroExp_ID).count.Value.ToStringEx();
  228. }
  229. }
  230. }