DailyTaskDataManager.cs 5.5 KB

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