using System; 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; namespace Fort23.Mono { [UIBinding(prefab = "PlacesInfoPanel")] public partial class PlacesInfoPanel : UIPanel { private int PlacesId; private SmallPlacesConfig smallPlacesConfig; private PlacesConfig placesConfig; List placesInfoWidgets = new List(); private Action callBack; public bool isChange; private void Init() { isPopUi = true; isAddStack = false; } protected override void AddEvent() { } protected override void DelEvent() { } public override void AddButtonEvent() { Btn_Close.onClick.AddListener(() => { UIManager.Instance.HideUIUIPanel(this); }); } public async override CTask AsyncInit(object[] uiData) { PlacesId = (int)(uiData[0]); callBack = uiData[1] as Action; isChange = false; placesConfig = ConfigComponent.Instance.Get(PlacesId); foreach (var placesConfigSmallPlacersId in placesConfig.SmallPlacersIds) { PlacesInfoWidget shopBtnWidget = await UIManager.Instance.CreateGComponent(null, Content); shopBtnWidget.CustomInit(placesConfigSmallPlacersId, callBack); placesInfoWidgets.Add(shopBtnWidget); } BigMapConfig bigMapConfig = ConfigComponent.Instance.Get(placesConfig.bigMapID); Text_BigMapName.text = LanguageManager.Instance.Text(bigMapConfig.mapName); Text_PlacesName.text = LanguageManager.Instance.Text(placesConfig.placeName); AccountFileInfo.PlacesData placesData = PlayerManager.Instance.GetPlacesData(placesConfig.ID); int jindu = placesData == null ? 0 : placesData.progress; Text_PlacesComplteProgress.text = LanguageManager.Instance.Text(10378, (jindu/placesConfig.TotalScore*100f).ToString("0")); return await base.AsyncInit(uiData); } public static async CTask OpenPanel(int placesId, Action callBack) { await UIManager.Instance.LoadAndOpenPanel(null, UILayer.Top, uiData: new object[] { placesId, callBack }, isShowBG: true); } public async override CTask Close() { foreach (var shopBtnWidget in placesInfoWidgets) { UIManager.Instance.DormancyGComponent(shopBtnWidget); } placesInfoWidgets.Clear(); if (!isChange) { callBack?.Invoke(false); callBack = null; } await base.Close(); } } }