using System.Collections.Generic; using System.Linq; using Excel2Json; using Fort23.Core; using Fort23.UTool; using GameLogic.Combat; using GameLogic.Combat.CombatTool; using UnityEngine; namespace Fort23.Mono { [UIBinding(prefab = "MainPanel")] public partial class MainPanel : UIPanel { private void Init() { } protected override void AddEvent() { EventManager.Instance.AddEventListener(CustomEventType.DivineSensePointChange, DivineSensePointChange); EventManager.Instance.AddEventListener(CustomEventType.CompleteEvent, CompleteEvent); EventManager.Instance.AddEventListener(CustomEventType.RemoveEvent, RemoveEvent); } private void RemoveEvent(IEventData e) { Text_EventNum.text = AccountFileInfo.Instance.playerData.eventList.Count.ToString(); CreatShengShiEvent(); ChagneShenshiBtnActive(); } private void CompleteEvent(IEventData e) { Text_ExplorationProgress.text = $"火焰山 {AccountFileInfo.Instance.playerData.senceExplorationProgress}%"; Text_EventNum.text = AccountFileInfo.Instance.playerData.eventList.Count.ToString(); CreatShengShiEvent(); ChagneShenshiBtnActive(); } private void DivineSensePointChange(IEventData e) { Text_divineSensePoint.text = $"{AccountFileInfo.Instance.playerData.divineSensePoint}/{PlayerManager.Instance.gameConstantConfig.DetectEventCount}"; } private void ChagneShenshiBtnActive() { Btn_Event.gameObject.SetActive(AccountFileInfo.Instance.playerData.eventList.Count > 0); } protected override void DelEvent() { EventManager.Instance.RemoveEventListener(CustomEventType.DivineSensePointChange, DivineSensePointChange); EventManager.Instance.RemoveEventListener(CustomEventType.CompleteEvent, CompleteEvent); EventManager.Instance.RemoveEventListener(CustomEventType.RemoveEvent, RemoveEvent); } public override void AddButtonEvent() { bnt_shengShi.onClick.AddListener(Bnt_shengShi_onClick); CameraSelect.onValueChanged.AddListener(CameraSelect_onValueChanged); Btn_Event.onClick.AddListener(() => { EventSystemManager.Instance.isOpenUi = true; DivineSenceEventPreviewPanel.OpenPanel(); }); Btn_HeroInfomation.onClick.AddListener(() => { HeroInformationPanel.OpenPanel(); }); } public override CTask AsyncInit(object[] uiData) { Text_divineSensePoint.text = $"{AccountFileInfo.Instance.playerData.divineSensePoint}/{PlayerManager.Instance.gameConstantConfig.DetectEventCount}"; Text_ExplorationProgress.text = $"火焰山 {AccountFileInfo.Instance.playerData.senceExplorationProgress}%"; Text_EventNum.text = AccountFileInfo.Instance.playerData.eventList.Count.ToString(); ChagneShenshiBtnActive(); CreatShengShiEvent(); return base.AsyncInit(uiData); } public async override CTask Show() { await base.Show(); SkillSelectPanel.OpenSkillSelectPanel(); CameraSelect.value = 0.7f; } private void CameraSelect_onValueChanged(float value) { if (CombatController.currActiveCombat == null || CombatController.currActiveCombat.CombatCameraControllder == null) { return; } CombatController.currActiveCombat.CombatCameraControllder.CameraSelect_onValueChanged(value); } private async void Bnt_shengShi_onClick() { // EventSystemManager.Instance.DetectRandomEvents(); if (AccountFileInfo.Instance.playerData.divineSensePoint < PlayerManager.Instance.gameConstantConfig.DetectEventCount) { TipMessagePanel.OpenTipMessagePanel("神识值不够!"); return; } if (EventSystemManager.Instance.isTriggerEvent) return; EventSystemManager.Instance.isTriggerEvent = true; CombatDrive.Instance.CombatController.ChangeState(CombatController.idle); CombatController.currActiveCombat.CombatSenceController.StartPayShengShi(CombatController.currActiveCombat .CombatHeroController.playerHeroEntity.GameObject.transform); List eventLists = EventSystemManager.Instance.UseDivinesense(1); await TimerComponent.Instance.WaitAsync(800); if (eventLists == null || eventLists.Count == 0) { EventSystemManager.Instance.isTriggerEvent = false; CombatDrive.Instance.CombatController.ChangeState(CombatController.update); return; } List reeultEventLists = new List(); reeultEventLists = eventLists.Where((el) => { EventConfig eventConfig = ConfigComponent.Instance.Get(el.eventID); return eventConfig.EventType == 2; }).ToList(); int count = eventLists.Count; if (reeultEventLists != null && reeultEventLists.Count > 0) { foreach (var reeultEventList in reeultEventLists) { EventSystemManager.Instance.CompleteEvent(reeultEventList,true); eventLists.Remove(reeultEventList); } DivineSenceEventResultPanel divineSenceEventResultPanel = await DivineSenceEventResultPanel.OpenPanel(reeultEventLists,count); await divineSenceEventResultPanel.UIClosed(); } EventSystemManager.Instance.isTriggerEvent = false; CombatDrive.Instance.CombatController.ChangeState(CombatController.update); AccountFileInfo.Instance.playerData.eventList.AddRange(eventLists); AccountFileInfo.Instance.SavePlayerData(); Text_EventNum.text = AccountFileInfo.Instance.playerData.eventList.Count.ToString(); ChagneShenshiBtnActive(); CreatShengShiEvent(); } public async void CreatShengShiEvent() { UIManager.Instance.DormancyAllGComponent(); int count = AccountFileInfo.Instance.playerData.eventList.Count >=1 ? 1 : AccountFileInfo.Instance.playerData.eventList.Count; for (var i = 0; i < count; i++) { ShengShiEventWidget shengShiEventWidget = await UIManager.Instance.CreateGComponent(null,DynamicEvent); shengShiEventWidget.InitShengShiEventWidget(AccountFileInfo.Instance.playerData.eventList[i]); } } [CustomMethod(CustomMethodType.Update)] public void Update() { if (Input.GetKeyDown(KeyCode.Y)) { EventSystemManager.Instance.DetectRandomEvents(); // CombatDrive.Instance.LoadLevelBattleCombat(100001, delegate(bool isWin) // { // LogTool.Log("战斗完成"+isWin); // }); } } public async static CTask OpenPanel() { await UIManager.Instance.LoadAndOpenPanel(null); } } }