using System.Collections.Generic; using System.Linq; using ET; using GFGGame; using UnityEditor; namespace ET { //M2C_TaskInfoChange public class M2C_TaskInfoChangeHandler : AMHandler { protected override async ETTask Run(Session session, M2C_TaskInfoChange message) { var taskInfo = new TaskInfo { ID = message.TaskInfo.Id, State = message.TaskInfo.Status, Progress = message.TaskInfo.Progress }; TaskDataManager.Instance.UpdateTaskInfo(taskInfo.ID, taskInfo); await ETTask.CompletedTask; } } //M2C_TaskClose public class M2C_TaskCloseHandler : AMHandler { protected override async ETTask Run(Session session, M2C_TaskClose message) { TaskDataManager.Instance.RemoveTaskInfo(message.TaskId); EventAgent.DispatchEvent(ConstMessage.NOTICE_TASK_STATE_CHANGE, message.TaskId); EventAgent.DispatchEvent(ConstMessage.RED_CHANGE); await ETTask.CompletedTask; } } //通知任务重置 public class M2C_TaskResetHandler : AMHandler { protected override async ETTask Run(Session session, M2C_TaskReset message) { var changeIds = new List(); message.TaskList.ForEach(proto => { var taskInfo = new TaskInfo { ID = proto.Id, State = proto.Status, Progress = proto.Progress }; TaskDataManager.Instance.UpdateTaskInfo(taskInfo.ID, taskInfo, false); changeIds.Add(taskInfo.ID); }); //NOTICE_TASK_STATE_CHANGE //NOTICE_BATCH_TASK_STATE_CHANGE EventAgent.DispatchEvent(ConstMessage.NOTICE_BATCH_TASK_STATE_CHANGE, changeIds); EventAgent.DispatchEvent(ConstMessage.RED_CHANGE); await ETTask.CompletedTask; } } } namespace GFGGame { public static class TaskSProxy { //获取所有类型的任务信息 public static void GetTaskInfos() { for (var i = TaskType.Daily; i < TaskType.TaskMax; i++) GetTaskInfos(i).Coroutine(); } //C2M_GetTaskInfos private static async ETTask GetTaskInfos(int taskType) { //C2M_GetTaskInfos var response = (M2C_GetTaskInfos)await MessageHelper.SendToServer(new C2M_GetTaskInfos { Type = taskType }); var changeIds = new List(); response.TaskList.ForEach(proto => { var taskInfo = new TaskInfo { ID = proto.Id, State = proto.Status, Progress = proto.Progress }; TaskDataManager.Instance.UpdateTaskInfo(taskInfo.ID, taskInfo, false); changeIds.Add(taskInfo.ID); }); EventAgent.DispatchEvent(ConstMessage.NOTICE_TASK_STATE_CHANGE, changeIds); EventAgent.DispatchEvent(ConstMessage.RED_CHANGE); return response.Error == ErrorCode.ERR_Success; } //C2M_GetTaskBonus public static async ETTask GetTaskBonus(int taskId) { //C2M_GetTaskBonus var response = (M2C_GetTaskBonus)await MessageHelper.SendToServer(new C2M_GetTaskBonus { Id = taskId }); if (!(response is { Error: ErrorCode.ERR_Success })) return false; TaskDataManager.Instance.UpdateTaskState(response.Id, response.Status); var taskCfg = TaskCfgArray.Instance.GetCfg(response.Id); if (taskCfg == null) return false; var bonus = TaskDataManager.Instance.GetReward(taskCfg); BonusController.TryShowBonusList(bonus); return true; } //C2M_GetAllTaskBonus public static async ETTask GetAllTaskBonus(int taskType) { //C2M_GetAllTaskBonus var response = (M2C_GetAllTaskBonus)await MessageHelper.SendToServer(new C2M_GetAllTaskBonus { Type = taskType }); if (!(response is { Error: ErrorCode.ERR_Success })) return false; // BonusController.TryShowBonusList(ItemUtil.CreateItemDataList(response.bonusList)); foreach (var taskInfo in response.TaskList.Select(t => new TaskInfo { ID = t.Id, State = t.Status, Progress = t.Progress })) { TaskDataManager.Instance.UpdateTaskInfo(taskInfo.ID, taskInfo); } var itemDatas = ItemUtil.CreateItemDataList(response.BonusList); BonusController.TryShowBonusList(itemDatas); return true; } } }