using System.Collections.Generic; using Core.Language; using Fort23.Core; using GameLogic.Hero; using OfficeOpenXml.FormulaParsing.Excel.Functions.Logical; using Utility; namespace Fort23.Mono { [UIBinding(prefab = "SelectFaBaoPanel")] public partial class SelectFaBaoPanel : UIPanel { private void Init() { } protected override void AddEvent() { } protected override void DelEvent() { } public override void AddButtonEvent() { Btn_Close.onClick.AddListener(() => { UIManager.Instance.HideUIUIPanel(this); }); Btn_Change.onClick.AddListener(() => { PlayerManager.Instance.FaBaoControl.ChangeUseFaBao(selectIndex, selectedFaBaoInfo); currentFaBaoInfo = selectedFaBaoInfo; selectedFaBaoInfo = null; CustomInit(selectIndex); }); Btn_UpGrade.onClick.AddListener(() => { if (selectedFaBaoInfo != null) { selectedFaBaoInfo.UpGrade(); UpadaFabaoBag(); UpdateUI(selectedFaBaoInfo); UpdataGradeUI(true); } }); Btn_PeiYang.onClick.AddListener(() => { BtnUpGradeRoot.SetActive(true); BtnChangeRoot.SetActive(false); UpdataGradeUI(true); }); Btn_Cancel.onClick.AddListener(() => { BtnUpGradeRoot.SetActive(false); BtnChangeRoot.SetActive(true); UpdataGradeUI(false); }); } List faBaoAttributeWidgets = new List(); List faBaoWidgets = new List(); FaBaoWidget currentFaBaoWidget = null; FaBaoInfo currentFaBaoInfo; FaBaoInfo selectedFaBaoInfo; int selectIndex; public async override CTask AsyncInit(object[] uiData) { // await UpadaFabaoBag(); return await base.AsyncInit(uiData); } private void UpdataGradeUI(bool isStartUpGrade) { if (isStartUpGrade) { AccountFileInfo.FaBaoData faBaoData = new AccountFileInfo.FaBaoData(); faBaoData.id = selectedFaBaoInfo.FaBaoData.id; faBaoData.level = selectedFaBaoInfo.FaBaoData.level + 1; FaBaoInfo nextFabaoInfo = new FaBaoInfo(faBaoData); foreach (var faBaoAttributeWidget in faBaoAttributeWidgets) { faBaoAttributeWidget.StartUpGrad(nextFabaoInfo); } Text_NextLv.text = "+1"; Text_NextPower.text = "+" + (nextFabaoInfo.qiangDu - selectedFaBaoInfo.qiangDu); Text_NextLv.gameObject.SetActive(true); Text_NextPower.gameObject.SetActive(true); } else { foreach (var faBaoAttributeWidget in faBaoAttributeWidgets) { faBaoAttributeWidget.EndUpGrade(); } Text_NextLv.gameObject.SetActive(false); Text_NextPower.gameObject.SetActive(false); } } private async CTask UpadaFabaoBag() { foreach (var faBaoAttributeWidget in faBaoWidgets) { UIManager.Instance.DormancyGComponent(faBaoAttributeWidget); } faBaoWidgets.Clear(); if (PlayerManager.Instance.FaBaoControl.myAllFaBao.Count > 0) { for (var i = 0; i < PlayerManager.Instance.FaBaoControl.myAllFaBao.Count; i++) { if (PlayerManager.Instance.FaBaoControl.myAllFaBao[i] == currentFaBaoInfo) { continue; } FaBaoWidget faBaoWidget = await UIManager.Instance.CreateGComponent(null, Content); faBaoWidget.CustomInit(PlayerManager.Instance.FaBaoControl.myAllFaBao[i]); faBaoWidget.onClick = OnClick; faBaoWidgets.Add(faBaoWidget); } NoFaBagRoot.gameObject.SetActive(false); } else { NoFaBagRoot.gameObject.SetActive(true); } } private void OnClick(ItemWidgetBasic obj) { FaBaoWidget faBao = obj as FaBaoWidget; selectedFaBaoInfo = faBao.faoInfo; Btn_Change.gameObject.SetActive(true); UpdateFaBaoUI(selectedFaBaoInfo); FaBaoInfoRoot.SetActive(true); Text_NoFabaoTips.gameObject.gameObject.SetActive(false); } public async void CustomInit(int selectIndex) { this.selectIndex = selectIndex; BtnUpGradeRoot.SetActive(false); BtnChangeRoot.SetActive(true); currentFaBaoInfo = PlayerManager.Instance.FaBaoControl.FightFaBao[selectIndex]; selectedFaBaoInfo = currentFaBaoInfo; UpdateUI(selectedFaBaoInfo); UpadaFabaoBag(); } private async void UpdateUI(FaBaoInfo faBaoInfo) { if (faBaoInfo != null) { if (currentFaBaoWidget == null) currentFaBaoWidget = await UIManager.Instance.CreateGComponent(null, CurrentFaBaoRoot); currentFaBaoWidget.onClick = OnClick; currentFaBaoWidget.CustomInit(faBaoInfo); UpdateFaBaoUI(faBaoInfo); FaBaoInfoRoot.SetActive(true); Text_NoFabaoTips.gameObject.gameObject.SetActive(false); equipTipsRoot.gameObject.SetActive(true); Btn_PeiYang.gameObject.SetActive(true); Btn_Change.gameObject.SetActive(true); } else { FaBaoInfoRoot.SetActive(false); Text_NoFabaoTips.gameObject.gameObject.SetActive(true); Btn_PeiYang.gameObject.SetActive(false); equipTipsRoot.gameObject.SetActive(false); Btn_Change.gameObject.SetActive(false); } } private async void UpdateFaBaoUI(FaBaoInfo faBaoInfo) { foreach (var faBaoAttributeWidget in faBaoAttributeWidgets) { UIManager.Instance.DormancyGComponent(faBaoAttributeWidget); } faBaoAttributeWidgets.Clear(); Text_FaBaoName.text = LanguageManager.Instance.Text(faBaoInfo.FabaoConfig.name) + " Lv." + faBaoInfo.FabaoPowerupConfig.ID; Text_Power.text = $"强度:{faBaoInfo.qiangDu}"; Text_Desc.text = UtilTools.GetString(LanguageManager.Instance.Text(faBaoInfo.SkillConfig.dec), faBaoInfo.effectValue); switch (faBaoInfo.FabaoConfig.magicAttribute) { case 1: Icon_Attribute.GetComponent().ChangeState(0); Text_Attribute.text = "金"; break; case 2: Icon_Attribute.GetComponent().ChangeState(1); Text_Attribute.text = "木"; break; case 4: Icon_Attribute.GetComponent().ChangeState(2); Text_Attribute.text = "水"; break; case 8: Icon_Attribute.GetComponent().ChangeState(3); Text_Attribute.text = "火"; break; case 16: Icon_Attribute.GetComponent().ChangeState(4); Text_Attribute.text = "土"; break; } foreach (var keyValuePair in faBaoInfo.attriButedIC) { FaBaoAttributeWidget faBaoAttributeWidget = await UIManager.Instance.CreateGComponent(null, FaBaoAttributeWidgetRoot); faBaoAttributeWidget.CusomtInit(selectedFaBaoInfo, keyValuePair.Key); faBaoAttributeWidgets.Add(faBaoAttributeWidget); } } public async static CTask OpenPanel(int selectIndex) { SelectFaBaoPanel selectFaBaoPanel = await UIManager.Instance.LoadAndOpenPanel(null); selectFaBaoPanel.CustomInit(selectIndex); return selectFaBaoPanel; } public override void Close() { foreach (var faBaoAttributeWidget in faBaoAttributeWidgets) { UIManager.Instance.DormancyGComponent(faBaoAttributeWidget); } faBaoAttributeWidgets.Clear(); foreach (var faBaoAttributeWidget in faBaoWidgets) { UIManager.Instance.DormancyGComponent(faBaoAttributeWidget); } faBaoWidgets.Clear(); UIManager.Instance.DormancyGComponent(currentFaBaoWidget); currentFaBaoWidget = null; BtnUpGradeRoot.SetActive(false); BtnChangeRoot.SetActive(true); currentFaBaoInfo = null; selectedFaBaoInfo = null; base.Close(); } } }