ToolLibraryForm.cs 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271
  1. using UnityEngine;
  2. using UnityEngine.UI;
  3. using QFramework;
  4. using System.Collections.Generic;
  5. using I2.Loc;
  6. using System;
  7. namespace QFramework
  8. {
  9. public enum ToolLibraryType
  10. {
  11. /// <summary>
  12. /// 工具间
  13. /// </summary>
  14. ToolRoom,
  15. /// <summary>
  16. /// 工具包
  17. /// </summary>
  18. ToolKit
  19. }
  20. public class ToolLibraryFormData : UIPanelData
  21. {
  22. /// <summary>
  23. /// 开启的工具库类型
  24. /// </summary>
  25. public ToolLibraryType toolLibraryType = ToolLibraryType.ToolRoom;
  26. /// <summary>
  27. /// 正常情况下不用使用该回调,这是为ToolLibrarySelectElement单加的模式
  28. /// </summary>
  29. public Action selectAction;
  30. /// <summary>
  31. /// 这是为ToolLibrarySelectElement单加的模式
  32. /// </summary>
  33. public List<string> rightTools = new List<string>();
  34. /// <summary>
  35. /// 是否锁定esc关闭功能
  36. /// </summary>
  37. public bool lockEsc=false;
  38. }
  39. public partial class ToolLibraryForm : UIPanel
  40. {
  41. public List<Sprite> m_Sprites = new List<Sprite>();
  42. public ToolConfigProxy m_ToolConfigProxy;
  43. //工具间中用到
  44. public List<string> rightToolsForToolRoom = new List<string>();
  45. public bool isLockESC = false;
  46. protected override void OnInit(IUIData uiData = null)
  47. {
  48. mData = uiData as ToolLibraryFormData ?? new ToolLibraryFormData();
  49. m_ToolConfigProxy = DAL.Instance.Get<ToolConfigProxy>();
  50. CloseBtn.onClick.AddListener(OnCloseBtnClick);
  51. ToolLibrarySelectElement.InitData();
  52. ToolLibrarySelectElement.TitleText.text = ScriptLocalization.tooltype.all;
  53. m_ToolConfigProxy.m_CurrentToolLibraryType = mData.toolLibraryType;
  54. CloseBtn.gameObject.SetActive(mData.selectAction == null);
  55. rightToolsForToolRoom = mData.rightTools;
  56. isLockESC = mData.lockEsc;
  57. }
  58. protected override void OnOpen(IUIData uiData = null)
  59. {
  60. mData = uiData as ToolLibraryFormData ?? new ToolLibraryFormData();
  61. switch (m_ToolConfigProxy.m_CurrentToolLibraryType)
  62. {
  63. case ToolLibraryType.ToolRoom:
  64. m_ToolConfigProxy.m_TmpToolRoomConfigInfos = m_ToolConfigProxy.GetAllToolConfigInfoFromCTRSTCIs();
  65. ToolLibrarySelectElement.OpenToolRoomUI();
  66. break;
  67. case ToolLibraryType.ToolKit:
  68. ToolLibrarySelectElement.OpenToolKitUI();
  69. break;
  70. default:
  71. break;
  72. }
  73. ToolTypeElement.RefrushTypeBtn();
  74. transform.transform.SetAsLastSibling();
  75. }
  76. protected override void OnShow()
  77. {
  78. //工具包
  79. if (mData.toolLibraryType == ToolLibraryType.ToolKit)
  80. {
  81. }
  82. else if (mData.toolLibraryType == ToolLibraryType.ToolRoom)
  83. {
  84. ToolLibrarySelectElement.ShowUI();
  85. //刷新工具列表为全部
  86. ToolTypeElement.RefrushTypeBtn();
  87. transform.transform.SetAsLastSibling();
  88. }
  89. }
  90. protected override void OnHide()
  91. {
  92. }
  93. protected override void OnClose()
  94. {
  95. }
  96. void Update()
  97. {
  98. if (Input.GetKeyDown(KeyCode.Escape)&&!isLockESC)
  99. {
  100. OnCloseBtnClick();
  101. }
  102. if (Input.GetKeyDown(KeyCode.Return))
  103. {
  104. Debug.Log("ClickEnter");
  105. OnConfirmBtnClick();
  106. }
  107. if (Input.GetKeyDown(KeyCode.Delete))
  108. {
  109. ToolLibrarySelectElement.OnClearBtnClick();
  110. }
  111. }
  112. /// <summary>
  113. /// 关闭工具库
  114. /// </summary>
  115. public void OnCloseBtnClick()
  116. {
  117. switch (m_ToolConfigProxy.m_CurrentToolLibraryType)
  118. {
  119. case ToolLibraryType.ToolRoom:
  120. break;
  121. case ToolLibraryType.ToolKit:
  122. m_ToolConfigProxy.ClearToolConfigInfoToCTKSTCIs();
  123. foreach (var item in m_ToolConfigProxy.GetAllToolConfigInfos())
  124. {
  125. foreach (var selectTool in OperateSetting.Instance.m_ToolKitToolConfigs)
  126. {
  127. if (selectTool.toolName == item.toolName)
  128. {
  129. ToolConfigInfo tmpToolConfigInfo = m_ToolConfigProxy.GetTooConfigInfoByToolName(item.toolName);
  130. m_ToolConfigProxy.AddToolConfigInfoToCTKSTCIs(tmpToolConfigInfo);
  131. }
  132. }
  133. }
  134. break;
  135. default:
  136. break;
  137. }
  138. UIKit.ClosePanel<ToolLibraryForm>();
  139. }
  140. /// <summary>
  141. /// 确认提交所选工具
  142. /// </summary>
  143. public void OnConfirmBtnClick()
  144. {
  145. switch (m_ToolConfigProxy.m_CurrentToolLibraryType)
  146. {
  147. case ToolLibraryType.ToolRoom:
  148. m_ToolConfigProxy.SetCurrrentToolRoomToolConfigInfos(m_ToolConfigProxy.m_TmpToolRoomConfigInfos);
  149. break;
  150. case ToolLibraryType.ToolKit:
  151. break;
  152. default:
  153. break;
  154. }
  155. List<ToolConfig> tmpToolConfigs = new List<ToolConfig>();
  156. List<ToolConfig> tmpAssembleToolConfigs = new List<ToolConfig>();
  157. foreach (var item in m_ToolConfigProxy.GetAllToolConfigInfoFromCTKSTCIs())
  158. {
  159. if (m_ToolConfigProxy.GetToolConfigInfoFromCTRSTCIsById(int.Parse(item.id)) != null)
  160. {
  161. ToolConfig tmpToolConfig = new ToolConfig();
  162. ToolConfigInfo toolConfigInfo = m_ToolConfigProxy.GetTooConfigInfoById(int.Parse(item.id));
  163. tmpToolConfig.toolName = toolConfigInfo.toolName;
  164. tmpToolConfig.toolImg = m_ToolConfigProxy.GetSpriteByToolName(tmpToolConfig.toolName);
  165. tmpToolConfig.en_toolName = toolConfigInfo.en_toolName;
  166. tmpToolConfig.en_toolType = toolConfigInfo.en_toolType;
  167. tmpToolConfig.en_toolDescription = toolConfigInfo.en_toolDescription;
  168. tmpToolConfigs.Add(tmpToolConfig);
  169. }
  170. else
  171. {
  172. ToolConfig tmpToolConfig = new ToolConfig();
  173. ToolConfigInfo toolConfigInfo = item;
  174. tmpToolConfig.toolName = toolConfigInfo.toolName;
  175. tmpToolConfig.toolImg = m_ToolConfigProxy.GetSpriteByToolName(tmpToolConfig.toolName);
  176. tmpToolConfig.en_toolName = toolConfigInfo.en_toolName;
  177. tmpToolConfig.en_toolType = toolConfigInfo.en_toolType;
  178. tmpToolConfig.en_toolDescription = toolConfigInfo.en_toolDescription;
  179. tmpAssembleToolConfigs.Add(tmpToolConfig);
  180. }
  181. }
  182. //拆解物体不计入选中工器具
  183. OperateSetting.Instance.m_ToolKitToolConfigs = tmpToolConfigs;
  184. switch (OperateSetting.Instance.m_CurrentOperationMode)
  185. {
  186. case OperationMode.Learn:
  187. case OperationMode.Practice:
  188. case OperationMode.Exam:
  189. case OperationMode.Challenge:
  190. UIKit.OpenPanel<ToolDisplayForm>(new ToolDisplayFormData() { m_ToolConfigs = tmpToolConfigs });
  191. break;
  192. case OperationMode.FreeParctice:
  193. case OperationMode.FreeExam:
  194. //自由模式,显示拆解物体
  195. List<ToolConfig> toolDisplayToolConfigs = new List<ToolConfig>();
  196. toolDisplayToolConfigs.AddRange(tmpToolConfigs);
  197. toolDisplayToolConfigs.AddRange(tmpAssembleToolConfigs);
  198. m_ToolConfigProxy.RefrushCurrentSelectDisassembleObjs(tmpAssembleToolConfigs);
  199. UIKit.OpenPanel<ToolDisplayForm>(new ToolDisplayFormData() { m_ToolConfigs = toolDisplayToolConfigs });
  200. break;
  201. case OperationMode.None:
  202. break;
  203. default:
  204. break;
  205. }
  206. if (mData.selectAction != null)
  207. {
  208. mData.selectAction?.Invoke();
  209. }
  210. else
  211. {
  212. UIKit.ClosePanel<ToolLibraryForm>();
  213. }
  214. }
  215. public static void RefrushAllChoseTool()
  216. {
  217. ToolConfigProxy tmpToolConfigProxy = DAL.Instance.Get<ToolConfigProxy>();
  218. tmpToolConfigProxy.ClearToolConfigInfoToCTKSTCIs();
  219. OperateSetting.Instance.m_ToolKitToolConfigs.Clear();
  220. UIKit.OpenPanel<ToolDisplayForm>(new ToolDisplayFormData() { m_ToolConfigs = null });
  221. }
  222. }
  223. }