MainUIPanel.cs 10 KB

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