DivineSenceItemPanel.cs 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. using System;
  2. using System.Collections.Generic;
  3. using Fort23.Core;
  4. using GameLogic.Bag;
  5. namespace Fort23.Mono
  6. {
  7. [UIBinding(prefab = "DivineSenceItemPanel")]
  8. public partial class DivineSenceItemPanel : UIPanel
  9. {
  10. List<DivineSenceItemWidget> _divineSenceItemWidgets = new List<DivineSenceItemWidget>();
  11. private Action<int> callBack;
  12. private Action cancelCallBack;
  13. private void Init()
  14. {
  15. }
  16. protected override void AddEvent()
  17. {
  18. }
  19. protected override void DelEvent()
  20. {
  21. }
  22. public override void AddButtonEvent()
  23. {
  24. Btn_Close.onClick.AddListener(() => { UIManager.Instance.HideUIUIPanel(this); });
  25. }
  26. public async override CTask<bool> AsyncInit(object[] uiData)
  27. {
  28. ItemInfo selectItemInit = uiData[0] as ItemInfo;
  29. callBack = uiData[1] as Action<int>;
  30. cancelCallBack = uiData[2] as Action;
  31. List<ItemInfo> itemInfos = new List<ItemInfo>();
  32. foreach (var keyValuePair in PlayerManager.Instance.BagController.allBagDic)
  33. {
  34. if (keyValuePair.Value.config.associateID == 6 || keyValuePair.Value.config.associateID == 7)
  35. {
  36. itemInfos.Add(keyValuePair.Value);
  37. }
  38. }
  39. foreach (var itemInfo in itemInfos)
  40. {
  41. DivineSenceItemWidget divineSenceItemWidget = await UIManager.Instance.CreateGComponent<DivineSenceItemWidget>(null, Content);
  42. divineSenceItemWidget.CustomInit(itemInfo,CancelClick, selectItemInit);
  43. divineSenceItemWidget.OnClick = OnClick;
  44. _divineSenceItemWidgets.Add(divineSenceItemWidget);
  45. }
  46. return await base.AsyncInit(uiData);
  47. }
  48. private void OnClick(ItemWidgetBasic obj)
  49. {
  50. DivineSenceItemWidget divineSenceItemWidget = obj as DivineSenceItemWidget;
  51. callBack?.Invoke(divineSenceItemWidget.ItemInfo.itemID);
  52. UIManager.Instance.HideUIUIPanel(this);
  53. }
  54. private void CancelClick()
  55. {
  56. cancelCallBack?.Invoke();
  57. UIManager.Instance.HideUIUIPanel(this);
  58. }
  59. public static async CTask OpenPanel(ItemInfo selectItemInit, Action<int> itemId,Action cancelCallBack)
  60. {
  61. await UIManager.Instance.LoadAndOpenPanel<DivineSenceItemPanel>(null, UILayer.Top, uiData: new object[] { selectItemInit, itemId,cancelCallBack });
  62. }
  63. public override void Close()
  64. {
  65. foreach (var divineSenceItemWidget in _divineSenceItemWidgets)
  66. {
  67. UIManager.Instance.DormancyGComponent(divineSenceItemWidget);
  68. }
  69. _divineSenceItemWidgets.Clear();
  70. base.Close();
  71. }
  72. }
  73. }