DailyTaskDataManager.cs 5.7 KB

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