BattlePassTaskSProxy.cs 6.5 KB

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