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 void Init() { } protected override void AddEvent() { } protected override void DelEvent() { } public override void AddButtonEvent() { Btn_Close.onClick.AddListener(() => { UIManager.Instance.HideUIUIPanel(this); }); } public async override CTask AsyncInit(object[] uiData) { ItemInfo selectItemInit = uiData[0] as ItemInfo; callBack = uiData[1] as Action; cancelCallBack = uiData[2] as Action; List itemInfos = new List(); foreach (var keyValuePair in PlayerManager.Instance.BagController.allBagDic) { if (keyValuePair.Value.config.associateID == 6 || keyValuePair.Value.config.associateID == 7) { itemInfos.Add(keyValuePair.Value); } } foreach (var itemInfo in itemInfos) { DivineSenceItemWidget divineSenceItemWidget = await UIManager.Instance.CreateGComponent(null, Content); divineSenceItemWidget.CustomInit(itemInfo,CancelClick, selectItemInit); divineSenceItemWidget.OnClick = OnClick; _divineSenceItemWidgets.Add(divineSenceItemWidget); } return await base.AsyncInit(uiData); } 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, Action itemId,Action cancelCallBack) { await UIManager.Instance.LoadAndOpenPanel(null, UILayer.Top, uiData: new object[] { selectItemInit, itemId,cancelCallBack }); } public override void Close() { foreach (var divineSenceItemWidget in _divineSenceItemWidgets) { UIManager.Instance.DormancyGComponent(divineSenceItemWidget); } _divineSenceItemWidgets.Clear(); base.Close(); } } }