ToolLibrarySelectElement.cs 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  1. /****************************************************************************
  2. * 2024.7 LXD
  3. ****************************************************************************/
  4. using System;
  5. using System.Collections.Generic;
  6. using UnityEngine;
  7. using UnityEngine.UI;
  8. using QFramework;
  9. namespace QFramework
  10. {
  11. public partial class ToolLibrarySelectElement : UIElement
  12. {
  13. List<ToolItemPrefab> toolItemPrefabs = new List<ToolItemPrefab>();
  14. List<ToolConfigInfo> m_ToolConfigInfos;
  15. List<ToolConfigInfo> m_NeedHightToolConfigInfos;
  16. /// <summary>
  17. /// 当前的页数
  18. /// </summary>
  19. int m_CurrentPage = 1;
  20. /// <summary>
  21. /// 最后一页数量
  22. /// </summary>
  23. int LastPageCount
  24. {
  25. get
  26. {
  27. if ((float)m_ToolConfigInfos.Count % 18 == 0) return 18;
  28. else return m_ToolConfigInfos.Count % 18;
  29. }
  30. }
  31. private void Start()
  32. {
  33. PreviousPageBtn.onClick.AddListener(ShowPreviousPage);
  34. NextPageBtn.onClick.AddListener(ShowNextPage);
  35. SearchInputField.onValueChanged.AddListener(OnSearchInputField);
  36. ClearBtn.onClick.AddListener(OnClearBtnClick);
  37. ConfirmBtn.onClick.AddListener(OnConfirmBtnClick);
  38. }
  39. public void OpenUI()
  40. {
  41. if (!OperateSetting.Instance.ToolPackUILogic.GetHint()) return;
  42. ShowHighter();
  43. ShowTargetPage(1);
  44. }
  45. public void ShowUI()
  46. {
  47. if (!OperateSetting.Instance.ToolPackUILogic.GetHint()) return;
  48. ShowHighter();
  49. ShowTargetPage(1);
  50. }
  51. public void ShowHighter()
  52. {
  53. ToolLibraryForm tmpLibraryForm = UIKit.GetPanel<ToolLibraryForm>();
  54. ToolConfigProxy tmpProxy = DAL.Instance.Get<ToolConfigProxy>();
  55. m_NeedHightToolConfigInfos = new List<ToolConfigInfo>();
  56. foreach (var item in OperateSetting.Instance.m_CurrentStepRightToolNames)
  57. {
  58. ToolConfigInfo tmpInfo = tmpProxy.GetTooConfigInfoByToolName(item);
  59. ToolConfigInfo tmpToolConfigInfo = m_ToolConfigInfos.Find(t => t.id == tmpInfo.id);
  60. m_ToolConfigInfos.Remove(tmpToolConfigInfo);
  61. m_ToolConfigInfos.Insert(0, tmpToolConfigInfo);
  62. m_NeedHightToolConfigInfos.Add(tmpInfo);
  63. }
  64. }
  65. /// <summary>
  66. /// 初始化数据
  67. /// </summary>
  68. public void InitData()
  69. {
  70. ToolConfigProxy tmpToolConfigProxy = DAL.Instance.Get<ToolConfigProxy>();
  71. for (int i = 0; i < 18; i++)
  72. {
  73. GameObject tmpObj = Instantiate(ToolItemPrefab.gameObject, Content);
  74. toolItemPrefabs.Add(tmpObj.GetComponent<ToolItemPrefab>());
  75. }
  76. SetData(tmpToolConfigProxy.GetAllToolConfigInfos());
  77. }
  78. public void SetData(List<ToolConfigInfo> toolConfigInfos)
  79. {
  80. m_ToolConfigInfos = toolConfigInfos;
  81. ShowTargetPage(1);
  82. }
  83. /// <summary>
  84. /// 展示上一页
  85. /// </summary>
  86. public void ShowPreviousPage()
  87. {
  88. if (m_CurrentPage - 1 <= 0) return;
  89. ShowTargetPage(m_CurrentPage - 1);
  90. }
  91. /// <summary>
  92. /// 展示下一页
  93. /// </summary>
  94. public void ShowNextPage()
  95. {
  96. if (m_CurrentPage + 1 > GetPageCount()) return;
  97. ShowTargetPage(m_CurrentPage + 1);
  98. }
  99. /// <summary>
  100. /// 展示指定页
  101. /// </summary>
  102. /// <param name="page"></param>
  103. public void ShowTargetPage(int page)
  104. {
  105. m_CurrentPage = page;
  106. SetPagePoint(page);
  107. HideAllToolElement();
  108. for (int i = 0; i < GetToolCountOfCureentPage(page); i++)
  109. {
  110. ToolConfigInfo tmpToolConfigInfo = m_ToolConfigInfos[(page - 1) * 18 + i];
  111. toolItemPrefabs[i].gameObject.SetActive(true);
  112. toolItemPrefabs[i].SetData(tmpToolConfigInfo);
  113. ToolLibraryForm toolLibraryForm = UIKit.GetPanel<ToolLibraryForm>();
  114. if (i == 0) toolItemPrefabs[i].SetShowToolInfo();
  115. }
  116. PageNumber.text = "页面" + page + "/" + GetPageCount();
  117. }
  118. /// <summary>
  119. /// 搜索框搜索
  120. /// </summary>
  121. /// <param name="inputStr"></param>
  122. private void OnSearchInputField(string inputStr)
  123. {
  124. ToolConfigProxy toolConfigProxy = DAL.Instance.Get<ToolConfigProxy>();
  125. m_ToolConfigInfos = toolConfigProxy.GetToolConfigInfosByToolTypeAndName(UIKit.GetPanel<ToolLibraryForm>().ToolTypeElement.curentType, inputStr);
  126. SetData(m_ToolConfigInfos);
  127. }
  128. /// <summary>
  129. /// 查找当前页有几个工具
  130. /// </summary>
  131. /// <returns></returns>
  132. private int GetToolCountOfCureentPage(int page)
  133. {
  134. if (page < GetPageCount())
  135. {
  136. return 18;
  137. }
  138. else if (page == GetPageCount())
  139. {
  140. return LastPageCount;
  141. }
  142. return 0;
  143. }
  144. /// <summary>
  145. /// 获取页数
  146. /// </summary>
  147. /// <returns></returns>
  148. private int GetPageCount()
  149. {
  150. int pageCount = m_ToolConfigInfos.Count / 18;
  151. if (LastPageCount > 0 && m_ToolConfigInfos.Count % 18 != 0) pageCount++;
  152. return pageCount;
  153. }
  154. private void HideAllToolElement()
  155. {
  156. foreach (var item in toolItemPrefabs)
  157. {
  158. item.gameObject.SetActive(false);
  159. item.ToolIcon.sprite = null;
  160. item.SelectState.gameObject.SetActive(false);
  161. item.HighterState.gameObject.SetActive(false);
  162. item.ShowHighter(false);
  163. }
  164. }
  165. private void SetPagePoint(int page)
  166. {
  167. if (page > 6 || page < 1) return;
  168. for (int i = 0; i < 6; i++)
  169. {
  170. PagePoint.transform.GetChild(i).gameObject.SetActive(false);
  171. PagePoint.transform.GetChild(i).Find("Hight").gameObject.SetActive(false);
  172. }
  173. for (int i = 0; i < GetPageCount(); i++)
  174. {
  175. PagePoint.transform.GetChild(i).gameObject.SetActive(true);
  176. }
  177. PagePoint.transform.GetChild(page - 1).Find("Hight").gameObject.SetActive(true);
  178. }
  179. public bool ToolItemIsNeedShowHighter(string _id)
  180. {
  181. if (m_NeedHightToolConfigInfos == null) return false;
  182. return m_NeedHightToolConfigInfos.Find(t => t.id == _id) != null;
  183. }
  184. public void OnClearBtnClick()
  185. {
  186. UIKit.GetPanel<ToolLibraryForm>().m_CurrentSelectToolIDs.Clear();
  187. ShowTargetPage(m_CurrentPage);
  188. }
  189. private void OnConfirmBtnClick()
  190. {
  191. UIKit.GetPanel<ToolLibraryForm>().OnConfirmBtnClick();
  192. }
  193. }
  194. }