SuitFosterDatamanager.cs 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using ET;
  4. using UnityEngine;
  5. namespace GFGGame
  6. {
  7. public class SuitFosterDataManager : SingletonBase<SuitFosterDataManager>
  8. {
  9. public string[] stepNames = { "浆洗", "晾晒", "熏香", "熨烫", "整饬" };
  10. private Dictionary<int, SuitFosterData> _suitInfoBySuitIdDic = new Dictionary<int, SuitFosterData>();
  11. public void InitData()
  12. {
  13. _suitInfoBySuitIdDic.Clear();
  14. }
  15. public void InitServerData(SuitFosterData suitFosterData)
  16. {
  17. _suitInfoBySuitIdDic.Add(suitFosterData.suitId, suitFosterData);
  18. }
  19. public void SetMaintainSuit(int suitId, int maintainStep)
  20. {
  21. _suitInfoBySuitIdDic[suitId].maintainStep = maintainStep;
  22. // _suitInfoBySuitIdDic[suitId].maintainBonusSteps = maintainBonusSteps;
  23. EventAgent.DispatchEvent(ConstMessage.MAINTAIN_SUIT);
  24. }
  25. public void SetMaintainBonusSteps(int suitId, int maintainBonusSteps)
  26. {
  27. _suitInfoBySuitIdDic[suitId].maintainBonusSteps.Add(maintainBonusSteps);
  28. EventAgent.DispatchEvent(ConstMessage.GET_MAINTAIN_SUIT_BONUS);
  29. }
  30. public void SetMakeNewSuit(int suitId, int makeNewSuit)
  31. {
  32. _suitInfoBySuitIdDic[suitId].makeNewState = makeNewSuit;
  33. EventAgent.DispatchEvent(ConstMessage.MAKE_NEW_SUIT);
  34. }
  35. public SuitFosterData GetSuitFosterData(int suitId)
  36. {
  37. return _suitInfoBySuitIdDic.ContainsKey(suitId) ? _suitInfoBySuitIdDic[suitId] : new SuitFosterData() { suitId = suitId, maintainStep = 0, maintainBonusSteps = new List<int>(), makeNewState = 0 };
  38. }
  39. //加成属性服装占比
  40. public List<KeyValuePair<string, int>> GetPropertyPercentData(int suitId, int index)
  41. {
  42. SuitFosterCfg cfg = SuitFosterCfgArray.Instance.GetCfgs(suitId)[index];
  43. Dictionary<string, int> _data = new Dictionary<string, int>();
  44. int count = 0;
  45. for (int i = 0; i < cfg.partsArr.Length; i++)
  46. {
  47. ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(cfg.partsArr[i][0]);
  48. string type = ItemTypeCfgArray.Instance.GetCfg(itemCfg.subType).name;
  49. int num = 0;
  50. if (_data.ContainsKey(type))
  51. {
  52. num = _data[type];
  53. }
  54. num = num + cfg.partsArr[i][1];
  55. _data.Add(type, num);
  56. count += cfg.partsArr[i][1];
  57. }
  58. int percentCount = 0;
  59. int dicIndex = 0;
  60. ICollection keys = _data.Keys;
  61. Dictionary<string, int> _dataPercent = new Dictionary<string, int>();
  62. foreach (string key in keys)
  63. {
  64. if (dicIndex == _data.Count - 1)
  65. {
  66. _dataPercent.Add(key, 100 - percentCount);
  67. }
  68. else
  69. {
  70. _dataPercent.Add(key, Mathf.FloorToInt(_data[key] * 100 / count));
  71. }
  72. percentCount += _dataPercent[key];
  73. dicIndex++;
  74. }
  75. return new List<KeyValuePair<string, int>>(_dataPercent);
  76. }
  77. //获取当前阶段部件属性总值
  78. public SortedList GetPropertyData(int suitId, int index)
  79. {
  80. SortedList propertyData = new SortedList();
  81. int[][] partsArr = SuitFosterCfgArray.Instance.GetCfgs(suitId)[index].partsArr;
  82. for (int i = 0; i < partsArr.Length; i++)
  83. {
  84. ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(partsArr[i][0]);
  85. for (int j = 0; j < ConstDressUpScoreType.scoreTypeList().Count; j++)
  86. {
  87. int score = j + 1;
  88. string key = score.ToString();
  89. int count = ItemDataManager.GetScore(itemCfg.id, score);
  90. if (propertyData.ContainsKey(key))
  91. {
  92. count = count + (int)propertyData[key];
  93. propertyData[key] = count;
  94. }
  95. else
  96. {
  97. propertyData.Add(key, count);
  98. }
  99. }
  100. }
  101. return propertyData;
  102. }
  103. //0:已完成,1:养护中,2未养护
  104. public int GetFosterState(int suitId, int index)
  105. {
  106. SuitFosterData suitFosterData = this.GetSuitFosterData(suitId);
  107. if (index < suitFosterData.maintainStep)
  108. {
  109. return 0;
  110. }
  111. else if (index == suitFosterData.maintainStep)
  112. {
  113. return 1;
  114. }
  115. return 2;
  116. }
  117. public List<SuitFosterCfg> GetSuitFosterRewards(int suitId)
  118. {
  119. List<SuitFosterCfg> list = new List<SuitFosterCfg>();
  120. SuitFosterCfg[] cfg = SuitFosterCfgArray.Instance.GetCfgs(suitId);
  121. for (int i = 0; i < cfg.Length; i++)
  122. {
  123. if (cfg[i].rewardsArr.Length > 0)
  124. {
  125. list.Add(cfg[i]);
  126. }
  127. }
  128. return list;
  129. }
  130. private List<SuitFosterCfg> SortRewardList(List<SuitFosterCfg> list)
  131. {
  132. list.Sort((SuitFosterCfg a, SuitFosterCfg b) =>
  133. {
  134. return 0;
  135. });
  136. return list;
  137. }
  138. }
  139. }