using System.Collections.Generic; using System.Linq; using Core.Language; 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 { bool isShowSkillPanel = false; private ShengShiEventWidget shengShiEventWidget; private void Init() { isAddStack = true; IsShowAppBar = true; } protected override void AddEvent() { EventManager.Instance.AddEventListener(CustomEventType.ShengShiOnClick, ShengShiOnClick); EventManager.Instance.AddEventListener(CustomEventType.CompleteEvent, CompleteEvent); EventManager.Instance.AddEventListener(CustomEventType.RemoveEvent, RemoveEvent); EventManager.Instance.AddEventListener(CustomEventType.ChangeMap, ChangeMap); } public async override CTask GetFocus() { await AppBarPanel.OpenPanel(this); base.GetFocus(); } private void RemoveEvent(IEventData e) { Text_EventNum.text = AccountFileInfo.Instance.playerData.eventList.Count.ToString(); CreatShengShiEvent(); ChagneShenshiBtnActive(); } private void CompleteEvent(IEventData e) { ChangeMap(null); Text_EventNum.text = AccountFileInfo.Instance.playerData.eventList.Count.ToString(); CreatShengShiEvent(); ChagneShenshiBtnActive(); } private void ChagneShenshiBtnActive() { Btn_Event.gameObject.SetActive(AccountFileInfo.Instance.playerData.eventList.Count > 0); } protected override void DelEvent() { EventManager.Instance.RemoveEventListener(CustomEventType.CompleteEvent, CompleteEvent); EventManager.Instance.RemoveEventListener(CustomEventType.RemoveEvent, RemoveEvent); EventManager.Instance.RemoveEventListener(CustomEventType.ShengShiOnClick, ShengShiOnClick); EventManager.Instance.RemoveEventListener(CustomEventType.ChangeMap, ChangeMap); } public override void AddButtonEvent() { Btn_Chat.onClick.AddListener(() => { ChatPanel.OpenPanel(); }); CameraSelect.onValueChanged.AddListener(CameraSelect_onValueChanged); Btn_Event.onClick.AddListener(() => { EventSystemManager.Instance.isOpenUi = true; DivineSenceEventPreviewPanel.OpenPanel(); }); Btn_Map.onClick.AddListener(() => { LevelChoosePanel.OpenPanel(); }); } public override CTask AsyncInit(object[] uiData) { ChagneShenshiBtnActive(); CreatShengShiEvent(); ChangeMap(null); return base.AsyncInit(uiData); } public async override CTask Show() { await base.Show(); bool isHIde = false; foreach (var skillInfo in PlayerManager.Instance.GongFaControl.allUseSkill) { if (skillInfo != null) { isHIde = true; break; } } if (!isHIde && !isShowSkillPanel) { isShowSkillPanel = true; SkillSelectPanel.OpenSkillSelectPanel(); } CameraSelect.value = 0.2f; Text_EventNum.text = AccountFileInfo.Instance.playerData.eventList.Count.ToString(); Text_Jingjie.text = LanguageManager.Instance.Text(PlayerManager.Instance.myHero.powerUpConfig.jingjieLanIDs[0]) + LanguageManager.Instance.Text(PlayerManager.Instance.myHero.powerUpConfig.jingjieLanIDs[1]) + LanguageManager.Instance.Text(PlayerManager.Instance.myHero.powerUpConfig.jingjieLanIDs[2]); Slider_Exp.maxValue = PlayerManager.Instance.myHero.powerUpConfig.levelUpExp; // UpdateTaskInfo(); } public void ChangeMap(IEventData e) { PlacesConfig placesConfig = ConfigComponent.Instance.Get(PlayerManager.Instance.CurrentPlaces.id); Text_ExplorationProgress.text = $"{LanguageManager.Instance.Text(placesConfig.placeName)} {PlayerManager.Instance.CurrentPlaces.progress}%"; Slider_Map.value = PlayerManager.Instance.CurrentPlaces.progress; } private void CameraSelect_onValueChanged(float value) { if (CombatController.currActiveCombat == null || CombatController.currActiveCombat.CombatCameraControllder == null) { return; } CombatController.currActiveCombat.CombatCameraControllder.CameraSelect_onValueChanged(value); } private void ShengShiOnClick(IEventData e) { Text_EventNum.text = AccountFileInfo.Instance.playerData.eventList.Count.ToString(); ChagneShenshiBtnActive(); CreatShengShiEvent(); } public async void CreatShengShiEvent() { int count = AccountFileInfo.Instance.playerData.eventList.Count >= 1 ? 1 : AccountFileInfo.Instance.playerData.eventList.Count; if (count >= 1) { AccountFileInfo.EventList eventList = EventSystemManager.Instance.GetMainEventDta() == null ? null : EventSystemManager.Instance.GetMainEventDta(); eventList = eventList == null ? AccountFileInfo.Instance.playerData.eventList[0] : eventList; if (shengShiEventWidget == null) { shengShiEventWidget = await UIManager.Instance.CreateGComponent(null, DynamicEvent); } shengShiEventWidget.InitShengShiEventWidget(eventList); } } [CustomMethod(CustomMethodType.Update)] public void Update() { if (Input.GetKeyDown(KeyCode.Y)) { EventSystemManager.Instance.DetectRandomEvents(); } int currentMiao = (int)((TimeHelper.ClientNow() - PlayerManager.Instance.myHero.heroData.upTime) / 1000); int allexp = currentMiao * PlayerManager.Instance.myHero.powerUpConfig.AutoXiuwei; Slider_Exp.value = PlayerManager.Instance.myHero.heroData.exp + allexp; } public async static CTask OpenPanel() { await UIManager.Instance.LoadAndOpenPanel(null); } public override void Close() { UIManager.Instance.DormancyGComponent(shengShiEventWidget); shengShiEventWidget = null; base.Close(); } } }