TaskSProxy.cs 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. using System.Linq;
  2. using ET;
  3. using GFGGame;
  4. namespace ET
  5. {
  6. //M2C_TaskInfoChange
  7. public class M2C_TaskInfoChangeHandler : AMHandler<M2C_TaskInfoChange>
  8. {
  9. protected override async ETTask Run(Session session, M2C_TaskInfoChange message)
  10. {
  11. var taskInfo = new TaskInfo
  12. {
  13. ID = message.TaskInfo.Id,
  14. State = message.TaskInfo.Status,
  15. Progress = message.TaskInfo.Progress
  16. };
  17. TaskDataManager.Instance.UpdateTaskInfo(taskInfo.ID, taskInfo);
  18. EventAgent.DispatchEvent(ConstMessage.NOTICE_TASK_STATE_CHANGE, taskInfo.ID);
  19. await ETTask.CompletedTask;
  20. }
  21. }
  22. //M2C_TaskClose
  23. public class M2C_TaskCloseHandler : AMHandler<M2C_TaskClose>
  24. {
  25. protected override async ETTask Run(Session session, M2C_TaskClose message)
  26. {
  27. TaskDataManager.Instance.RemoveTaskInfo(message.TaskId);
  28. EventAgent.DispatchEvent(ConstMessage.NOTICE_TASK_STATE_CHANGE, message.TaskId);
  29. await ETTask.CompletedTask;
  30. }
  31. }
  32. }
  33. namespace GFGGame
  34. {
  35. public static class TaskSProxy
  36. {
  37. //获取所有类型的任务信息
  38. public static void GetTaskInfos()
  39. {
  40. for (var i = TaskType.Daily; i < TaskType.TaskMax; i++) GetTaskInfos(i).Coroutine();
  41. }
  42. //C2M_GetTaskInfos
  43. private static async ETTask<bool> GetTaskInfos(int taskType)
  44. {
  45. //C2M_GetTaskInfos
  46. var response = (M2C_GetTaskInfos)await MessageHelper.SendToServer(new C2M_GetTaskInfos { Type = taskType });
  47. response.TaskList.ForEach(proto =>
  48. {
  49. var taskInfo = new TaskInfo
  50. {
  51. ID = proto.Id,
  52. State = proto.Status,
  53. Progress = proto.Progress
  54. };
  55. TaskDataManager.Instance.UpdateTaskInfo(taskInfo.ID, taskInfo);
  56. });
  57. return response.Error == ErrorCode.ERR_Success;
  58. }
  59. //C2M_GetTaskBonus
  60. public static async ETTask<bool> GetTaskBonus(int taskId)
  61. {
  62. //C2M_GetTaskBonus
  63. var response = (M2C_GetTaskBonus)await MessageHelper.SendToServer(new C2M_GetTaskBonus { Id = taskId });
  64. if (!(response is { Error: ErrorCode.ERR_Success })) return false;
  65. TaskDataManager.Instance.UpdateTaskState(response.Id, response.Status);
  66. var bonus = TaskCfgArray.Instance.GetCfg(response.Id).rewardsArr;
  67. BonusController.TryShowBonusList(bonus);
  68. return true;
  69. }
  70. //C2M_GetAllTaskBonus
  71. public static async ETTask<bool> GetAllTaskBonus(int taskType)
  72. {
  73. //C2M_GetAllTaskBonus
  74. var response =
  75. (M2C_GetAllTaskBonus)await MessageHelper.SendToServer(new C2M_GetAllTaskBonus { Type = taskType });
  76. if (!(response is { Error: ErrorCode.ERR_Success })) return false;
  77. // BonusController.TryShowBonusList(ItemUtil.CreateItemDataList(response.bonusList));
  78. foreach (var taskInfo in response.TaskList.Select(t => new TaskInfo
  79. { ID = t.Id, State = t.Status, Progress = t.Progress }))
  80. {
  81. TaskDataManager.Instance.UpdateTaskInfo(taskInfo.ID, taskInfo);
  82. }
  83. var itemDatas = ItemUtil.CreateItemDataList(response.BonusList);
  84. BonusController.TryShowBonusList(itemDatas);
  85. return true;
  86. }
  87. }
  88. }