| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197 | using System.Collections.Generic;using System.Linq;using Excel2Json;using Fort23.Core;using Fort23.UTool;using GameLogic.Combat;using GameLogic.Combat.CombatTool;using UnityEngine;namespace Fort23.Mono{    [UIBinding(prefab = "TowerPanel")]    public partial class TowerPanel : UIPanel, IScrollListContent    {        public AccountFileInfo.TowerData _towerData;        public List<TowerInfoConfig> towerInfoConfigps;        public TowerLevelWidget currentLevelWidget;        private TowerConfig towerConfig;        public int ulockId;        private void Init()        {            isAddStack = true;            IsShowAppBar = false;        }        protected override void AddEvent()        {        }        protected override void DelEvent()        {        }        public override void AddButtonEvent()        {            Btn_Start.onClick.AddListener(async () =>            {                if ((currentLevelWidget.lastTowerLevelData == null ||                     !currentLevelWidget.lastTowerLevelData.finish) &&                    currentLevelWidget._towerInfoConfig.ID != 1)                {                    TipMessagePanel.OpenTipMessagePanel("上一关还没有解锁!");                    return;                }                if (currentLevelWidget.towerLevelData == null)                {                    AccountFileInfo.TowerLevelData towerLevelData = new AccountFileInfo.TowerLevelData();                    towerLevelData.id = currentLevelWidget._towerInfoConfig.ID;                    _towerData.towerLevelDatas.Add(towerLevelData);                    currentLevelWidget.towerLevelData = towerLevelData;                    AccountFileInfo.Instance.SavePlayerData();                }                CombatDrive.Instance.LoadLevelBattleCombat(currentLevelWidget._towerInfoConfig.typeValue[0], true,                    delegate(bool isWin)                    {                        LogTool.Log("战斗完成" + isWin);                        if (isWin)                        {                            currentLevelWidget.towerLevelData.finish = true;                            AccountFileInfo.Instance.SavePlayerData();                            CustomInit();                        }                    });            });            Btn_Back.onClick.AddListener(() => { UIManager.Instance.HideUIUIPanel(this); });        }        public override CTask<bool> AsyncInit(object[] uiData)        {            int towerId = (int)uiData[0];            towerConfig = ConfigComponent.Instance.Get<TowerConfig>(towerId);            _towerData = AccountFileInfo.Instance.playerData.TowerDatas.FirstOrDefault(td => td.id == towerId);            if (_towerData == null)            {                _towerData = new AccountFileInfo.TowerData();                _towerData.id = towerId;                AccountFileInfo.Instance.playerData.TowerDatas.Add(_towerData);                AccountFileInfo.Instance.SavePlayerData();            }            CustomInit();            return base.AsyncInit(uiData);        }        public void CustomInit()        {            UIManager.Instance.DormancyAllGComponent<TowerLevelWidget>();            var configs = ConfigComponent.Instance.GetAll<TowerInfoConfig>();            towerInfoConfigps = configs.Where(t => t.groupId == towerConfig.towerinfoIdGroup).ToList();            Vector2 size = Slider_Stage.GetComponent<RectTransform>().sizeDelta;            size.y = (141.2778f + 40) * (towerInfoConfigps.Count - 1);            ulockId = _towerData.GetMaxUlockid();            TowerInfoConfig ulockTowerInfoConfig = default;            if (ulockId == 0)            {                ulockTowerInfoConfig = towerInfoConfigps[0];                ulockId = ulockTowerInfoConfig.ID;            }            else            {                ulockTowerInfoConfig = ConfigComponent.Instance.Get<TowerInfoConfig>(ulockId);            }            Slider_Stage.GetComponent<RectTransform>().sizeDelta = size;            Slider_Stage.value = (float)(ulockTowerInfoConfig.level - 1) /                                 (towerInfoConfigps.Count - 1);            Content.Init(this, towerInfoConfigps.Count, towerInfoConfigps.Count - 1 - ulockTowerInfoConfig.level, true);        }        public static async CTask OpenPanel(int id)        {            TowerPanel towerPanel = await UIManager.Instance.LoadAndOpenPanel<TowerPanel>(null, uiData: new object[] { id });        }        public async CTask<IScorllListWidget> GetIScorllListWidget(int index, RectTransform root)        {            int currInsex = index;            if (currInsex < 0 || currInsex >= towerInfoConfigps.Count)            {                return null;            }            TowerLevelWidget woc1 =                await UIManager.Instance.CreateGComponent<TowerLevelWidget>(null, ContentRoot);            woc1.OnClick = OnClick;            woc1.CustomInit(_towerData, towerInfoConfigps[towerInfoConfigps.Count - 1 - currInsex]);            if (towerInfoConfigps[towerInfoConfigps.Count - 1 - currInsex].ID == ulockId)            {                woc1.OnPointerClick();            }            return woc1;        }        private void OnClick(ItemWidgetBasic obj)        {            TowerLevelWidget woc = obj as TowerLevelWidget;            currentLevelWidget = woc;            ulockId = currentLevelWidget._towerInfoConfig.ID;            SelectBigsecretArea(woc);        }        public void SelectBigsecretArea(TowerLevelWidget towerLevelWidget, bool isSelect = true)        {            if (isSelect)            {                Icon_Select.gameObject.SetActive(true);                Icon_Select.transform.SetParent(towerLevelWidget.transform);                Icon_Select.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(24.75f, 0);                Icon_Select.transform.SetAsFirstSibling();            }            else            {                Icon_Select.gameObject.SetActive(false);                Icon_Select.transform.SetParent(transform);                Icon_Select.transform.SetAsFirstSibling();            }        }        public void HindIScorllListWidget(IScorllListWidget widget)        {            TowerLevelWidget towerLevelWidget = widget as TowerLevelWidget;            if (towerLevelWidget._towerInfoConfig.ID == ulockId)            {                SelectBigsecretArea(towerLevelWidget, false);            }            UIManager.Instance.DormancyGComponent(widget as UIComponent);        }        public override void Close()        {            _towerData = null;            ulockId = 0;            currentLevelWidget = null;            base.Close();        }    }}
 |