ToolLibraryForm.cs 9.7 KB

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