MainUIPanel.cs 9.7 KB

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