TimeTracingSProxy.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using cfg.GfgCfg;
  5. using ET;
  6. namespace GFGGame
  7. {
  8. public class TimeTracingSProxy
  9. {
  10. //获取关卡最高分信息
  11. public static async ETTask<bool> ReqGetMaxLevelInfo(int chapID)
  12. {
  13. TimeTracingDataManager._LevelMaxInfoDic.Clear();
  14. M2C_GetCompositeLevelMaxScoreInfos response = null;
  15. response = (M2C_GetCompositeLevelMaxScoreInfos)await MessageHelper.SendToServer(
  16. new C2M_GetCompositeLevelMaxScoreInfos { ChapterId = chapID });
  17. if (!(response is { Error: ErrorCode.ERR_Success })) return false;
  18. ActivityFightCfg chapterCfg = CommonDataManager.Tables.TblActivityFightCfg.GetOrDefault(chapID);
  19. if (chapterCfg == null)
  20. {
  21. Log.Error($"chapterCfg is null. chapID:{chapID}");
  22. return false;
  23. }
  24. var list = CommonDataManager.Tables.TblStoryLevelCfg.DataList.Where(a =>
  25. a.Type == chapterCfg.Type && a.SubType == chapterCfg.SubType && a.ChapterId == chapterCfg.Id).ToList();
  26. Dictionary<int, LevelRoleInfoProto> levelInfo;
  27. levelInfo = new Dictionary<int, LevelRoleInfoProto>();
  28. for (int i = 0; i < response.LevelRoleInfoList.Count; i++)
  29. {
  30. levelInfo.Add(list[i].Id, response.LevelRoleInfoList[i]);
  31. }
  32. if (!TimeTracingDataManager._LevelMaxInfoDic.ContainsKey(chapID))
  33. {
  34. TimeTracingDataManager._LevelMaxInfoDic.Add(chapID, levelInfo);
  35. }
  36. else
  37. {
  38. TimeTracingDataManager._LevelMaxInfoDic[chapID] = levelInfo;
  39. }
  40. return true;
  41. }
  42. //获取套装积分奖励状态(已领取的奖励id)
  43. public static async ETTask<bool> ReqGetSuitRewardStatus()
  44. {
  45. TimeTracingDataManager.ChapterRewardDic.Clear();
  46. S2C_GetChapterRewardList response = null;
  47. response = (S2C_GetChapterRewardList)await MessageHelper.SendToServer(new C2S_GetChapterRewardList { });
  48. if (!(response is { Error: ErrorCode.ERR_Success })) return false;
  49. TimeTracingDataManager.ChapterRewardDic = response.RewardIds;
  50. return true;
  51. }
  52. //领取套装积分奖励
  53. public static async ETTask<bool> ReqGetSuitReward(int rewardId)
  54. {
  55. S2C_GetChapterReward response =
  56. (S2C_GetChapterReward)await MessageHelper.SendToServer(new C2S_GetChapterReward
  57. { RewardId = rewardId });
  58. Dictionary<int, int> rewardData = new Dictionary<int, int>();
  59. if (!(response is { Error: ErrorCode.ERR_Success })) return false;
  60. TimeTracingDataManager.ChapterRewardDic = response.RewardIds;
  61. // 奖励弹窗
  62. BonusController.TryShowBonusList(ItemUtil.CreateItemDataList(response.BonusList));
  63. return true;
  64. }
  65. //获取关卡评分奖励状态
  66. public static async ETTask<bool> ReqGetLevelRewardStatus()
  67. {
  68. TimeTracingDataManager.LevelRewardDic.Clear();
  69. foreach (int chapterId in TimeTracingDataManager.Instance.chapterIdList)
  70. {
  71. ActivityFightCfg chapterCfg = CommonDataManager.Tables.TblActivityFightCfg.GetOrDefault(chapterId);
  72. if (chapterCfg == null) continue;
  73. // 一次性获取所有相关关卡配置
  74. var levelConfigs = CommonDataManager.Tables.TblStoryLevelCfg.DataList
  75. .Where(a => a.Type == chapterCfg.Type &&
  76. a.SubType == chapterCfg.SubType &&
  77. a.ChapterId == chapterCfg.Id)
  78. .ToList();
  79. foreach (StoryLevelCfg levelConfig in levelConfigs)
  80. {
  81. // 发送请求获取奖励状态
  82. var response = (S2C_GetInstanceZonesRatingRewardList)await MessageHelper.SendToServer(
  83. new C2S_GetInstanceZonesRatingRewardList { StoryLevelId = levelConfig.Id });
  84. if (!(response is { Error: ErrorCode.ERR_Success }))
  85. return false;
  86. // 使用LINQ创建奖励字典
  87. var rewardData = response.RewardKs
  88. .Select((key, index) => new { key, value = response.RewardVs[index] })
  89. .ToDictionary(x => x.key, x => x.value);
  90. // 更新字典(简化操作)
  91. TimeTracingDataManager.LevelRewardDic[levelConfig.Id] = rewardData;
  92. }
  93. }
  94. return true;
  95. }
  96. //获取指定关卡评分奖励状态
  97. public static async ETTask<bool> ReqGetAppointLevelRewardStatus(int levelID)
  98. {
  99. Dictionary<int, int> rewardData = null;
  100. S2C_GetInstanceZonesRatingRewardList response = null;
  101. rewardData = new Dictionary<int, int>();
  102. response = (S2C_GetInstanceZonesRatingRewardList)await MessageHelper.SendToServer(
  103. new C2S_GetInstanceZonesRatingRewardList { StoryLevelId = levelID });
  104. if (!(response is { Error: ErrorCode.ERR_Success })) return false;
  105. for (int j = 0; j < response.RewardKs.Count; j++)
  106. {
  107. rewardData.Add(response.RewardKs[j], response.RewardVs[j]);
  108. }
  109. if (TimeTracingDataManager.LevelRewardDic.ContainsKey(levelID))
  110. {
  111. TimeTracingDataManager.LevelRewardDic[levelID] = rewardData;
  112. }
  113. else
  114. {
  115. TimeTracingDataManager.LevelRewardDic.Add(levelID, rewardData);
  116. }
  117. return true;
  118. }
  119. //领取条积分奖励
  120. public static async ETTask<bool> ReqGetLevelReward(int levelId, int rewardId)
  121. {
  122. S2C_GetInstanceZonesRatingReward response =
  123. (S2C_GetInstanceZonesRatingReward)await MessageHelper.SendToServer(new C2S_GetInstanceZonesRatingReward
  124. { StoryLevelId = levelId, RewardId = rewardId });
  125. Dictionary<int, int> rewardData = new Dictionary<int, int>();
  126. if (!(response is { Error: ErrorCode.ERR_Success })) return false;
  127. for (int j = 0; j < response.RewardKs.Count; j++)
  128. {
  129. rewardData.Add(response.RewardKs[j], response.RewardVs[j]);
  130. }
  131. TimeTracingDataManager.LevelRewardDic[levelId] = rewardData;
  132. // 奖励弹窗
  133. BonusController.TryShowBonusList(ItemUtil.CreateItemDataList(response.BonusList));
  134. return true;
  135. }
  136. //领取全部积分奖励
  137. public static async ETTask<bool> ReqGetAllLevelReward(int levelID)
  138. {
  139. S2C_GetAllInstanceZonesRatingReward response =
  140. (S2C_GetAllInstanceZonesRatingReward)await MessageHelper.SendToServer(
  141. new C2S_GetAllInstanceZonesRatingReward { StoryLevelId = levelID });
  142. Dictionary<int, int> rewardData = new Dictionary<int, int>();
  143. if (!(response is { Error: ErrorCode.ERR_Success })) return false;
  144. for (int j = 0; j < response.RewardKs.Count; j++)
  145. {
  146. rewardData.Add(response.RewardKs[j], response.RewardVs[j]);
  147. }
  148. TimeTracingDataManager.LevelRewardDic[levelID] = rewardData;
  149. EventAgent.DispatchEvent(ConstMessage.TIMETRACINGREDUPDATE);
  150. // 奖励弹窗
  151. BonusController.TryShowBonusList(ItemUtil.CreateItemDataList(response.BonusList));
  152. return true;
  153. }
  154. //获取套装排名榜数据
  155. public static async ETTask<bool> ReqGetSuitRank(int suitID)
  156. {
  157. TimeTracingDataManager.Instance.SuitRankDatasDic[0].Clear();
  158. S2C_GetSuitCollectRankList response =
  159. (S2C_GetSuitCollectRankList)await MessageHelper.SendToServer(new C2S_GetSuitCollectRankList
  160. { SuitId = suitID });
  161. TimeTracingDataManager.Instance.SuitRankDatasDic[0] = response.SuitCollectRankList;
  162. TimeTracingDataManager.RefreshTime = response.NexTime;
  163. TimeTracingDataManager.Instance.mySuitRankInfo[0] = response.MySuitCollectRank;
  164. return true;
  165. }
  166. //获取套装好友排名榜数据
  167. public static async ETTask<bool> ReqGetSuitFriendRank(int suitID)
  168. {
  169. TimeTracingDataManager.Instance.SuitRankDatasDic[1].Clear();
  170. S2C_GetFriendSuitCollectRankList response =
  171. (S2C_GetFriendSuitCollectRankList)await MessageHelper.SendToServer(new C2S_GetFriendSuitCollectRankList
  172. { SuitId = suitID });
  173. TimeTracingDataManager.Instance.SuitRankDatasDic[1] = response.FriendSuitCollectRankList;
  174. TimeTracingDataManager.Instance.mySuitRankInfo[1] = response.MySuitCollectRank;
  175. return true;
  176. }
  177. //获取关卡排行榜信息
  178. public static async ETTask<bool> ReqGetLevelRank(int levelID)
  179. {
  180. TimeTracingDataManager.Instance.LevelRankDatasDic[0].Clear();
  181. S2C_GetInstanceZonesRankList response =
  182. (S2C_GetInstanceZonesRankList)await MessageHelper.SendToServer(new C2S_GetInstanceZonesRankList
  183. { LevelCfgId = levelID });
  184. TimeTracingDataManager.Instance.LevelRankDatasDic[0] = response.LevelRankList;
  185. TimeTracingDataManager.RefreshTime = response.NexTime;
  186. TimeTracingDataManager.Instance.myLevelRankInfo[0] = response.MyLevelRankInfo;
  187. return true;
  188. }
  189. //获取关卡好友排行榜数据
  190. public static async ETTask<bool> ReqGetLevelFriendRank(int levelID)
  191. {
  192. TimeTracingDataManager.Instance.LevelRankDatasDic[1].Clear();
  193. S2C_GetInstanceZonesFriendRankList response =
  194. (S2C_GetInstanceZonesFriendRankList)await MessageHelper.SendToServer(
  195. new C2S_GetInstanceZonesFriendRankList { LevelCfgId = levelID });
  196. TimeTracingDataManager.Instance.LevelRankDatasDic[1] = response.FriendLevelRankList;
  197. TimeTracingDataManager.Instance.myLevelRankInfo[1] = response.MyLevelRank;
  198. return true;
  199. }
  200. public static async ETTask<bool> ReqSetDataRecord(long SuitID)
  201. {
  202. TimeTracingDataManager.Instance.LevelRankDatasDic[1].Clear();
  203. S2C_UpdateDataRecord response =
  204. (S2C_UpdateDataRecord)await MessageHelper.SendToServer(new C2S_UpdateDataRecord()
  205. { K = 6200123, V = SuitID });
  206. return true;
  207. }
  208. public static async ETTask<bool> ReqGetDataRecord()
  209. {
  210. TimeTracingDataManager.Instance.LevelRankDatasDic[1].Clear();
  211. S2C_GetDataRecord response =
  212. (S2C_GetDataRecord)await MessageHelper.SendToServer(new C2S_GetDataRecord() { });
  213. for (int i = 0; i < response.AllKs.Count; i++)
  214. {
  215. if (response.AllKs[i] == 6200123)
  216. {
  217. TimeTracingDataManager.SuitID = (int)response.AllVs[i];
  218. List<ActivityOpenCfg> activityCfgList =
  219. CommonDataManager.Tables.TblActivityOpenCfg.DataList.Where(a => a.Type == 21).ToList();
  220. foreach (var item in activityCfgList)
  221. {
  222. if (item.Params1[0] == (int)response.AllVs[i])
  223. {
  224. TimeTracingDataManager._currentChapterId = item.Params3[0];
  225. break;
  226. }
  227. }
  228. return true;
  229. }
  230. }
  231. return true;
  232. }
  233. }
  234. }