DivineSenceItemPanel.cs 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. using System;
  2. using System.Collections.Generic;
  3. using Core.Language;
  4. using Fort23.Core;
  5. using GameLogic.Bag;
  6. namespace Fort23.Mono
  7. {
  8. [UIBinding(prefab = "DivineSenceItemPanel")]
  9. public partial class DivineSenceItemPanel : UIPanel
  10. {
  11. List<DivineSenceItemWidget> _divineSenceItemWidgets = new List<DivineSenceItemWidget>();
  12. private Action<int> callBack;
  13. private Action cancelCallBack;
  14. private List<int> selectType;
  15. private List<ItemInfo> itemInfos1 = new List<ItemInfo>();
  16. private List<ItemInfo> itemInfos2 = new List<ItemInfo>();
  17. private ItemInfo selectItemInit;
  18. private int type = 1;
  19. private void Init()
  20. {
  21. }
  22. protected override void AddEvent()
  23. {
  24. }
  25. protected override void DelEvent()
  26. {
  27. }
  28. public override void AddButtonEvent()
  29. {
  30. Btn_Close.onClick.AddListener(() => { UIManager.Instance.HideUIUIPanel(this); });
  31. Btn_GaiLv.onClick.AddListener(() =>
  32. {
  33. if (selectType.Contains(6))
  34. {
  35. TipMessagePanel.OpenTipMessagePanel("此类型不能重复选择!");
  36. return;
  37. }
  38. if (type == 1)
  39. {
  40. return;
  41. }
  42. type = 1;
  43. CreatWidget(1);
  44. });
  45. Btn_ZuiZhong.onClick.AddListener(() =>
  46. {
  47. if (selectType.Contains(7))
  48. {
  49. TipMessagePanel.OpenTipMessagePanel("此类型不能重复选择!");
  50. return;
  51. }
  52. if (type == 2)
  53. {
  54. return;
  55. }
  56. type = 2;
  57. CreatWidget(type);
  58. });
  59. }
  60. public async override CTask<bool> AsyncInit(object[] uiData)
  61. {
  62. selectItemInit = uiData[0] as ItemInfo;
  63. selectType = uiData[1] as List<int>;
  64. callBack = uiData[2] as Action<int>;
  65. cancelCallBack = uiData[3] as Action;
  66. foreach (var keyValuePair in PlayerManager.Instance.BagController.allBagDic)
  67. {
  68. if (keyValuePair.Value.config.associateID == 6)
  69. {
  70. itemInfos1.Add(keyValuePair.Value);
  71. }
  72. if (keyValuePair.Value.config.associateID == 7)
  73. {
  74. itemInfos2.Add(keyValuePair.Value);
  75. }
  76. }
  77. if (itemInfos1.Count > 0 || itemInfos2.Count == 0)
  78. {
  79. type = 1;
  80. }
  81. else
  82. {
  83. type = 2;
  84. }
  85. CreatWidget(type);
  86. return await base.AsyncInit(uiData);
  87. }
  88. public async CTask CreatWidget(int type)
  89. {
  90. foreach (var divineSenceItemWidget in _divineSenceItemWidgets)
  91. {
  92. UIManager.Instance.DormancyGComponent(divineSenceItemWidget);
  93. }
  94. _divineSenceItemWidgets.Clear();
  95. if (type == 1)
  96. {
  97. toogleList.ShowTargetIndex(0);
  98. foreach (var itemInfo in itemInfos1)
  99. {
  100. DivineSenceItemWidget divineSenceItemWidget =
  101. await UIManager.Instance.CreateGComponent<DivineSenceItemWidget>(null, Content);
  102. divineSenceItemWidget.CustomInit(itemInfo, CancelClick, selectItemInit);
  103. divineSenceItemWidget.OnClick = OnClick;
  104. _divineSenceItemWidgets.Add(divineSenceItemWidget);
  105. }
  106. }
  107. else
  108. {
  109. toogleList.ShowTargetIndex(1);
  110. foreach (var itemInfo in itemInfos2)
  111. {
  112. DivineSenceItemWidget divineSenceItemWidget =
  113. await UIManager.Instance.CreateGComponent<DivineSenceItemWidget>(null, Content);
  114. divineSenceItemWidget.CustomInit(itemInfo, CancelClick, selectItemInit);
  115. divineSenceItemWidget.OnClick = OnClick;
  116. _divineSenceItemWidgets.Add(divineSenceItemWidget);
  117. }
  118. }
  119. }
  120. private void OnClick(ItemWidgetBasic obj)
  121. {
  122. DivineSenceItemWidget divineSenceItemWidget = obj as DivineSenceItemWidget;
  123. if (divineSenceItemWidget.ItemInfo.config.associateID == 6)
  124. {
  125. if (AccountFileInfo.Instance.playerData.divineSenseLevel <
  126. divineSenceItemWidget.ItemInfo.config.associateVlaue[2])
  127. {
  128. TipMessagePanel.OpenTipMessagePanel(LanguageManager.Instance.Text(10787,
  129. AccountFileInfo.Instance.playerData.divineSenseLevel));
  130. return;
  131. }
  132. }
  133. callBack?.Invoke(divineSenceItemWidget.ItemInfo.itemID);
  134. UIManager.Instance.HideUIUIPanel(this);
  135. }
  136. private void CancelClick()
  137. {
  138. cancelCallBack?.Invoke();
  139. UIManager.Instance.HideUIUIPanel(this);
  140. }
  141. public static async CTask OpenPanel(ItemInfo selectItemInit, List<int> selectType, Action<int> itemId,
  142. Action cancelCallBack)
  143. {
  144. await UIManager.Instance.LoadAndOpenPanel<DivineSenceItemPanel>(null, UILayer.Top,
  145. uiData: new object[] { selectItemInit, selectType, itemId, cancelCallBack }, isShowBG: true);
  146. }
  147. public async override CTask Close()
  148. {
  149. foreach (var divineSenceItemWidget in _divineSenceItemWidgets)
  150. {
  151. UIManager.Instance.DormancyGComponent(divineSenceItemWidget);
  152. }
  153. _divineSenceItemWidgets.Clear();
  154. itemInfos1.Clear();
  155. itemInfos2.Clear();
  156. selectItemInit = null;
  157. await base.Close();
  158. }
  159. }
  160. }