using System; using System.Collections.Generic; using Fort23.Core; using GameLogic.Bag; namespace Fort23.Mono { [UIBinding(prefab = "DivineSenceItemPanel")] public partial class DivineSenceItemPanel : UIPanel { List _divineSenceItemWidgets = new List(); private Action callBack; private Action cancelCallBack; private List selectType; private List itemInfos1 = new List(); private List itemInfos2 = new List(); 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 AsyncInit(object[] uiData) { selectItemInit = uiData[0] as ItemInfo; selectType = uiData[1] as List; callBack = uiData[2] as Action; 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(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(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 selectType, Action itemId, Action cancelCallBack) { await UIManager.Instance.LoadAndOpenPanel(null, UILayer.Top, uiData: new object[] { selectItemInit, selectType,itemId, cancelCallBack }); } public override void Close() { foreach (var divineSenceItemWidget in _divineSenceItemWidgets) { UIManager.Instance.DormancyGComponent(divineSenceItemWidget); } _divineSenceItemWidgets.Clear(); itemInfos1.Clear(); itemInfos2.Clear(); selectItemInit = null; base.Close(); } } }