DailyTaskDataManager.cs 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. using System.Collections.Generic;
  2. using ET;
  3. namespace GFGGame
  4. {
  5. public class TaskInfo
  6. {
  7. public int id;
  8. public int state;//任务奖励状态 由ConstBonusStatus定义
  9. public int progress;//进度
  10. }
  11. public class DailyTaskDataManager : SingletonBase<DailyTaskDataManager>
  12. {
  13. private Dictionary<int, TaskInfo> _taskInfos = new Dictionary<int, TaskInfo>();
  14. private Dictionary<int, int> _livenessBoxInfos = new Dictionary<int, int>();
  15. public void UpdateTaskInfo(int taskId, TaskInfo info)
  16. {
  17. if (!_taskInfos.ContainsKey(taskId))
  18. {
  19. _taskInfos.Add(taskId, info);
  20. }
  21. else
  22. {
  23. _taskInfos[taskId] = info;
  24. }
  25. }
  26. public void UpdateTaskState(int taskId, int state)
  27. {
  28. _taskInfos[taskId].state = state;
  29. }
  30. public void UpdateLivenessBoxInfo(int boxId, int state)
  31. {
  32. if (!_livenessBoxInfos.ContainsKey(boxId))
  33. {
  34. _livenessBoxInfos.Add(boxId, state);
  35. }
  36. else
  37. {
  38. _livenessBoxInfos[boxId] = state;
  39. }
  40. }
  41. /// <summary>
  42. /// 获取任务列表
  43. /// </summary>
  44. /// <returns></returns>
  45. public List<DailyTaskCfg> GetDailyTaskCfgs()
  46. {
  47. List<DailyTaskCfg> cfgs = new List<DailyTaskCfg>();
  48. foreach (int key in _taskInfos.Keys)
  49. {
  50. DailyTaskCfg cfg = DailyTaskCfgArray.Instance.GetCfg(key);
  51. cfgs.Add(cfg);
  52. }
  53. cfgs.Sort((DailyTaskCfg a, DailyTaskCfg b) =>
  54. {
  55. int stateA = _taskInfos[a.id].state == 1 ? 1 : -1;
  56. int stateB = _taskInfos[b.id].state == 1 ? 1 : -1;
  57. if (stateA > stateB) return -1;
  58. if (stateB > stateA) return 1;
  59. return _taskInfos[a.id].state.CompareTo(_taskInfos[b.id].state);
  60. });
  61. return cfgs;
  62. }
  63. /// <summary>
  64. /// 根据任务id获取任务状态
  65. /// </summary>0未完成,1可领取,2已领取
  66. /// <param name="taskId"></param>
  67. /// <returns></returns>
  68. public int GetTaskStateById(int taskId)
  69. {
  70. if (!_taskInfos.ContainsKey(taskId))
  71. {
  72. return 0;
  73. }
  74. else
  75. {
  76. return _taskInfos[taskId].state;
  77. }
  78. }
  79. /// <summary>
  80. /// 根据任务id获取任务进度
  81. /// </summary>0未完成,1可领取,2已领取
  82. /// <param name="taskId"></param>
  83. /// <returns></returns>
  84. public int GetTaskProgressById(int taskId)
  85. {
  86. if (!_taskInfos.ContainsKey(taskId))
  87. {
  88. return 0;
  89. }
  90. else
  91. {
  92. return _taskInfos[taskId].progress;
  93. }
  94. }
  95. /// <summary>
  96. /// 根据宝箱id获取宝箱状态
  97. /// </summary>0未完成,1可领取,2已领取
  98. /// <param name="taskId"></param>
  99. /// <returns></returns>
  100. public int GetBoxStateById(int boxId)
  101. {
  102. if (!_livenessBoxInfos.ContainsKey(boxId))
  103. {
  104. return 0;
  105. }
  106. else
  107. {
  108. return _livenessBoxInfos[boxId];
  109. }
  110. }
  111. public string GetTaskDesc(int taskId)
  112. {
  113. DailyTaskCfg taskCfg = DailyTaskCfgArray.Instance.GetCfg(taskId);
  114. DailyTaskTypeCfg activeRewardCfg = DailyTaskTypeCfgArray.Instance.GetCfg(taskCfg.type);
  115. switch ((ConstDailyTaskType)activeRewardCfg.id)
  116. {
  117. case ConstDailyTaskType.CompleteInstanceZones:
  118. string name = "";
  119. name = EctypeCfgArray.Instance.GetCfgs(taskCfg.paramsArr[0])[0].typeName;
  120. if (taskCfg.paramsArr.Length > 1)
  121. {
  122. name = EctypeCfgArray.Instance.GetCfg(taskCfg.paramsArr[0], taskCfg.paramsArr[1]).subName;
  123. }
  124. return string.Format(activeRewardCfg.desc, taskCfg.count, name);
  125. case ConstDailyTaskType.UseItem:
  126. ItemCfg cfg = ItemCfgArray.Instance.GetCfg(taskCfg.paramsArr[0]);
  127. return string.Format(activeRewardCfg.desc, taskCfg.count, cfg.name);
  128. case ConstDailyTaskType.UpgradeCardLvl:
  129. case ConstDailyTaskType.PlayLuckBox:
  130. return string.Format(activeRewardCfg.desc, taskCfg.count);
  131. }
  132. return "";
  133. }
  134. /// <summary>
  135. /// 获取下一个奖励宝箱的活跃度
  136. /// </summary>
  137. /// <returns></returns>
  138. public int GetShowLivenessBoxNum()
  139. {
  140. DailyActiveRewardCfg[] cfgs = DailyActiveRewardCfgArray.Instance.dataArray;
  141. for (int i = 0; i < cfgs.Length; i++)
  142. {
  143. if (!_livenessBoxInfos.ContainsKey(cfgs[i].id) || _livenessBoxInfos[cfgs[i].id] != ConstBonusStatus.GOT)
  144. {
  145. return cfgs[i].count;
  146. }
  147. }
  148. int index = cfgs.Length - 1;
  149. return cfgs[index].count;
  150. }
  151. }
  152. }