ToolConfigProxy.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367
  1. using QFramework;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.IO;
  5. using UnityEngine;
  6. public class ToolConfigProxy : DataProxy
  7. {
  8. List<ToolConfigInfo> m_ToolConfigInfos;
  9. Dictionary<string,Sprite> m_DicToolSprites;
  10. /// <summary>
  11. /// 目前工具间里的已经选择的所有工具信息
  12. /// </summary>
  13. public List<ToolConfigInfo> m_CurrentToolRoomConfigInfos;
  14. /// <summary>
  15. /// 临时缓存保存使用
  16. /// </summary>
  17. public List<ToolConfigInfo> m_TmpToolRoomConfigInfos;
  18. /// <summary>
  19. /// 工具包中选择的工具
  20. /// </summary>
  21. private List<ToolConfigInfo> m_CurrentToolKitSelectToolConfigInfos;
  22. /// <summary>
  23. /// 默认工具信息表加载路径
  24. /// </summary>
  25. string m_ToolConfigPath;
  26. /// <summary>
  27. /// 目前题库类型
  28. /// </summary>
  29. public ToolLibraryType m_CurrentToolLibraryType;
  30. public override void OnRegister()
  31. {
  32. base.OnRegister();
  33. m_DicToolSprites = new Dictionary<string, Sprite>();
  34. m_ToolConfigPath = Path.Combine(GlobalConfig.toolConfigTablePath, "工具信息表.xlsx");
  35. m_ToolConfigInfos = ExcelHelper.ReadInfoFromExcel<ToolConfigInfo>(m_ToolConfigPath, 1);
  36. m_TmpToolRoomConfigInfos = new List<ToolConfigInfo>();
  37. m_CurrentToolRoomConfigInfos = new List<ToolConfigInfo>();
  38. m_CurrentToolKitSelectToolConfigInfos = new List<ToolConfigInfo>();
  39. }
  40. public override void OnRemove()
  41. {
  42. base.OnRemove();
  43. m_ToolConfigInfos.Clear();
  44. }
  45. /// <summary>
  46. /// 从m_CurrentToolRoomConfigInfos中查找对应数据信息
  47. /// </summary>
  48. /// <param name="id"></param>
  49. /// <returns></returns>
  50. public ToolConfigInfo GetToolConfigInfoFromCTRSTCIsById(int id)
  51. {
  52. return m_TmpToolRoomConfigInfos.Find(t => t.id == id.ToString());
  53. }
  54. /// <summary>
  55. /// 获取工具间中的所有数据
  56. /// </summary>
  57. /// <returns></returns>
  58. public List<ToolConfigInfo> GetAllToolConfigInfoFromCTRSTCIs()
  59. {
  60. return m_CurrentToolRoomConfigInfos;
  61. }
  62. /// <summary>
  63. /// 从m_CurrentToolRoomConfigInfos中查找并删除对应数据信息
  64. /// </summary>
  65. /// <param name="id"></param>
  66. /// <returns></returns>
  67. public bool RemoveToolConfigInfoFromCTRSTCIsById(int id)
  68. {
  69. ToolConfigInfo tmpConfigInfo = GetToolConfigInfoFromCTRSTCIsById(id);
  70. if (tmpConfigInfo != null)
  71. {
  72. m_CurrentToolRoomConfigInfos.Remove(tmpConfigInfo);
  73. return true;
  74. }
  75. return false;
  76. }
  77. /// <summary>
  78. /// 向m_CurrentToolRoomConfigInfos中添加数据信息
  79. /// </summary>
  80. /// <param name="toolConfigInfo"></param>
  81. public void AddToolConfigInfoToCTRSTCIs(ToolConfigInfo toolConfigInfo)
  82. {
  83. m_TmpToolRoomConfigInfos.Add(toolConfigInfo);
  84. }
  85. /// <summary>
  86. /// 清除m_CurrentToolRoomConfigInfos数据信息
  87. /// </summary>
  88. /// <param name="toolConfigInfo"></param>
  89. public void ClearToolConfigInfoToCTRSTCIs()
  90. {
  91. m_TmpToolRoomConfigInfos.Clear();
  92. }
  93. /// <summary>
  94. /// 从m_CurrentToolKitSelectToolConfigInfos中查找对应数据信息
  95. /// </summary>
  96. /// <param name="id"></param>
  97. /// <returns></returns>
  98. public ToolConfigInfo GetToolConfigInfoFromCTKSTCIsById(int id)
  99. {
  100. return m_CurrentToolKitSelectToolConfigInfos.Find(t => t.id == id.ToString());
  101. }
  102. /// <summary>
  103. /// 获取工具包中的所有数据
  104. /// </summary>
  105. /// <returns></returns>
  106. public List<ToolConfigInfo> GetAllToolConfigInfoFromCTKSTCIs()
  107. {
  108. return m_CurrentToolKitSelectToolConfigInfos;
  109. }
  110. /// <summary>
  111. /// 从m_CurrentToolKitSelectToolConfigInfos中查找并删除对应数据信息
  112. /// </summary>
  113. /// <param name="id"></param>
  114. /// <returns></returns>
  115. public bool RemoveToolConfigInfoFromCTKSTCIsById(int id)
  116. {
  117. ToolConfigInfo tmpConfigInfo = GetToolConfigInfoFromCTKSTCIsById(id);
  118. if (tmpConfigInfo != null)
  119. {
  120. m_CurrentToolKitSelectToolConfigInfos.Remove(tmpConfigInfo);
  121. return true;
  122. }
  123. return false;
  124. }
  125. /// <summary>
  126. /// 向m_CurrentToolKitSelectToolConfigInfos中添加数据信息
  127. /// </summary>
  128. /// <param name="toolConfigInfo"></param>
  129. public void AddToolConfigInfoToCTKSTCIs(ToolConfigInfo toolConfigInfo)
  130. {
  131. m_CurrentToolKitSelectToolConfigInfos.Add(toolConfigInfo);
  132. }
  133. /// <summary>
  134. /// 清除m_CurrentToolKitSelectToolConfigInfos数据信息
  135. /// </summary>
  136. /// <param name="toolConfigInfo"></param>
  137. public void ClearToolConfigInfoToCTKSTCIs()
  138. {
  139. m_CurrentToolKitSelectToolConfigInfos.Clear();
  140. }
  141. /// <summary>
  142. /// 获取所有的工具类型
  143. /// </summary>
  144. /// <returns></returns>
  145. public List<string> GetAllToolTypeOfToolConfig()
  146. {
  147. List<string> list = new List<string>();
  148. foreach (var item in m_ToolConfigInfos)
  149. {
  150. if (!list.Contains(item.toolType))
  151. {
  152. list.Add(item.toolType);
  153. }
  154. }
  155. return list;
  156. }
  157. /// <summary>
  158. /// 获取所有工具名称
  159. /// </summary>
  160. /// <returns></returns>
  161. public List<string> GetAllToolCofigInfoName()
  162. {
  163. List<string> list = new List<string>();
  164. // if (m_ToolConfigInfos == null) m_ToolConfigInfos = ExcelHelper.ReadInfoFromExcel<ToolConfigInfo>(m_ToolConfigPath, 1);
  165. m_ToolConfigInfos = ExcelHelper.ReadInfoFromExcel<ToolConfigInfo>(m_ToolConfigPath, 1);
  166. m_ToolConfigInfos.ForEach(t => list.Add(t.toolName));
  167. return list;
  168. }
  169. /// <summary>
  170. /// 获取所有工具信息
  171. /// </summary>
  172. /// <returns></returns>
  173. public List<ToolConfigInfo> GetAllToolConfigInfos()
  174. {
  175. if (m_ToolConfigInfos == null) m_ToolConfigInfos = ExcelHelper.ReadInfoFromExcel<ToolConfigInfo>(m_ToolConfigPath, 1);
  176. return m_ToolConfigInfos;
  177. }
  178. /// <summary>
  179. /// 获取所有工具通过工具类型
  180. /// </summary>
  181. /// <param name="toolType"></param>
  182. /// <returns></returns>
  183. public List<ToolConfigInfo> GetToolConfigInfosByToolType(List<ToolConfigInfo> toolConfigInfos,string toolType)
  184. {
  185. List<ToolConfigInfo> tmpList = new List<ToolConfigInfo>();
  186. if (toolConfigInfos != null) tmpList = toolConfigInfos.FindAll(tool => tool.toolType == toolType);
  187. return tmpList;
  188. }
  189. /// <summary>
  190. /// 获取所有工具根据工具类型和工具名称(从工具间中筛选)
  191. /// </summary>
  192. /// <param name="toolType"></param>
  193. /// <param name="toolName"></param>
  194. /// <returns></returns>
  195. public List<ToolConfigInfo> GetToolConfigInfosByToolTypeAndName(string toolType,string toolName)
  196. {
  197. List<ToolConfigInfo> toolConfigInfos = new List<ToolConfigInfo>();
  198. if (string.IsNullOrEmpty(toolName) && !string.IsNullOrEmpty(toolType))
  199. {
  200. toolConfigInfos = GetToolConfigInfosByToolType(m_ToolConfigInfos, toolType);
  201. }
  202. else if (string.IsNullOrEmpty(toolType) && !string.IsNullOrEmpty(toolName))
  203. {
  204. toolConfigInfos = GetToolConfigInfosByToolNameSearch(m_ToolConfigInfos,toolName);
  205. }
  206. else if (!string.IsNullOrEmpty(toolName) && !string.IsNullOrEmpty(toolType))
  207. {
  208. toolConfigInfos = m_ToolConfigInfos.FindAll(tool => tool.toolType == toolType && tool.toolName.Contains(toolName));
  209. }
  210. else
  211. {
  212. toolConfigInfos = GetAllToolConfigInfos();
  213. }
  214. return toolConfigInfos;
  215. }
  216. /// <summary>
  217. /// 从背包中筛选
  218. /// </summary>
  219. /// <param name="toolType"></param>
  220. /// <param name="toolName"></param>
  221. /// <returns></returns>
  222. public List<ToolConfigInfo> GetToolToolKitConfigInfosByToolTypeAndName(string toolType, string toolName)
  223. {
  224. List<ToolConfigInfo> toolConfigInfos = new List<ToolConfigInfo>();
  225. if (string.IsNullOrEmpty(toolName) && !string.IsNullOrEmpty(toolType))
  226. {
  227. toolConfigInfos = GetToolConfigInfosByToolType(m_CurrentToolRoomConfigInfos, toolType);
  228. }
  229. else if (string.IsNullOrEmpty(toolType) && !string.IsNullOrEmpty(toolName))
  230. {
  231. toolConfigInfos = GetToolConfigInfosByToolNameSearch(m_CurrentToolRoomConfigInfos, toolName);
  232. }
  233. else if (!string.IsNullOrEmpty(toolName) && !string.IsNullOrEmpty(toolType))
  234. {
  235. toolConfigInfos = m_CurrentToolRoomConfigInfos.FindAll(tool => tool.toolType == toolType && tool.toolName.Contains(toolName));
  236. }
  237. else
  238. {
  239. toolConfigInfos = m_CurrentToolRoomConfigInfos;
  240. }
  241. return toolConfigInfos;
  242. }
  243. /// <summary>
  244. /// 获取所有工具更具工具名的模糊搜索
  245. /// </summary>
  246. /// <param name="searchStr"></param>
  247. /// <returns></returns>
  248. public List<ToolConfigInfo> GetToolConfigInfosByToolNameSearch(List<ToolConfigInfo> toolConfigInfos, string searchStr)
  249. {
  250. List<ToolConfigInfo> tmpList = new List<ToolConfigInfo>();
  251. if (toolConfigInfos != null) tmpList = toolConfigInfos.FindAll(tool => tool.toolName.Contains(searchStr));
  252. return tmpList;
  253. }
  254. /// <summary>
  255. /// 通过ID获取工具配置信息
  256. /// </summary>
  257. /// <param name="_id"></param>
  258. /// <returns></returns>
  259. public ToolConfigInfo GetTooConfigInfoById(int _id)
  260. {
  261. if (m_ToolConfigInfos == null) m_ToolConfigInfos = ExcelHelper.ReadInfoFromExcel<ToolConfigInfo>(m_ToolConfigPath, 1);
  262. return m_ToolConfigInfos.Find(t => t.id == _id.ToString());
  263. }
  264. /// <summary>
  265. /// 通过工具名称获取工具配置信息
  266. /// </summary>
  267. /// <param name="_toolName"></param>
  268. /// <returns></returns>
  269. public ToolConfigInfo GetTooConfigInfoByToolName(string _toolName)
  270. {
  271. if (m_ToolConfigInfos == null) m_ToolConfigInfos = ExcelHelper.ReadInfoFromExcel<ToolConfigInfo>(m_ToolConfigPath, 1);
  272. return m_ToolConfigInfos.Find(t => t.toolName == _toolName);
  273. }
  274. /// <summary>
  275. /// 设置工具背包的工具
  276. /// </summary>
  277. /// <param name="toolConfigInfos">工具信息</param>
  278. public void SetCurrrentToolRoomToolConfigInfos(List<ToolConfigInfo> toolConfigInfos)
  279. {
  280. m_CurrentToolRoomConfigInfos = toolConfigInfos;
  281. }
  282. /// <summary>
  283. /// 根据工具名查找工具精灵
  284. /// </summary>
  285. /// <param name="toolName"></param>
  286. /// <returns></returns>
  287. public Sprite GetSpriteByToolName(string toolName)
  288. {
  289. Sprite sprite = null;
  290. if (m_DicToolSprites.TryGetValue(toolName,out sprite))
  291. {
  292. return sprite;
  293. }
  294. else
  295. {
  296. string tmpPath = "Config/工具配置/工具配置图片/" + toolName;
  297. sprite = LoadHelper.LoadSpriteFromStreamming(tmpPath);
  298. if (sprite != null)
  299. {
  300. m_DicToolSprites.Add(toolName, sprite);
  301. }
  302. }
  303. return sprite;
  304. }
  305. }