SuitCfgArray.cs 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. using System;
  2. using System.Collections.Generic;
  3. using cfg.GfgCfg;
  4. using ET;
  5. namespace GFGGame
  6. {
  7. public class SuitCfgArray : SingletonBaseET<SuitCfgArray>
  8. {
  9. /// <summary>
  10. /// 获取物品所属套装id
  11. /// </summary>
  12. /// <param name="itemId"></param>
  13. /// <returns></returns>
  14. public int GetSuitIdOfItem(int itemId)
  15. {
  16. var itemCfg = CommonDataManager.Tables.TblItemCfg.GetOrDefault(itemId);
  17. if (itemCfg != null)
  18. {
  19. return itemCfg.SuitId;
  20. }
  21. return 0;
  22. }
  23. /// <summary>
  24. /// 获取指定套装中部件的总数
  25. /// </summary>
  26. /// <param name="suitId"></param>
  27. /// <returns></returns>
  28. public int GetTotalCountOfOneSuit(int suitId)
  29. {
  30. var suitCfg = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(suitId);
  31. if (suitCfg != null)
  32. {
  33. return suitCfg.Parts.Count;
  34. }
  35. return 0;
  36. }
  37. /// <summary>
  38. /// 获取指定套装中部件的id数组
  39. /// </summary>
  40. /// <param name="suitId"></param>
  41. /// <returns></returns>
  42. public int[] GetSuitItems(int suitId, bool excludeSceneType = false)
  43. {
  44. SuitCfg suitCfg = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(suitId);
  45. if (suitCfg == null)
  46. {
  47. ET.Log.Error(suitId + " SuitCfgArray配置不存在");
  48. }
  49. if (excludeSceneType)
  50. {
  51. List<int> parts = new List<int>();
  52. for (int i = 0; i < suitCfg.Parts.Count; i++)
  53. {
  54. if (!DressUpMenuItemCfg1Array.Instance.CheckIsSceneType(suitCfg.Parts[i]))
  55. {
  56. parts.Add(suitCfg.Parts[i]);
  57. }
  58. }
  59. return parts.ToArray();
  60. }
  61. return suitCfg.Parts.ToArray();
  62. }
  63. //指定套装动作是否包含某物品
  64. public bool CheckActionContainsItem(int itemId, int actionId)
  65. {
  66. var suitCfg = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(actionId);
  67. if (Array.IndexOf(suitCfg.Parts.ToArray(), itemId) < 0)
  68. {
  69. return false;
  70. }
  71. if (!CheckItemReaplaceableOnAction(itemId, actionId))
  72. {
  73. return true;
  74. }
  75. return false;
  76. }
  77. //指定套装动作状态下某物品是否可以单换
  78. public bool CheckItemReaplaceableOnAction(int itemId, int actionId)
  79. {
  80. if (DressUpMenuItemCfg1Array.Instance.CheckIsSceneType(itemId))
  81. {
  82. return true;
  83. }
  84. var itemCfg = CommonDataManager.Tables.TblItemCfg.GetOrDefault(itemId);
  85. if (CheckItemNotInAction(itemId))
  86. {
  87. return true;
  88. }
  89. if (Array.IndexOf(CommonDataManager.Tables.TblGlobalCfg.ItemSubTypesReplaceableInAction.ToArray(),
  90. itemCfg.SubType) >=
  91. 0)
  92. {
  93. return true;
  94. }
  95. var suitCfg = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(actionId);
  96. if (Array.IndexOf(suitCfg.SubTypesReplaceable.ToArray(), itemCfg.SubType) >= 0)
  97. {
  98. return true;
  99. }
  100. return false;
  101. }
  102. //物品是否不属于动作包含的部件类型
  103. public bool CheckItemNotInAction(int itemId)
  104. {
  105. if (DressUpMenuItemCfg1Array.Instance.CheckIsSceneType(itemId))
  106. {
  107. return true;
  108. }
  109. var itemCfg = CommonDataManager.Tables.TblItemCfg.GetOrDefault(itemId);
  110. if (Array.IndexOf(CommonDataManager.Tables.TblGlobalCfg.ItemSubTypesReplaceableByAction.ToArray(),
  111. itemCfg.SubType) >= 0)
  112. {
  113. return true;
  114. }
  115. var suitCfg = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(itemCfg.SuitId);
  116. if (suitCfg != null)
  117. {
  118. if (Array.IndexOf(suitCfg.PartsSpecial.ToArray(), itemId) >= 0)
  119. {
  120. return true;
  121. }
  122. }
  123. return false;
  124. }
  125. //检查套装是否有动作
  126. public bool CheckSuitHasAction(int suitId)
  127. {
  128. var suitCfg = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(suitId);
  129. return suitCfg != null && !string.IsNullOrEmpty(suitCfg.AniRes);
  130. }
  131. /// <summary>
  132. /// 获取一个套装的所有非动作部件
  133. /// </summary>
  134. /// <param name="suitId"></param>
  135. /// <returns></returns>
  136. public List<int> GetOneSuitAllNotActionParts(int suitId)
  137. {
  138. List<int> notActionParts = new List<int>();
  139. var suitCfg = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(suitId);
  140. for (int i = 0; i < suitCfg.Parts.Count; i++)
  141. {
  142. if (CheckItemNotInAction(suitCfg.Parts[i]))
  143. {
  144. notActionParts.Add(suitCfg.Parts[i]);
  145. }
  146. }
  147. return notActionParts;
  148. }
  149. /// <summary>
  150. /// 获取一个动作的所有动作部件
  151. /// </summary>
  152. /// <param name="actionId"></param>
  153. /// <returns></returns>
  154. public List<int> GetOneSuitAllActionParts(int actionId)
  155. {
  156. List<int> actionParts = new List<int>();
  157. var suitCfg = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(actionId);
  158. for (int i = 0; i < suitCfg.Parts.Count; i++)
  159. {
  160. if (!CheckItemNotInAction(suitCfg.Parts[i]))
  161. {
  162. actionParts.Add(suitCfg.Parts[i]);
  163. }
  164. }
  165. return actionParts;
  166. }
  167. }
  168. }