using System.Collections.Generic; using ET; namespace GFGGame { public class TaskInfo { public int id; public int state;//任务奖励状态 由ConstBonusStatus定义 public int progress;//进度 } public class DailyTaskDataManager : SingletonBase { private Dictionary _taskInfos = new Dictionary(); private Dictionary _livenessBoxInfos = new Dictionary(); public void UpdateTaskInfo(int taskId, TaskInfo info) { if (!_taskInfos.ContainsKey(taskId)) { _taskInfos.Add(taskId, info); } else { _taskInfos[taskId] = info; } } public void UpdateTaskState(int taskId, int state) { _taskInfos[taskId].state = state; } public void UpdateLivenessBoxInfo(int boxId, int state) { if (!_livenessBoxInfos.ContainsKey(boxId)) { _livenessBoxInfos.Add(boxId, state); } else { _livenessBoxInfos[boxId] = state; } } /// /// 获取任务列表 /// /// public List GetDailyTaskCfgs() { List cfgs = new List(); foreach (int key in _taskInfos.Keys) { DailyTaskCfg cfg = DailyTaskCfgArray.Instance.GetCfg(key); cfgs.Add(cfg); } cfgs.Sort((DailyTaskCfg a, DailyTaskCfg b) => { int stateA = _taskInfos[a.id].state == 1 ? 1 : -1; int stateB = _taskInfos[b.id].state == 1 ? 1 : -1; if (stateA > stateB) return -1; if (stateB > stateA) return 1; return _taskInfos[a.id].state.CompareTo(_taskInfos[b.id].state); }); return cfgs; } /// /// 根据任务id获取任务状态 /// 0未完成,1可领取,2已领取 /// /// public int GetTaskStateById(int taskId) { if (!_taskInfos.ContainsKey(taskId)) { return 0; } else { return _taskInfos[taskId].state; } } /// /// 根据任务id获取任务进度 /// 0未完成,1可领取,2已领取 /// /// public int GetTaskProgressById(int taskId) { if (!_taskInfos.ContainsKey(taskId)) { return 0; } else { return _taskInfos[taskId].progress; } } /// /// 根据宝箱id获取宝箱状态 /// 0未完成,1可领取,2已领取 /// /// public int GetBoxStateById(int boxId) { if (!_livenessBoxInfos.ContainsKey(boxId)) { return 0; } else { return _livenessBoxInfos[boxId]; } } public string GetTaskDesc(int taskId) { DailyTaskCfg taskCfg = DailyTaskCfgArray.Instance.GetCfg(taskId); DailyTaskTypeCfg activeRewardCfg = DailyTaskTypeCfgArray.Instance.GetCfg(taskCfg.type); switch ((ConstDailyTaskType)activeRewardCfg.id) { case ConstDailyTaskType.CompleteInstanceZones: string name = ""; name = EctypeCfgArray.Instance.GetCfgs(taskCfg.paramsArr[0])[0].typeName; if (taskCfg.paramsArr.Length > 1) { name = EctypeCfgArray.Instance.GetCfg(taskCfg.paramsArr[0], taskCfg.paramsArr[1]).subName; } return string.Format(activeRewardCfg.desc, taskCfg.count, name); case ConstDailyTaskType.UseItem: ItemCfg cfg = ItemCfgArray.Instance.GetCfg(taskCfg.paramsArr[0]); return string.Format(activeRewardCfg.desc, taskCfg.count, cfg.name); case ConstDailyTaskType.UpgradeCardLvl: case ConstDailyTaskType.PlayLuckBox: return string.Format(activeRewardCfg.desc, taskCfg.count); } return ""; } /// /// 获取下一个奖励宝箱的活跃度 /// /// public int GetShowLivenessBoxNum() { DailyActiveRewardCfg[] cfgs = DailyActiveRewardCfgArray.Instance.dataArray; for (int i = 0; i < cfgs.Length; i++) { if (!_livenessBoxInfos.ContainsKey(cfgs[i].id) || _livenessBoxInfos[cfgs[i].id] != ConstBonusStatus.GOT) { return cfgs[i].count; } } int index = cfgs.Length - 1; return cfgs[index].count; } } }