using System.Collections.Generic; using Core.Language; using Core.Utility; using Excel2Json; using Fort23.Core; using Fort23.UTool; using GameLogic.Combat.CombatTool; namespace Fort23.Mono { [UIBinding(prefab = "ShopPanel")] public partial class ShopPanel : UIPanel { private List _shopDatas; private List _shopGroupWidgetType1s = new List(); List _energyWidgets = new List(); ShopBtnWidget currentSelectedShopBtnWidget; List _shopBtnWidgets = new List(); private void Init() { isAddStack = true; IsShowAppBar = true; } protected override void AddEvent() { EventManager.Instance.AddEventListener(CustomEventType.ShopRefence, ShopRefence); } protected override void DelEvent() { EventManager.Instance.RemoveEventListener(CustomEventType.ShopRefence, ShopRefence); } public override CTask GetFocus() { AppBarPanel.OpenPanel(this); return base.GetFocus(); } public async override CTask AsyncInit(object[] uiData) { ShopGroupConfig[] shopGroupConfigs = ConfigComponent.Instance.GetAll(); foreach (var shopGroupConfig in shopGroupConfigs) { ShopBtnWidget shopBtnWidget = await UIManager.Instance.CreateGComponent(null, ShopBtnContent); shopBtnWidget.CustomInit(shopGroupConfig); shopBtnWidget.OnClick = OnClick; _shopBtnWidgets.Add(shopBtnWidget); if (currentSelectedShopBtnWidget == null) { currentSelectedShopBtnWidget = shopBtnWidget; } } ShopBtnContent.GetComponent().GetChildObj(); currentSelectedShopBtnWidget.OnPointerClick(); // isPauseCombat = uiData[0] as bool? == true; return await base.AsyncInit(uiData); } private async void OnClick(ItemWidgetBasic obj) { ShopBtnWidget shopBtnWidget = obj as ShopBtnWidget; Text_Title.text = LanguageManager.Instance.Text(shopBtnWidget.ShopGroupConfig.shopName); ShopBtnContent.GetComponent().ClickWidget(shopBtnWidget.own.GetComponent()); currentSelectedShopBtnWidget = shopBtnWidget; foreach (var shopGroupWidgetType1 in _shopGroupWidgetType1s) { UIManager.Instance.DormancyGComponent(shopGroupWidgetType1); } _shopGroupWidgetType1s.Clear(); _shopDatas = ShopManger.Instance.GetAllShopConfig(); foreach (var shopData in _shopDatas) { ShopConfig shopConfig = ConfigComponent.Instance.Get(shopData.id); if (shopConfig.shopGroup == shopBtnWidget.ShopGroupConfig.ID) { // if (shopData.id == 1 || shopData.id == 5) // { // ShopGroupWidgetType1 shopGroupWidgetType1 = // await UIManager.Instance.CreateGComponentForObject(ShopGroupWidgetType1, // null, Content, isInstance: true); // _shopGroupWidgetType1s.Add(shopGroupWidgetType1); // await shopGroupWidgetType1.CustomInit(shopData); // } // else { ShopGroupWidgetType1 shopGroupWidgetType1 = await UIManager.Instance.CreateGComponentForObject(ShopGroupWidgetType2, null, Content, isInstance: true); _shopGroupWidgetType1s.Add(shopGroupWidgetType1); await shopGroupWidgetType1.CustomInit(shopData); } } } } public async override CTask Show() { await base.Show(); foreach (var widget in _energyWidgets) { UIManager.Instance.DormancyGComponent(widget); } _energyWidgets.Clear(); EnergyWidget energyWidget = await UIManager.Instance.CreateGComponent(null, Group_ResourceBar); energyWidget.CustomInit(GlobalParam.Item_Coin_ID); _energyWidgets.Add(energyWidget); energyWidget = await UIManager.Instance.CreateGComponent(null, Group_ResourceBar); energyWidget.CustomInit(GlobalParam.Item_Diamond_ID); _energyWidgets.Add(energyWidget); } private void ShopRefence(IEventData e) { currentSelectedShopBtnWidget.OnPointerClick(); } public override void AddButtonEvent() { Btn_Close.onClick.AddListener(() => { UIManager.Instance.HideUIUIPanel(); }); } public override void Close() { foreach (var shopGroupWidgetType1 in _shopGroupWidgetType1s) { UIManager.Instance.DormancyGComponent(shopGroupWidgetType1); } _shopGroupWidgetType1s.Clear(); foreach (var widget in _energyWidgets) { UIManager.Instance.DormancyGComponent(widget); } _energyWidgets.Clear(); foreach (var shopBtnWidget in _shopBtnWidgets) { UIManager.Instance.DormancyGComponent(shopBtnWidget); } _shopBtnWidgets.Clear(); currentSelectedShopBtnWidget = null; // MainUIPanel mainUIPanel = UIManager.Instance.GetComponent(); // if (mainUIPanel != null) // { // mainUIPanel.shopDatas = AccountFileInfo.Instance.playerData.shopDatas; // mainUIPanel.FindShop(); // } base.Close(); } public static async CTask OpenPanel(bool isPauseCombat = false) { ShopPanel shopPanel = await UIManager.Instance.LoadAndOpenPanel(null, uiData: new object[] { isPauseCombat }); return shopPanel; } } }