BattlePassTaskSProxy.cs 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. using System;
  2. using System.Collections.Generic;
  3. using cfg.GfgCfg;
  4. using ET;
  5. using GFGGame;
  6. using Hutool;
  7. namespace ET
  8. {
  9. public class M2C_SyncBattlePassHandler : AMHandler<M2C_SyncBattlePass>
  10. {
  11. protected override async ETTask Run(Session session, M2C_SyncBattlePass message)
  12. {
  13. var battlePassTaskDataManager = BattlePassTaskDataManager.Instance;
  14. if (battlePassTaskDataManager.GetSeasonId() != message.SeasonId)
  15. {
  16. return;
  17. }
  18. battlePassTaskDataManager.SetIsBuy(message.IsBuy);
  19. EventAgent.DispatchEvent(ConstMessage.NOTICE_PASSPORT_OPEN);
  20. EventAgent.DispatchEvent(ConstMessage.RED_CHANGE);
  21. await ETTask.CompletedTask;
  22. }
  23. }
  24. public class M2C_SyncBattlePassLevelHandler : AMHandler<M2C_SyncBattlePassLevel>
  25. {
  26. protected override async ETTask Run(Session session, M2C_SyncBattlePassLevel message)
  27. {
  28. var battlePassTaskDataManager = BattlePassTaskDataManager.Instance;
  29. foreach (var level in message.Level)
  30. {
  31. battlePassTaskDataManager.AddNormalReward(level);
  32. }
  33. foreach (var superLevel in message.SuperLevel)
  34. {
  35. battlePassTaskDataManager.AddSuperReward(superLevel);
  36. }
  37. EventAgent.DispatchEvent(ConstMessage.NOTICE_PASSPORT_LEVEL_CHANGE);
  38. await ETTask.CompletedTask;
  39. }
  40. }
  41. //M2C_SyncBattlePassSeasonId
  42. public class M2C_SyncBattlePassSeasonIdHandler : AMHandler<M2C_SyncBattlePassSeasonId>
  43. {
  44. protected override async ETTask Run(Session session, M2C_SyncBattlePassSeasonId message)
  45. {
  46. var battlePassTaskDataManager = BattlePassTaskDataManager.Instance;
  47. battlePassTaskDataManager.Clear();
  48. battlePassTaskDataManager.SetSeasonId(message.SeasonId);
  49. BattlePassTaskSProxy.GetBattlePassInfo().Coroutine();
  50. await ETTask.CompletedTask;
  51. }
  52. }
  53. }
  54. namespace GFGGame
  55. {
  56. public static class BattlePassTaskSProxy
  57. {
  58. //C2S_GetBattlePassInfo
  59. public static async ETTask GetBattlePassInfo()
  60. {
  61. var response = (S2C_GetBattlePassInfo)await MessageHelper.SendToServer(new C2S_GetBattlePassInfo());
  62. if (!(response is { Error: ErrorCode.ERR_Success })) return;
  63. var battlePassTaskDataManager = BattlePassTaskDataManager.Instance;
  64. battlePassTaskDataManager.SetIsBuy(response.IsBuy);
  65. battlePassTaskDataManager.SetSeasonId(response.SeasonId);
  66. battlePassTaskDataManager.initedFromServer = true;
  67. foreach (var level in response.RewardList)
  68. {
  69. battlePassTaskDataManager.AddNormalReward(level);
  70. }
  71. foreach (var superLevel in response.SuperRewardList)
  72. {
  73. battlePassTaskDataManager.AddSuperReward(superLevel);
  74. }
  75. EventAgent.DispatchEvent(ConstMessage.NOTICE_PASSPORT_SEASON_CHANGE);
  76. }
  77. //C2S_GetBattlePassReward
  78. public static async ETTask<bool> GetBattlePassReward(int level)
  79. {
  80. var response =
  81. (S2C_GetBattlePassReward)await MessageHelper.SendToServer(new C2S_GetBattlePassReward { Id = level });
  82. if (!(response is { Error: ErrorCode.ERR_Success })) return false;
  83. var responseGetType = response.Type;
  84. //获取通行证奖励配置
  85. BattlePassCfg passCfg =
  86. CommonDataManager.Tables.TblBattlePassCfg.Get(BattlePassTaskDataManager.Instance.GetSeasonId(), level);
  87. if (passCfg == null) return false;
  88. var passCfgBonusNormalArr = passCfg.BonusNormal;
  89. var passCfgBonusSuperArr = passCfg.BonusSpecial;
  90. var bonusList = new List<ItemData>();
  91. if (MathUtil.isBitSet(responseGetType, 1))
  92. {
  93. bonusList.AddRange(ItemUtil.CreateItemDataList(passCfgBonusNormalArr.ToGfgGameItemParam()));
  94. BattlePassTaskDataManager.Instance.AddNormalReward(level);
  95. }
  96. if (MathUtil.isBitSet(responseGetType, 2))
  97. {
  98. bonusList.AddRange(ItemUtil.CreateItemDataList(passCfgBonusSuperArr.ToGfgGameItemParam()));
  99. BattlePassTaskDataManager.Instance.AddSuperReward(level);
  100. }
  101. EventAgent.DispatchEvent(ConstMessage.RED_CHANGE);
  102. EventAgent.DispatchEvent(ConstMessage.STORE_BROCADE_WEAV_RECEIVE);
  103. BonusController.TryShowBonusList(bonusList);
  104. return true;
  105. }
  106. //C2S_GetAllBattlePassReward
  107. public static async ETTask<bool> GetAllBattlePassReward(Action onSuccess = null)
  108. {
  109. var response =
  110. (S2C_GetAllBattlePassReward)await MessageHelper.SendToServer(new C2S_GetAllBattlePassReward());
  111. if (!(response is { Error: ErrorCode.ERR_Success })) return false;
  112. var normalLevels = response.Levels;
  113. var superLevels = response.SuperLevels;
  114. var levels = new HashSet<int>();
  115. levels.UnionWith(normalLevels);
  116. levels.UnionWith(superLevels);
  117. var bonusList = new List<ItemData>();
  118. var dataManager = BattlePassTaskDataManager.Instance;
  119. foreach (var level in levels)
  120. {
  121. //获取通行证奖励配置
  122. var passCfg =
  123. CommonDataManager.Tables.TblBattlePassCfg.Get(dataManager.GetSeasonId(),
  124. level);
  125. if (normalLevels.Contains(level))
  126. {
  127. bonusList.AddRange(ItemUtil.CreateItemDataList(passCfg.BonusNormal.ToGfgGameItemParam()));
  128. dataManager.AddNormalReward(level);
  129. }
  130. if (superLevels.Contains(level))
  131. {
  132. bonusList.AddRange(ItemUtil.CreateItemDataList(passCfg.BonusSpecial.ToGfgGameItemParam()));
  133. dataManager.AddSuperReward(level);
  134. }
  135. }
  136. EventAgent.DispatchEvent(ConstMessage.RED_CHANGE);
  137. EventAgent.DispatchEvent(ConstMessage.STORE_BROCADE_WEAV_RECEIVE);
  138. BonusController.TryShowBonusList(bonusList, onSuccess);
  139. return true;
  140. }
  141. //购买等级 C2S_BuyBattlePassLevel
  142. public static async ETTask<bool> BuyBattlePassLevel(int upLevel)
  143. {
  144. var response = (S2C_BuyBattlePassLevel)await MessageHelper.SendToServer(new C2S_BuyBattlePassLevel
  145. { UpLevel = upLevel });
  146. return response is { Error: ErrorCode.ERR_Success };
  147. }
  148. }
  149. }