| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 | using System.Collections.Generic;using System.Linq;using ET;using GFGGame;namespace ET{    //M2C_TaskInfoChange    // public class M2C_TaskInfoChangeHandler : AMHandler<M2C_TaskInfoChange>    // {    //     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<M2C_TaskClose>    {        protected override async ETTask Run(Session session, M2C_TaskClose message)        {            TaskDataManager.Instance.RemoveTaskInfo(message.TaskId);            EventAgent.DispatchEvent(ConstMessage.NOTICE_BATCH_TASK_STATE_CHANGE, new List<int> { message.TaskId });            EventAgent.DispatchEvent(ConstMessage.RED_CHANGE);            await ETTask.CompletedTask;        }    }    //通知任务重置    public class M2C_TaskResetHandler : AMHandler<M2C_TaskChange>    {        protected override async ETTask Run(Session session, M2C_TaskChange message)        {            var changeIds = new List<int>();            message.TaskList.ForEach(proto =>            {                var taskInfo = new TaskInfo { ID = proto.Id, State = proto.Status, Progress = proto.Progress };                TaskDataManager.Instance.UpdateTaskInfo(taskInfo.ID, taskInfo);                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;        }        public class M2C_AchievementTaskTypeChangeHandler : AMHandler<M2C_AchievementTaskTypeChange>        {            protected override async ETTask Run(Session session, M2C_AchievementTaskTypeChange message)            {                TaskDataManager.Instance.SaveAchievementTaskTypePro(message.AchievementTaskTypeProto);                EventAgent.DispatchEvent(ConstMessage.ACHIEVEMENT_TASK_PRO_CHANGED);                await ETTask.CompletedTask;            }        }    }}namespace GFGGame{    public static class TaskSProxy    {        //获取所有类型的任务信息        public static void GetTaskInfos()        {            TaskDataManager.Instance.Clear();            for (var i = TaskFuncType.Daily; i < TaskFuncType.LessThan; i++) GetTaskInfos(i).Coroutine();        }        //C2M_GetTaskInfos        private static async ETTask<bool> GetTaskInfos(int taskType)        {            //C2M_GetTaskInfos            var response = (M2C_GetTaskInfos)await MessageHelper.SendToServer(new C2M_GetTaskInfos { Type = taskType });            var changeIds = new List<int>();            response.TaskList.ForEach(proto =>            {                var taskInfo = new TaskInfo                {                    ID = proto.Id,                    State = proto.Status,                    Progress = proto.Progress,                    FuncType = proto.FuncType                };                TaskDataManager.Instance.UpdateTaskInfo(taskInfo.ID, taskInfo);                changeIds.Add(taskInfo.ID);            });            EventAgent.DispatchEvent(ConstMessage.NOTICE_BATCH_TASK_STATE_CHANGE, changeIds);            EventAgent.DispatchEvent(ConstMessage.RED_CHANGE);            return response.Error == ErrorCode.ERR_Success;        }        //C2M_GetTaskBonus        public static async ETTask<bool> 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;            if (response.NextTask != null) {                var taskInfo = new TaskInfo                {                    ID = response.NextTask.Id,                    State = response.NextTask.Status,                    Progress = response.NextTask.Progress,                    FuncType = response.NextTask.FuncType                };                TaskDataManager.Instance.UpdateTaskInfo(response.NextTask.Id, taskInfo);                if(response.NextTask.Id != response.Id)                    TaskDataManager.Instance.RemoveTaskInfo(response.Id);            }            else                TaskDataManager.Instance.UpdateTaskState(response.Id, response.Status);            EventAgent.DispatchEvent(ConstMessage.NOTICE_BATCH_TASK_STATE_CHANGE, new List<int> { taskId });            EventAgent.DispatchEvent(ConstMessage.RED_CHANGE);            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<bool> 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));            var changeIds = new List<int>();            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);                changeIds.Add(taskInfo.ID);            }            var itemDatas = ItemUtil.CreateItemDataList(response.BonusList);            BonusController.TryShowBonusList(itemDatas);            EventAgent.DispatchEvent(ConstMessage.NOTICE_BATCH_TASK_STATE_CHANGE, changeIds);            EventAgent.DispatchEvent(ConstMessage.RED_CHANGE);            return true;        }        public static async ETTask<bool> GetTaskTypePro()        {            var response = (M2C_GetAchievementTaskTypePro)await MessageHelper.SendToServer(new C2M_GetAchievementTaskTypePro {});            if (!(response is { Error: ErrorCode.ERR_Success })) return false;            if (response.AchievementTaskTypeProList != null)            {                TaskDataManager.Instance.SaveAchievementTaskTypeProList(response.AchievementTaskTypeProList);                EventAgent.DispatchEvent(ConstMessage.ACHIEVEMENT_TASK_PRO_CHANGED);            }            return true;        }    }}
 |