AppBarPanel.cs 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  1. using System.Collections.Generic;
  2. using System.Linq;
  3. using Excel2Json;
  4. using Fort23.Core;
  5. using Fort23.UTool;
  6. using GameLogic.Bag;
  7. using GameLogic.Combat;
  8. using GameLogic.Combat.CombatTool;
  9. namespace Fort23.Mono
  10. {
  11. [UIBinding(prefab = "AppBarPanel")]
  12. public partial class AppBarPanel : UIPanel
  13. {
  14. public UIPanel currentOpenUIPanel;
  15. int useCount = 0;
  16. private void Init()
  17. {
  18. isAddStack = false;
  19. }
  20. protected override void AddEvent()
  21. {
  22. EventManager.Instance.AddEventListener(CustomEventType.DivineSensePointChange, DivineSensePointChange);
  23. }
  24. protected override void DelEvent()
  25. {
  26. EventManager.Instance.RemoveEventListener(CustomEventType.DivineSensePointChange, DivineSensePointChange);
  27. }
  28. private void DivineSensePointChange(IEventData e)
  29. {
  30. Text_divineSensePoint.text =
  31. $"{AccountFileInfo.Instance.playerData.divineSensePoint}/{PlayerManager.Instance.gameConstantConfig.DetectEventCount}";
  32. }
  33. public override void AddButtonEvent()
  34. {
  35. Btn_Shop.onClick.AddListener(async () => { Btn_Shop_Click(); });
  36. bnt_shengShi.onClick.AddListener(() => { DivineSenceInfoPanel.OpenPanel((count, useItems) => { Bnt_shengShi_onClick(count, useItems); }); });
  37. Btn_GongFa.onClick.AddListener(async () => { Btn_GongFa_Click(); });
  38. Btn_HeroInfomation.onClick.AddListener(async () => { Btn_HeroInfomation_Click(); });
  39. Btn_DongFu.onClick.AddListener(async () => { Bne_dongfu_Click(); });
  40. Btn_Back.onClick.AddListener(() =>
  41. {
  42. UIManager.Instance.HideUIUIPanel(currentOpenUIPanel);
  43. // currentOpenUIPanel = null;
  44. });
  45. Btn_Menu.onClick.AddListener(() =>
  46. {
  47. MenuRoot.SetActive(true);
  48. });
  49. Btn_Back1.onClick.AddListener(() =>
  50. {
  51. MenuRoot.SetActive(false);
  52. });
  53. Btn_DaoYou.onClick.AddListener(() =>
  54. {
  55. DaoYouPanel.OpenPanel();
  56. MenuRoot.SetActive(false);
  57. });
  58. Btn_Tower.onClick.AddListener(() =>
  59. {
  60. TowerPanel.OpenPanel(1);
  61. MenuRoot.SetActive(false);
  62. });
  63. }
  64. public async void Btn_Shop_Click()
  65. {
  66. if (currentOpenUIPanel is ShopPanel)
  67. {
  68. return;
  69. }
  70. UIPanel uiPanel = currentOpenUIPanel;
  71. CombatDrive.Instance.CombatController.isUpdate = false;
  72. ShopPanel shopPanel = await ShopPanel.OpenPanel();
  73. if (uiPanel is CaveMainPanel || uiPanel is SkillSelectPanel || uiPanel is ShopPanel || uiPanel is MainHeroPanel)
  74. {
  75. UIManager.Instance.HideUIUIPanel(uiPanel, isBreadcrumbBarPanel: false);
  76. }
  77. if (!shopPanel.IsClose)
  78. await shopPanel.UIClosed();
  79. CombatDrive.Instance.CombatController.isUpdate = true;
  80. }
  81. public async void Btn_GongFa_Click()
  82. {
  83. if (currentOpenUIPanel is SkillSelectPanel)
  84. {
  85. return;
  86. }
  87. UIPanel uiPanel = currentOpenUIPanel;
  88. SkillSelectPanel skillSelectPanel = await SkillSelectPanel.OpenSkillSelectPanel();
  89. if (uiPanel is CaveMainPanel || uiPanel is SkillSelectPanel || uiPanel is ShopPanel || uiPanel is MainHeroPanel)
  90. {
  91. UIManager.Instance.HideUIUIPanel(uiPanel, isBreadcrumbBarPanel: false);
  92. }
  93. }
  94. public async void Btn_HeroInfomation_Click()
  95. {
  96. if (currentOpenUIPanel is MainHeroPanel)
  97. {
  98. return;
  99. }
  100. UIPanel uiPanel = currentOpenUIPanel;
  101. MainHeroPanel mainHeroPanel = await MainHeroPanel.OpenPanel();
  102. if (uiPanel is CaveMainPanel || uiPanel is SkillSelectPanel || uiPanel is ShopPanel || uiPanel is MainHeroPanel)
  103. {
  104. UIManager.Instance.HideUIUIPanel(uiPanel, isBreadcrumbBarPanel: false);
  105. }
  106. if (!mainHeroPanel.IsClose)
  107. await mainHeroPanel.UIClosed();
  108. }
  109. public async void Bne_dongfu_Click()
  110. {
  111. if (currentOpenUIPanel is CaveMainPanel)
  112. {
  113. return;
  114. }
  115. UIPanel uiPanel = currentOpenUIPanel;
  116. CombatDrive.Instance.CombatController.isUpdate = false;
  117. CaveMainPanel heroInformationPanel = await CaveMainPanel.OpenPanel();
  118. if (uiPanel is CaveMainPanel || uiPanel is SkillSelectPanel || uiPanel is ShopPanel || uiPanel is MainHeroPanel)
  119. {
  120. UIManager.Instance.HideUIUIPanel(uiPanel, isBreadcrumbBarPanel: false);
  121. }
  122. if (!heroInformationPanel.IsClose)
  123. await heroInformationPanel.UIClosed();
  124. CombatDrive.Instance.CombatController.isUpdate = true;
  125. }
  126. private async CTask OpenSelectSkillPanel()
  127. {
  128. }
  129. private async void Bnt_shengShi_onClick(int count, List<ItemInfo> useItems)
  130. {
  131. if (AccountFileInfo.Instance.playerData.divineSensePoint <
  132. PlayerManager.Instance.gameConstantConfig.DetectEventCount)
  133. {
  134. TipMessagePanel.OpenTipMessagePanel("神识值不够!");
  135. return;
  136. }
  137. EventSystemManager.Instance.CancelEvent();
  138. if (EventSystemManager.Instance.isTriggerEvent)
  139. return;
  140. EventSystemManager.Instance.isTriggerEvent = true;
  141. CombatDrive.Instance.CombatController.ChangeState(CombatController.idle);
  142. CombatController.currActiveCombat.CombatSenceController.StartPayShengShi(CombatController.currActiveCombat
  143. .playerHeroEntity.GameObject.transform);
  144. List<AccountFileInfo.EventList> eventLists = EventSystemManager.Instance.UseDivinesense(count, useItems);
  145. await TimerComponent.Instance.WaitAsync(800);
  146. EventSystemManager.Instance.isTriggerEvent = false;
  147. if (eventLists == null || eventLists.Count == 0)
  148. {
  149. CombatDrive.Instance.CombatController.ChangeState(CombatController.update);
  150. return;
  151. }
  152. if (eventLists != null && eventLists.Count > 0)
  153. {
  154. await DivineSenceEventPreviewPanel.OpenPanel();
  155. }
  156. CombatDrive.Instance.CombatController.ChangeState(CombatController.update);
  157. EventManager.Instance.Dispatch(CustomEventType.ShengShiOnClick, null);
  158. }
  159. public void CustomInit(UIPanel uiPanel)
  160. {
  161. if (uiPanel is MainPanel)
  162. {
  163. Btn_Back.gameObject.SetActive(false);
  164. bnt_shengShi.gameObject.SetActive(true);
  165. BtnRoot.gameObject.SetActive(true);
  166. currentOpenUIPanel = uiPanel;
  167. }
  168. else if (uiPanel is CaveMainPanel || uiPanel is SkillSelectPanel || uiPanel is ShopPanel || uiPanel is MainHeroPanel)
  169. {
  170. Btn_Back.gameObject.SetActive(true);
  171. bnt_shengShi.gameObject.SetActive(false);
  172. BtnRoot.gameObject.SetActive(true);
  173. currentOpenUIPanel = uiPanel;
  174. }
  175. else
  176. {
  177. BtnRoot.gameObject.SetActive(false);
  178. Btn_Back.gameObject.SetActive(true);
  179. bnt_shengShi.gameObject.SetActive(false);
  180. currentOpenUIPanel = uiPanel;
  181. }
  182. if (uiPanel is CaveMainPanel)
  183. {
  184. Toggle_BtnRoot.ShowTargetIndex(2);
  185. }
  186. else if (uiPanel is SkillSelectPanel)
  187. {
  188. Toggle_BtnRoot.ShowTargetIndex(1);
  189. }
  190. else if (uiPanel is ShopPanel)
  191. {
  192. Toggle_BtnRoot.ShowTargetIndex(3);
  193. }
  194. else if (uiPanel is MainHeroPanel)
  195. {
  196. Toggle_BtnRoot.ShowTargetIndex(0);
  197. }
  198. else
  199. {
  200. Toggle_BtnRoot.Hide();
  201. }
  202. }
  203. public async static CTask OpenPanel(UIPanel uiPanel)
  204. {
  205. AppBarPanel appBarPanel = null;
  206. if (UIManager.Instance.GetComponent<AppBarPanel>() == null)
  207. {
  208. appBarPanel = await UIManager.Instance.LoadAndOpenPanel<AppBarPanel>(null, UILayer.Top, isFocus: false);
  209. }
  210. else
  211. {
  212. appBarPanel = UIManager.Instance.GetComponent<AppBarPanel>();
  213. await appBarPanel.Show();
  214. }
  215. appBarPanel.CustomInit(uiPanel);
  216. }
  217. public async static CTask ClosePanel()
  218. {
  219. // UIManager.Instance.HideUIUIPanel<AppBarPanel>();
  220. UIManager.Instance.GetComponent<AppBarPanel>()?.Hide();
  221. }
  222. }
  223. }