SuitFosterDatamanager.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  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. int count = ItemDataManager.GetScore(itemCfg.id, score);
  89. if (propertyData.ContainsKey(score))
  90. {
  91. count = count + (int)propertyData[score];
  92. }
  93. propertyData.Add(score, count);
  94. }
  95. }
  96. return propertyData;
  97. }
  98. //0:已完成,1:养护中,2未养护
  99. public int GetFosterState(int suitId, int index)
  100. {
  101. SuitFosterData suitFosterData = this.GetSuitFosterData(suitId);
  102. if (index < suitFosterData.maintainStep)
  103. {
  104. return 0;
  105. }
  106. else if (index == suitFosterData.maintainStep)
  107. {
  108. return 1;
  109. }
  110. return 2;
  111. }
  112. }
  113. }