MainPanel.cs 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. using System.Collections.Generic;
  2. using System.Linq;
  3. using Excel2Json;
  4. using Fort23.Core;
  5. using Fort23.UTool;
  6. using GameLogic.Combat;
  7. using GameLogic.Combat.CombatTool;
  8. using UnityEngine;
  9. namespace Fort23.Mono
  10. {
  11. [UIBinding(prefab = "MainPanel")]
  12. public partial class MainPanel : UIPanel
  13. {
  14. bool isShowSkillPanel = false;
  15. private void Init()
  16. {
  17. isAddStack = true;
  18. }
  19. protected override void AddEvent()
  20. {
  21. EventManager.Instance.AddEventListener(CustomEventType.DivineSensePointChange, DivineSensePointChange);
  22. EventManager.Instance.AddEventListener(CustomEventType.ShengShiOnClick, ShengShiOnClick);
  23. EventManager.Instance.AddEventListener(CustomEventType.CompleteEvent, CompleteEvent);
  24. EventManager.Instance.AddEventListener(CustomEventType.RemoveEvent, RemoveEvent);
  25. }
  26. public async override CTask GetFocus()
  27. {
  28. await AppBarPanel.OpenPanel(this);
  29. base.GetFocus();
  30. }
  31. private void RemoveEvent(IEventData e)
  32. {
  33. Text_EventNum.text = AccountFileInfo.Instance.playerData.eventList.Count.ToString();
  34. CreatShengShiEvent();
  35. ChagneShenshiBtnActive();
  36. }
  37. private void CompleteEvent(IEventData e)
  38. {
  39. Text_ExplorationProgress.text = $"火焰山 {AccountFileInfo.Instance.playerData.senceExplorationProgress}%";
  40. Text_EventNum.text = AccountFileInfo.Instance.playerData.eventList.Count.ToString();
  41. CreatShengShiEvent();
  42. ChagneShenshiBtnActive();
  43. }
  44. private void DivineSensePointChange(IEventData e)
  45. {
  46. Text_divineSensePoint.text = $"{AccountFileInfo.Instance.playerData.divineSensePoint}/{PlayerManager.Instance.gameConstantConfig.DetectEventCount}";
  47. }
  48. private void ChagneShenshiBtnActive()
  49. {
  50. Btn_Event.gameObject.SetActive(AccountFileInfo.Instance.playerData.eventList.Count > 0);
  51. }
  52. protected override void DelEvent()
  53. {
  54. EventManager.Instance.RemoveEventListener(CustomEventType.DivineSensePointChange, DivineSensePointChange);
  55. EventManager.Instance.RemoveEventListener(CustomEventType.CompleteEvent, CompleteEvent);
  56. EventManager.Instance.RemoveEventListener(CustomEventType.RemoveEvent, RemoveEvent);
  57. EventManager.Instance.RemoveEventListener(CustomEventType.ShengShiOnClick, ShengShiOnClick);
  58. }
  59. public override void AddButtonEvent()
  60. {
  61. Btn_Chat.onClick.AddListener(() => { ChatPanel.OpenPanel(); });
  62. CameraSelect.onValueChanged.AddListener(CameraSelect_onValueChanged);
  63. bnt_shengShi.onClick.AddListener(Bnt_shengShi_onClick);
  64. Btn_GongFa.onClick.AddListener(() => { SkillSelectPanel.OpenSkillSelectPanel(); });
  65. Btn_HeroInfomation.onClick.AddListener(async () =>
  66. {
  67. EventSystemManager.Instance.isOpenUi = true;
  68. MainHeroPanel mainHeroPanel = await MainHeroPanel.OpenPanel();
  69. await mainHeroPanel.UIClosed();
  70. EventSystemManager.Instance.isOpenUi = false;
  71. });
  72. Btn_DongFu.onClick.AddListener(async () =>
  73. {
  74. EventSystemManager.Instance.isOpenUi = true;
  75. CombatDrive.Instance.CombatController.isUpdate = false;
  76. HeroInformationPanel heroInformationPanel = await HeroInformationPanel.OpenPanel();
  77. await heroInformationPanel.UIClosed();
  78. CombatDrive.Instance.CombatController.isUpdate = true;
  79. EventSystemManager.Instance.isOpenUi = false;
  80. });
  81. Btn_Event.onClick.AddListener(() =>
  82. {
  83. EventSystemManager.Instance.isOpenUi = true;
  84. DivineSenceEventPreviewPanel.OpenPanel();
  85. });
  86. }
  87. public override CTask<bool> AsyncInit(object[] uiData)
  88. {
  89. Text_divineSensePoint.text = $"{AccountFileInfo.Instance.playerData.divineSensePoint}/{PlayerManager.Instance.gameConstantConfig.DetectEventCount}";
  90. Text_ExplorationProgress.text = $"火焰山 {AccountFileInfo.Instance.playerData.senceExplorationProgress}%";
  91. Text_EventNum.text = AccountFileInfo.Instance.playerData.eventList.Count.ToString();
  92. ChagneShenshiBtnActive();
  93. CreatShengShiEvent();
  94. return base.AsyncInit(uiData);
  95. }
  96. public async override CTask Show()
  97. {
  98. await base.Show();
  99. bool isHIde = false;
  100. foreach (var skillInfo in PlayerManager.Instance.GongFaControl.allUseSkill)
  101. {
  102. if (skillInfo != null)
  103. {
  104. isHIde = true;
  105. break;
  106. }
  107. }
  108. if (!isHIde && !isShowSkillPanel)
  109. {
  110. isShowSkillPanel = true;
  111. SkillSelectPanel.OpenSkillSelectPanel();
  112. }
  113. CameraSelect.value = 0.2f;
  114. }
  115. private void CameraSelect_onValueChanged(float value)
  116. {
  117. if (CombatController.currActiveCombat == null ||
  118. CombatController.currActiveCombat.CombatCameraControllder == null)
  119. {
  120. return;
  121. }
  122. CombatController.currActiveCombat.CombatCameraControllder.CameraSelect_onValueChanged(value);
  123. }
  124. private async void Bnt_shengShi_onClick()
  125. {
  126. // EventSystemManager.Instance.DetectRandomEvents();
  127. if (AccountFileInfo.Instance.playerData.divineSensePoint < PlayerManager.Instance.gameConstantConfig.DetectEventCount)
  128. {
  129. TipMessagePanel.OpenTipMessagePanel("神识值不够!");
  130. return;
  131. }
  132. if (EventSystemManager.Instance.isTriggerEvent)
  133. return;
  134. EventSystemManager.Instance.isTriggerEvent = true;
  135. CombatDrive.Instance.CombatController.ChangeState(CombatController.idle);
  136. CombatController.currActiveCombat.CombatSenceController.StartPayShengShi(CombatController.currActiveCombat
  137. .playerHeroEntity.GameObject.transform);
  138. List<AccountFileInfo.EventList> eventLists = EventSystemManager.Instance.UseDivinesense(1);
  139. await TimerComponent.Instance.WaitAsync(800);
  140. if (eventLists == null || eventLists.Count == 0)
  141. {
  142. EventSystemManager.Instance.isTriggerEvent = false;
  143. CombatDrive.Instance.CombatController.ChangeState(CombatController.update);
  144. return;
  145. }
  146. List<AccountFileInfo.EventList> reeultEventLists = new List<AccountFileInfo.EventList>();
  147. reeultEventLists = eventLists.Where((el) =>
  148. {
  149. EventConfig eventConfig = ConfigComponent.Instance.Get<EventConfig>(el.eventID);
  150. return eventConfig.EventType == 2;
  151. }).ToList();
  152. if (reeultEventLists != null && reeultEventLists.Count > 0)
  153. {
  154. foreach (var reeultEventList in reeultEventLists)
  155. {
  156. EventSystemManager.Instance.CompleteEvent(reeultEventList, true);
  157. eventLists.Remove(reeultEventList);
  158. }
  159. DivineSenceEventResultPanel divineSenceEventResultPanel = await DivineSenceEventResultPanel.OpenPanel(reeultEventLists);
  160. await divineSenceEventResultPanel.UIClosed();
  161. }
  162. EventSystemManager.Instance.isTriggerEvent = false;
  163. CombatDrive.Instance.CombatController.ChangeState(CombatController.update);
  164. AccountFileInfo.Instance.playerData.eventList.AddRange(eventLists);
  165. AccountFileInfo.Instance.SavePlayerData();
  166. }
  167. private void ShengShiOnClick(IEventData e)
  168. {
  169. Text_EventNum.text = AccountFileInfo.Instance.playerData.eventList.Count.ToString();
  170. ChagneShenshiBtnActive();
  171. CreatShengShiEvent();
  172. }
  173. public async void CreatShengShiEvent()
  174. {
  175. UIManager.Instance.DormancyAllGComponent<ShengShiEventWidget>();
  176. int count = AccountFileInfo.Instance.playerData.eventList.Count >= 1 ? 1 : AccountFileInfo.Instance.playerData.eventList.Count;
  177. for (var i = 0; i < count; i++)
  178. {
  179. ShengShiEventWidget shengShiEventWidget =
  180. await UIManager.Instance.CreateGComponent<ShengShiEventWidget>(null, DynamicEvent);
  181. shengShiEventWidget.InitShengShiEventWidget(AccountFileInfo.Instance.playerData.eventList[i]);
  182. }
  183. }
  184. [CustomMethod(CustomMethodType.Update)]
  185. public void Update()
  186. {
  187. if (Input.GetKeyDown(KeyCode.Y))
  188. {
  189. EventSystemManager.Instance.DetectRandomEvents();
  190. // CombatDrive.Instance.LoadLevelBattleCombat(100001, delegate(bool isWin)
  191. // {
  192. // LogTool.Log("战斗完成"+isWin);
  193. // });
  194. }
  195. }
  196. public async static CTask OpenPanel()
  197. {
  198. await UIManager.Instance.LoadAndOpenPanel<MainPanel>(null);
  199. }
  200. }
  201. }