SuitCfgManager.cs 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. using System.Collections.Generic;
  2. namespace GFGGame
  3. {
  4. public class SuitCfgManager : SingletonBase<SuitCfgManager>
  5. {
  6. private Dictionary<int, int> _suitIDDicByItemID;
  7. private Dictionary<int, int> _totalCountDic = new Dictionary<int, int>();
  8. /// <summary>
  9. /// 获取所有套装中部件的总个数
  10. /// </summary>
  11. public int totalItemCount
  12. {
  13. get;
  14. private set;
  15. }
  16. public SuitCfgManager()
  17. {
  18. InitDic();
  19. }
  20. /// <summary>
  21. /// 获取物品所属套装id
  22. /// </summary>
  23. /// <param name="itemId"></param>
  24. /// <returns></returns>
  25. public int GetItemSuitId(int itemId)
  26. {
  27. if (_suitIDDicByItemID.ContainsKey(itemId))
  28. {
  29. return _suitIDDicByItemID[itemId];
  30. }
  31. return 0;
  32. }
  33. /// <summary>
  34. /// 获取指定套装中部件的总数
  35. /// </summary>
  36. /// <param name="suitId"></param>
  37. /// <returns></returns>
  38. public int GetTotalCountOfOneSuit(int suitId)
  39. {
  40. return _totalCountDic[suitId];
  41. }
  42. /// <summary>
  43. /// 获取指定套装中部件的id数组
  44. /// </summary>
  45. /// <param name="suitId"></param>
  46. /// <returns></returns>
  47. public int[] GetSuitItems(int suitId, bool checkScene = false)
  48. {
  49. SuitCfg suitCfg = SuitCfgArray.Instance.GetCfg(suitId);
  50. if (checkScene)
  51. {
  52. List<int> parts = new List<int>();
  53. for (int i = 0; i < suitCfg.partsArr.Length; i++)
  54. {
  55. if (!DressUpMenuItemDataManager.CheckIsSceneType(suitCfg.partsArr[i]))
  56. {
  57. parts.Add(suitCfg.partsArr[i]);
  58. }
  59. }
  60. return parts.ToArray();
  61. }
  62. return suitCfg.partsArr;
  63. }
  64. private void InitDic()
  65. {
  66. _suitIDDicByItemID = new Dictionary<int, int>();
  67. SuitCfg[] dataArray = SuitCfgArray.Instance.dataArray;
  68. foreach (SuitCfg suitCfg in dataArray)
  69. {
  70. parseSuitItems(suitCfg);
  71. }
  72. }
  73. private void parseSuitItems(SuitCfg suitCfg)
  74. {
  75. int[] items = suitCfg.partsArr;
  76. int len = items.Length;
  77. for (int i = 0; i < len; i++)
  78. {
  79. int itemID = items[i];
  80. _suitIDDicByItemID.Add(itemID, suitCfg.id);
  81. }
  82. int itemCount = items.Length;
  83. _totalCountDic[suitCfg.id] = itemCount;
  84. totalItemCount += itemCount;
  85. }
  86. }
  87. }