123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- 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;
- }
- }
- }
- namespace GFGGame
- {
- public static class TaskSProxy
- {
- //获取所有类型的任务信息
- public static void GetTaskInfos()
- {
- TaskDataManager.Instance.Clear();
- for (var i = TaskType.Daily; i < TaskType.TaskMax; 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
- };
- 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;
- 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;
- }
- }
- }
|