| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646 | using System.Collections.Generic;using System.Linq;using Core.Audio;using Core.Language;using Excel2Json;using Fort23.Core;using Fort23.UTool;using GameLogic.Hero;using OfficeOpenXml.FormulaParsing.Excel.Functions.Logical;using UnityEngine;using Utility;namespace Fort23.Mono{    [UIBinding(prefab = "SelectFaBaoPanel")]    public partial class SelectFaBaoPanel : UIPanel    {        List<FaBaoSkillWidget> faBaoSkillWidgets = new List<FaBaoSkillWidget>();        List<FaBaoAttributeWidget> faBaoAttributeWidgets = new List<FaBaoAttributeWidget>();        List<ItemWidgetType1> itemWidgetType1s = new List<ItemWidgetType1>();        List<FaBaoWidget> faBaoWidgets = new List<FaBaoWidget>();        FaBaoWidget currentFaBaoWidget = null;        FaBaoInfo currentFaBaoInfo;        FaBaoInfo selectedFaBaoInfo;        int selectIndex;        private bool isUpGrade = false;        private List<FaBaoInfo> shownFaBaoInfos;        private void Init()        {            isAddStack = true;            IsShowAppBar = false;        }        public async override CTask GetFocus()        {            TitlePanel.ClosePanel();            // await AppBarPanel.OpenPanel(this);            base.GetFocus();        }        protected override void AddEvent()        {        }        protected override void DelEvent()        {        }        public override void AddButtonEvent()        {            Btn_Close.onClick.AddListener(() =>            {                UIManager.Instance.HideUIUIPanel(this);                AudioManager.Instance.PlayAudio("ui_fanhui.wav");            });            Btn_Change.onClick.AddListener(() =>            {                if (selectedFaBaoInfo.FaBaoData.useIndex != -1)                {                    TipMessagePanel.OpenTipMessagePanel("当前法宝已经被装备");                    return;                }                PlayerManager.Instance.FaBaoControl.ChangeUseFaBao(selectIndex, selectedFaBaoInfo);                currentFaBaoInfo = selectedFaBaoInfo;                selectedFaBaoInfo = null;                CustomInit(selectIndex);                UpdateBjUI(false);                AudioManager.Instance.PlayAudio("ui_zbfbcg.wav");                SetSelectIcon(currentFaBaoWidget.SelectRoot);            });            Btn_UpGrade.onClick.AddListener(() =>            {                if (selectedFaBaoInfo != null)                {                    if (selectedFaBaoInfo.FabaoPowerupConfig.ID >=                        ConfigComponent.Instance.GetAll<FabaoPowerupConfig>().Length)                    {                        TipMessagePanel.OpenTipMessagePanel(10338);                        return;                    }                    if (PlayerManager.Instance.myHero.powerUpConfig.ID < selectedFaBaoInfo.FabaoPowerupConfig.NeedLv)                    {                        string jingjie =                            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]);                        TipMessagePanel.OpenTipMessagePanel(LanguageManager.Instance.Text(10337, jingjie));                        return;                    }                    for (var i = 0; i < selectedFaBaoInfo.FabaoPowerupConfig.PowerupItemIDs.Length; i++)                    {                        if (!PlayerManager.Instance.BagController.IsEnough(                                selectedFaBaoInfo.FabaoPowerupConfig.PowerupItemIDs[i],                                selectedFaBaoInfo.FabaoPowerupConfig.PowerupItemCosts[i]))                        {                            ItemSourcePanel.OpenPanel(selectedFaBaoInfo.FabaoPowerupConfig.PowerupItemIDs[i]);                            // TipMessagePanel.OpenTipMessagePanel("道具不足");                            return;                        }                    }                    ItemConfig itemConfig =                        ConfigComponent.Instance.Get<ItemConfig>(selectedFaBaoInfo.FabaoConfig.ItemID);                    ItemConfig itemConfig2 = ConfigComponent.Instance.Get<ItemConfig>(itemConfig.associateVlaue[0]);                    if (selectedFaBaoInfo.FabaoPowerupConfig.PromotePieceNum != null &&                        selectedFaBaoInfo.FabaoPowerupConfig.PromotePieceNum[itemConfig2.quality - 1] != -1)                    {                        if (!PlayerManager.Instance.BagController.IsEnough(itemConfig.associateVlaue[0],                                selectedFaBaoInfo.FabaoPowerupConfig.PromotePieceNum[itemConfig2.quality - 1]))                        {                            ItemSourcePanel.OpenPanel(itemConfig.associateVlaue[0]);                            TipMessagePanel.OpenTipMessagePanel("道具不足");                            return;                        }                    }                    selectedFaBaoInfo.UpGrade();                    fx_ui_fabao_shengji.gameObject.SetActive(true);                    fx_ui_fabao_shengji.Play();                    UpdateCurrentFaBaoWidget();                    UpadaFabaoBag();                    UpdateUI(selectedFaBaoInfo);                    UpdataGradeUI(true);                    foreach (var faBaoSkillWidget in faBaoSkillWidgets)                    {                        if (selectedFaBaoInfo.FabaoPowerupConfig.ID ==                            faBaoSkillWidget._faBaoInfo.FabaoPowerupConfig.ID)                        {                            faBaoSkillWidget.fx_ui_fabao_tiaomu.gameObject.SetActive(true);                            faBaoSkillWidget.fx_ui_fabao_tiaomu.Play();                        }                    }                    AudioManager.Instance.PlayAudio("ui_fbgfsj.wav");                }            });            Btn_PeiYang.onClick.AddListener(() =>            {                isUpGrade = true;                BtnUpGradeRoot.SetActive(true);                BtnChangeRoot.SetActive(false);                UpdataGradeUI(true);                UpdateBjUI(false);            });            Btn_Cancel.onClick.AddListener(() =>            {                isUpGrade = false;                BtnUpGradeRoot.SetActive(false);                BtnChangeRoot.SetActive(true);                UpdataGradeUI(false);                UpdateBjUI(true);            });        }        public async override CTask<bool> 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.color = new Color32(15, 241, 150, 255);                Text_NextPower.color = new Color32(15, 241, 150, 255);                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 void UpdateBjUI(bool isBj)        {            if (isBj)            {                if (currentFaBaoInfo != selectedFaBaoInfo && selectedFaBaoInfo != null)                {                    if (currentFaBaoInfo == null ||                        selectedFaBaoInfo.FabaoPowerupConfig.ID > currentFaBaoInfo.FabaoPowerupConfig.ID)                    {                        Text_NextLv.gameObject.SetActive(true);                        Text_NextLv.text =                            $"+{selectedFaBaoInfo.FabaoPowerupConfig.ID - currentFaBaoInfo.FabaoPowerupConfig.ID}";                        Text_NextLv.color = new Color32(15, 241, 150, 255);                        // Icon_LvBj.icon_name = "dec_fbjia";                    }                    else if (selectedFaBaoInfo.FabaoPowerupConfig.ID < currentFaBaoInfo.FabaoPowerupConfig.ID)                    {                        Text_NextLv.text =                            $"{selectedFaBaoInfo.FabaoPowerupConfig.ID - currentFaBaoInfo.FabaoPowerupConfig.ID}";                        Text_NextLv.color = new Color32(235, 110, 109, 255);                        Text_NextLv.gameObject.SetActive(true);                        // Icon_LvBj.icon_name = "dec_fbjian";                    }                    else                    {                        Text_NextLv.gameObject.SetActive(false);                    }                    if (currentFaBaoInfo == null || selectedFaBaoInfo.qiangDu > currentFaBaoInfo.qiangDu)                    {                        Text_NextPower.text = $"+{selectedFaBaoInfo.qiangDu - currentFaBaoInfo.qiangDu}";                        Text_NextPower.color = new Color32(15, 241, 150, 255);                        Text_NextPower.gameObject.SetActive(true);                        // Icon_PowrBj.icon_name = "dec_bjia";                    }                    else if (selectedFaBaoInfo.qiangDu < currentFaBaoInfo.qiangDu)                    {                        Text_NextPower.text = $"{selectedFaBaoInfo.qiangDu - currentFaBaoInfo.qiangDu}";                        Text_NextPower.color = new Color32(235, 110, 109, 255);                        Text_NextPower.gameObject.SetActive(true);                        // Icon_PowrBj.icon_name = "dec_fbjian";                    }                    else                    {                        Text_NextPower.gameObject.SetActive(false);                    }                    foreach (var faBaoAttributeWidget in faBaoAttributeWidgets)                    {                        faBaoAttributeWidget.StartBj(currentFaBaoInfo);                    }                }                else                {                    Text_NextPower.gameObject.SetActive(false);                    Text_NextLv.gameObject.SetActive(false);                    foreach (var faBaoAttributeWidget in faBaoAttributeWidgets)                    {                        faBaoAttributeWidget.EndBj();                    }                }            }            else            {                Icon_LvBj.gameObject.SetActive(false);                Icon_PowrBj.gameObject.SetActive(false);                foreach (var faBaoAttributeWidget in faBaoAttributeWidgets)                {                    faBaoAttributeWidget.EndBj();                }            }        }        private async CTask UpadaFabaoBag()        {            foreach (var faBaoAttributeWidget in faBaoWidgets)            {                UIManager.Instance.DormancyGComponent(faBaoAttributeWidget);            }            faBaoWidgets.Clear();            shownFaBaoInfos = PlayerManager.Instance.FaBaoControl.myAllFaBao.ToList();            shownFaBaoInfos.Sort((l, r) =>            {                if (l.FaBaoData.useIndex == -1 && r.FaBaoData.useIndex > -1)                {                    return -1;                }                if (l.FaBaoData.useIndex > -1 && r.FaBaoData.useIndex == 1)                {                    return 1;                }                return r.FabaoPowerupConfig.ID.CompareTo(l.FabaoPowerupConfig.ID);            });            if (shownFaBaoInfos.Count > 0)            {                for (var i = 0; i < shownFaBaoInfos.Count; i++)                {                    if (shownFaBaoInfos[i] == currentFaBaoInfo)                    {                        continue;                    }                    FaBaoWidget faBaoWidget = await UIManager.Instance.CreateGComponent<FaBaoWidget>(null, Content);                    faBaoWidget.CustomInit(shownFaBaoInfos[i], true);                    faBaoWidget.OnClick = OnClick;                    faBaoWidgets.Add(faBaoWidget);                }                NoFaBagRoot.gameObject.SetActive(false);            }            else            {                NoFaBagRoot.gameObject.SetActive(true);            }        }        private async void OnClick(ItemWidgetBasic obj)        {            FaBaoWidget faBao = obj as FaBaoWidget;            selectedFaBaoInfo = faBao.faoInfo;            Btn_Change.gameObject.SetActive(true);            Btn_PeiYang.gameObject.SetActive(true);            await UpdateUI(selectedFaBaoInfo);            FaBaoInfoRoot.SetActive(true);            Text_NoFabaoTips.gameObject.gameObject.SetActive(false);            if (!isUpGrade)            {                UpdateBjUI(true);            }            SetSelectIcon(faBao.SelectRoot);            RedDotComType01.CustomInit(10, selectedFaBaoInfo);        }        private void SetSelectIcon(Transform root)        {            if (root != null)            {                Icon_Select.transform.SetParent(root.transform, false);                Icon_Select.GetComponent<RectTransform>().anchoredPosition = Vector2.zero;                Icon_Select.gameObject.SetActive(true);            }            else            {                Icon_Select.transform.SetParent(transform, false);                Icon_Select.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();            await UpdateCurrentFaBaoWidget();            if (currentFaBaoWidget != null)                SetSelectIcon(currentFaBaoWidget.SelectRoot);            RedDotComType01.CustomInit(10, selectedFaBaoInfo);        }        private async CTask UpdateCurrentFaBaoWidget()        {            if (currentFaBaoInfo != null)            {                if (currentFaBaoWidget == null)                    currentFaBaoWidget = await UIManager.Instance.CreateGComponent<FaBaoWidget>(null, CurrentFaBaoRoot);                currentFaBaoWidget.OnClick = OnClick;                currentFaBaoWidget.CustomInit(currentFaBaoInfo, false);                equipTipsRoot.gameObject.SetActive(true);            }            else            {                UIManager.Instance.DormancyGComponent(currentFaBaoWidget);                equipTipsRoot.gameObject.SetActive(false);            }        }        private async CTask UpdateUI(FaBaoInfo faBaoInfo)        {            if (faBaoInfo != null)            {                FaBaoInfoRoot.SetActive(true);                Text_NoFabaoTips.gameObject.gameObject.SetActive(false);                if (faBaoInfo.FaBaoData.useIndex != -1)                {                    Btn_Change.gameObject.SetActive(false);                    // Btn_Change.transform.Gray(true);                }                else                {                    Btn_Change.gameObject.SetActive(true);                    // Btn_Change.transform.RecoverColor();                }                Btn_PeiYang.gameObject.SetActive(true);                //Btn_Change.gameObject.SetActive(true);                await UpdateFaBaoUI(faBaoInfo);            }            else            {                FaBaoInfoRoot.SetActive(false);                Text_NoFabaoTips.gameObject.gameObject.SetActive(true);                Btn_Change.gameObject.SetActive(false);                Btn_PeiYang.gameObject.SetActive(false);            }        }        private async CTask UpdateFaBaoUI(FaBaoInfo faBaoInfo)        {            using (CTaskAwaitBuffer cts = new CTaskAwaitBuffer())            {                Text_FaBaoName.text = LanguageManager.Instance.Text(faBaoInfo.FabaoConfig.name) + " Lv." +                                      faBaoInfo.FabaoPowerupConfig.ID;                Text_Power.text = $"{LanguageManager.Instance.Text(10197)}:{faBaoInfo.qiangDu}";                Text_Desc.text = UtilTools.GetString(LanguageManager.Instance.Text(faBaoInfo.SkillConfig.dec),                    faBaoInfo.effectValue);                if (faBaoInfo.FabaoPowerupConfig.ID >= ConfigComponent.Instance.GetAll<FabaoPowerupConfig>().Length)                {                    Text_UpGrade.gameObject.SetActive(false);                    ItemRoot.gameObject.SetActive(false);                    Text_ManTips.gameObject.SetActive(true);                }                else                {                    AccountFileInfo.FaBaoData _faBaoData = new AccountFileInfo.FaBaoData();                    _faBaoData.id = faBaoInfo.FaBaoData.id;                    _faBaoData.level = faBaoInfo.FabaoPowerupConfig.ID + 1;                    FaBaoInfo _nextFaBaoInfo = new FaBaoInfo(_faBaoData);                    cts.AddTask(CreatItemWidgetType1(faBaoInfo));                    //tupo                    if (_nextFaBaoInfo.FabaoPowerupConfig.SkillLevel != selectedFaBaoInfo.FabaoPowerupConfig.SkillLevel)                    {                        Text_UpGrade.text = LanguageManager.Instance.Text(10205);                    }                    else                    {                        Text_UpGrade.text = LanguageManager.Instance.Text(10203);                    }                    Text_UpGrade.gameObject.SetActive(true);                    ItemRoot.gameObject.SetActive(true);                    Text_ManTips.gameObject.SetActive(false);                }                Icon_FaBaoIcon.icon_name = faBaoInfo.SkillConfig.icon;                switch (faBaoInfo.FabaoConfig.magicAttribute)                {                    case 1:                        Icon_Attribute.icon_name = "dec_jin2";                        break;                    case 2:                        Icon_Attribute.icon_name = "dec_mu2";                        break;                    case 4:                        Icon_Attribute.icon_name = "dec_shui2";                        break;                    case 8:                        Icon_Attribute.icon_name = "dec_huo2";                        break;                    case 16:                        Icon_Attribute.icon_name = "dec_tu2";                        break;                }                cts.AddTask(CreatFaBaoSkillWidget(faBaoInfo));                cts.AddTask(CreatFaBaoAttributeWidget(faBaoInfo));                await cts.WaitAll();            }        }        private async CTask CreatItemWidgetType1(FaBaoInfo faBaoInfo)        {            foreach (var itemWidgetType1 in itemWidgetType1s)            {                UIManager.Instance.DormancyGComponent(itemWidgetType1);            }            itemWidgetType1s.Clear();            for (var i = 0; i < faBaoInfo.FabaoPowerupConfig.PowerupItemIDs.Length; i++)            {                ItemWidgetType1 itemWidgetType1 =                    await UIManager.Instance.CreateGComponentForObject<ItemWidgetType1>(ItemWidgetType1Game, null,                        ItemRoot);                itemWidgetType1.CustomInit(faBaoInfo.FabaoPowerupConfig.PowerupItemIDs[i],                    faBaoInfo.FabaoPowerupConfig.PowerupItemCosts[i]);                itemWidgetType1s.Add(itemWidgetType1);            }            ItemConfig itemConfig =                ConfigComponent.Instance.Get<ItemConfig>(selectedFaBaoInfo.FabaoConfig.ItemID);            ItemConfig itemConfig2 = ConfigComponent.Instance.Get<ItemConfig>(itemConfig.associateVlaue[0]);            //大突破需要消耗对应的法宝碎片            if (faBaoInfo.FabaoPowerupConfig.PromotePieceNum != null &&                faBaoInfo.FabaoPowerupConfig.PromotePieceNum[itemConfig2.quality - 1] != -1)            {                ItemWidgetType1 itemWidgetType1 =                    await UIManager.Instance.CreateGComponentForObject<ItemWidgetType1>(ItemWidgetType1Game, null,                        ItemRoot);                itemWidgetType1.CustomInit(itemConfig.associateVlaue[0],                    faBaoInfo.FabaoPowerupConfig.PromotePieceNum[itemConfig2.quality - 1]);                itemWidgetType1s.Add(itemWidgetType1);            }        }        private async CTask CreatFaBaoSkillWidget(FaBaoInfo faBaoInfo)        {            foreach (var faBaoSkillWidget in faBaoSkillWidgets)            {                UIManager.Instance.DormancyGComponent(faBaoSkillWidget);            }            faBaoSkillWidgets.Clear();            List<FabaoPowerupConfig> fabaoPowerupConfigs =                ConfigComponent.Instance.GetAll<FabaoPowerupConfig>().ToList();            var fanappower = fabaoPowerupConfigs.GroupBy(f => f.SkillLevel)                .Select(g => new { config = g.OrderBy(f => f.ID).FirstOrDefault() }).ToList();            foreach (var powerupConfigse in fanappower)            {                if (powerupConfigse.config.ID == 1)                {                    continue;                }                AccountFileInfo.FaBaoData faBaoData = new AccountFileInfo.FaBaoData();                faBaoData.id = selectedFaBaoInfo.FaBaoData.id;                faBaoData.level = powerupConfigse.config.ID;                FaBaoInfo _faBaoInfo = new FaBaoInfo(faBaoData);                FaBaoSkillWidget faBaoSkillWidget =                    await UIManager.Instance.CreateGComponent<FaBaoSkillWidget>(null, SkillContent);                faBaoSkillWidget.CustomInit(selectedFaBaoInfo, _faBaoInfo);                faBaoSkillWidgets.Add(faBaoSkillWidget);            }        }        private async CTask CreatFaBaoAttributeWidget(FaBaoInfo faBaoInfo)        {            foreach (var faBaoAttributeWidget in faBaoAttributeWidgets)            {                UIManager.Instance.DormancyGComponent(faBaoAttributeWidget);            }            faBaoAttributeWidgets.Clear();            foreach (var keyValuePair in faBaoInfo.attriButedIC)            {                FaBaoAttributeWidget faBaoAttributeWidget =                    await UIManager.Instance.CreateGComponent<FaBaoAttributeWidget>(null, FaBaoAttributeWidgetRoot);                faBaoAttributeWidget.CusomtInit(selectedFaBaoInfo, keyValuePair.Key);                faBaoAttributeWidgets.Add(faBaoAttributeWidget);            }        }        public async static CTask<SelectFaBaoPanel> OpenPanel(int selectIndex)        {            SelectFaBaoPanel selectFaBaoPanel = await UIManager.Instance.LoadAndOpenPanel<SelectFaBaoPanel>(null);            selectFaBaoPanel.CustomInit(selectIndex);            return selectFaBaoPanel;        }        public async override CTask Close()        {            foreach (var faBaoAttributeWidget in faBaoAttributeWidgets)            {                UIManager.Instance.DormancyGComponent(faBaoAttributeWidget);            }            faBaoAttributeWidgets.Clear();            foreach (var faBaoAttributeWidget in faBaoWidgets)            {                UIManager.Instance.DormancyGComponent(faBaoAttributeWidget);            }            faBaoWidgets.Clear();            foreach (var faBaoSkillWidget in faBaoSkillWidgets)            {                UIManager.Instance.DormancyGComponent(faBaoSkillWidget);            }            faBaoSkillWidgets.Clear();            foreach (var itemWidgetType1 in itemWidgetType1s)            {                UIManager.Instance.DormancyGComponent(itemWidgetType1);            }            itemWidgetType1s.Clear();            fx_ui_fabao_shengji.gameObject.SetActive(false);            UIManager.Instance.DormancyGComponent(currentFaBaoWidget);            UpdataGradeUI(false);            UpdateBjUI(false);            currentFaBaoWidget = null;            BtnUpGradeRoot.SetActive(false);            BtnChangeRoot.SetActive(true);            currentFaBaoInfo = null;            selectedFaBaoInfo = null;            SetSelectIcon(null);            await base.Close();        }    }}
 |