| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 | using System;using System.Collections.Generic;using Fort23.Core;using GameLogic.Bag;namespace Fort23.Mono{    [UIBinding(prefab = "DivineSenceItemPanel")]    public partial class DivineSenceItemPanel : UIPanel    {        List<DivineSenceItemWidget> _divineSenceItemWidgets = new List<DivineSenceItemWidget>();        private Action<int> callBack;        private Action cancelCallBack;        private List<int> selectType;        private List<ItemInfo> itemInfos1 = new List<ItemInfo>();        private List<ItemInfo> itemInfos2 = new List<ItemInfo>();        private ItemInfo selectItemInit;        private int type = 1;        private void Init()        {        }        protected override void AddEvent()        {        }        protected override void DelEvent()        {        }        public override void AddButtonEvent()        {            Btn_Close.onClick.AddListener(() => { UIManager.Instance.HideUIUIPanel(this); });            Btn_GaiLv.onClick.AddListener(() =>            {                if (selectType.Contains(6))                {                    TipMessagePanel.OpenTipMessagePanel("此类型不能重复选择!");                    return;                }                if (type == 1)                {                    return;                }                type = 1;                CreatWidget(1);            });            Btn_ZuiZhong.onClick.AddListener(() =>            {                if (selectType.Contains(7))                {                    TipMessagePanel.OpenTipMessagePanel("此类型不能重复选择!");                    return;                }                if (type == 2)                {                    return;                }                type = 2;                CreatWidget(type);            });        }        public async override CTask<bool> AsyncInit(object[] uiData)        {            selectItemInit = uiData[0] as ItemInfo;            selectType = uiData[1] as List<int>;            callBack = uiData[2] as Action<int>;            cancelCallBack = uiData[3] as Action;            foreach (var keyValuePair in PlayerManager.Instance.BagController.allBagDic)            {                if (keyValuePair.Value.config.associateID == 6)                {                    itemInfos1.Add(keyValuePair.Value);                }                if (keyValuePair.Value.config.associateID == 7)                {                    itemInfos2.Add(keyValuePair.Value);                }            }            if (selectType.Count == 0)            {                type = 1;            }            else if (selectType.Contains(7))            {                type = 1;            }            else            {                type = 2;            }            CreatWidget(type);            return await base.AsyncInit(uiData);        }        public async CTask CreatWidget(int type)        {            foreach (var divineSenceItemWidget in _divineSenceItemWidgets)            {                UIManager.Instance.DormancyGComponent(divineSenceItemWidget);            }            _divineSenceItemWidgets.Clear();            if (type == 1)            {                toogleList.ShowTargetIndex(0);                foreach (var itemInfo in itemInfos1)                {                    DivineSenceItemWidget divineSenceItemWidget = await UIManager.Instance.CreateGComponent<DivineSenceItemWidget>(null, Content);                    divineSenceItemWidget.CustomInit(itemInfo, CancelClick, selectItemInit);                    divineSenceItemWidget.OnClick = OnClick;                    _divineSenceItemWidgets.Add(divineSenceItemWidget);                }            }            else            {                toogleList.ShowTargetIndex(1);                foreach (var itemInfo in itemInfos2)                {                    DivineSenceItemWidget divineSenceItemWidget = await UIManager.Instance.CreateGComponent<DivineSenceItemWidget>(null, Content);                    divineSenceItemWidget.CustomInit(itemInfo, CancelClick, selectItemInit);                    divineSenceItemWidget.OnClick = OnClick;                    _divineSenceItemWidgets.Add(divineSenceItemWidget);                }            }        }        private void OnClick(ItemWidgetBasic obj)        {            DivineSenceItemWidget divineSenceItemWidget = obj as DivineSenceItemWidget;            callBack?.Invoke(divineSenceItemWidget.ItemInfo.itemID);            UIManager.Instance.HideUIUIPanel(this);        }        private void CancelClick()        {            cancelCallBack?.Invoke();            UIManager.Instance.HideUIUIPanel(this);        }        public static async CTask OpenPanel(ItemInfo selectItemInit, List<int> selectType, Action<int> itemId, Action cancelCallBack)        {            await UIManager.Instance.LoadAndOpenPanel<DivineSenceItemPanel>(null, UILayer.Top, uiData: new object[] { selectItemInit, selectType,itemId, cancelCallBack },isShowBG:true);        }        public async override CTask Close()        {            foreach (var divineSenceItemWidget in _divineSenceItemWidgets)            {                UIManager.Instance.DormancyGComponent(divineSenceItemWidget);            }            _divineSenceItemWidgets.Clear();            itemInfos1.Clear();            itemInfos2.Clear();            selectItemInit = null;            await base.Close();        }    }}
 |