using System; using System.Collections.Generic; using System.Linq; using cfg.GfgCfg; using ET; namespace GFGGame { public class TimeTracingSProxy { //获取关卡最高分信息 public static async ETTask ReqGetMaxLevelInfo(int chapID) { TimeTracingDataManager._LevelMaxInfoDic.Clear(); M2C_GetCompositeLevelMaxScoreInfos response = null; response = (M2C_GetCompositeLevelMaxScoreInfos)await MessageHelper.SendToServer( new C2M_GetCompositeLevelMaxScoreInfos { ChapterId = chapID }); if (!(response is { Error: ErrorCode.ERR_Success })) return false; ActivityFightCfg chapterCfg = CommonDataManager.Tables.TblActivityFightCfg.GetOrDefault(chapID); if (chapterCfg == null) { Log.Error($"chapterCfg is null. chapID:{chapID}"); return false; } var list = CommonDataManager.Tables.TblStoryLevelCfg.DataList.Where(a => a.Type == chapterCfg.Type && a.SubType == chapterCfg.SubType && a.ChapterId == chapterCfg.Id).ToList(); Dictionary levelInfo; levelInfo = new Dictionary(); for (int i = 0; i < response.LevelRoleInfoList.Count; i++) { levelInfo.Add(list[i].Id, response.LevelRoleInfoList[i]); } if (!TimeTracingDataManager._LevelMaxInfoDic.ContainsKey(chapID)) { TimeTracingDataManager._LevelMaxInfoDic.Add(chapID, levelInfo); } else { TimeTracingDataManager._LevelMaxInfoDic[chapID] = levelInfo; } return true; } //获取套装积分奖励状态(已领取的奖励id) public static async ETTask ReqGetSuitRewardStatus() { TimeTracingDataManager.ChapterRewardDic.Clear(); S2C_GetChapterRewardList response = null; response = (S2C_GetChapterRewardList)await MessageHelper.SendToServer(new C2S_GetChapterRewardList { }); if (!(response is { Error: ErrorCode.ERR_Success })) return false; TimeTracingDataManager.ChapterRewardDic = response.RewardIds; return true; } //领取套装积分奖励 public static async ETTask ReqGetSuitReward(int rewardId) { S2C_GetChapterReward response = (S2C_GetChapterReward)await MessageHelper.SendToServer(new C2S_GetChapterReward { RewardId = rewardId }); Dictionary rewardData = new Dictionary(); if (!(response is { Error: ErrorCode.ERR_Success })) return false; TimeTracingDataManager.ChapterRewardDic = response.RewardIds; // 奖励弹窗 BonusController.TryShowBonusList(ItemUtil.CreateItemDataList(response.BonusList)); return true; } //获取关卡评分奖励状态 public static async ETTask ReqGetLevelRewardStatus() { TimeTracingDataManager.LevelRewardDic.Clear(); foreach (int chapterId in TimeTracingDataManager.Instance.chapterIdList) { ActivityFightCfg chapterCfg = CommonDataManager.Tables.TblActivityFightCfg.GetOrDefault(chapterId); if (chapterCfg == null) continue; // 一次性获取所有相关关卡配置 var levelConfigs = CommonDataManager.Tables.TblStoryLevelCfg.DataList .Where(a => a.Type == chapterCfg.Type && a.SubType == chapterCfg.SubType && a.ChapterId == chapterCfg.Id) .ToList(); foreach (StoryLevelCfg levelConfig in levelConfigs) { // 发送请求获取奖励状态 var response = (S2C_GetInstanceZonesRatingRewardList)await MessageHelper.SendToServer( new C2S_GetInstanceZonesRatingRewardList { StoryLevelId = levelConfig.Id }); if (!(response is { Error: ErrorCode.ERR_Success })) return false; // 使用LINQ创建奖励字典 var rewardData = response.RewardKs .Select((key, index) => new { key, value = response.RewardVs[index] }) .ToDictionary(x => x.key, x => x.value); // 更新字典(简化操作) TimeTracingDataManager.LevelRewardDic[levelConfig.Id] = rewardData; } } return true; } //获取指定关卡评分奖励状态 public static async ETTask ReqGetAppointLevelRewardStatus(int levelID) { Dictionary rewardData = null; S2C_GetInstanceZonesRatingRewardList response = null; rewardData = new Dictionary(); response = (S2C_GetInstanceZonesRatingRewardList)await MessageHelper.SendToServer( new C2S_GetInstanceZonesRatingRewardList { StoryLevelId = levelID }); if (!(response is { Error: ErrorCode.ERR_Success })) return false; for (int j = 0; j < response.RewardKs.Count; j++) { rewardData.Add(response.RewardKs[j], response.RewardVs[j]); } if (TimeTracingDataManager.LevelRewardDic.ContainsKey(levelID)) { TimeTracingDataManager.LevelRewardDic[levelID] = rewardData; } else { TimeTracingDataManager.LevelRewardDic.Add(levelID, rewardData); } return true; } //领取条积分奖励 public static async ETTask ReqGetLevelReward(int levelId, int rewardId) { S2C_GetInstanceZonesRatingReward response = (S2C_GetInstanceZonesRatingReward)await MessageHelper.SendToServer(new C2S_GetInstanceZonesRatingReward { StoryLevelId = levelId, RewardId = rewardId }); Dictionary rewardData = new Dictionary(); if (!(response is { Error: ErrorCode.ERR_Success })) return false; for (int j = 0; j < response.RewardKs.Count; j++) { rewardData.Add(response.RewardKs[j], response.RewardVs[j]); } TimeTracingDataManager.LevelRewardDic[levelId] = rewardData; // 奖励弹窗 BonusController.TryShowBonusList(ItemUtil.CreateItemDataList(response.BonusList)); return true; } //领取全部积分奖励 public static async ETTask ReqGetAllLevelReward(int levelID) { S2C_GetAllInstanceZonesRatingReward response = (S2C_GetAllInstanceZonesRatingReward)await MessageHelper.SendToServer( new C2S_GetAllInstanceZonesRatingReward { StoryLevelId = levelID }); Dictionary rewardData = new Dictionary(); if (!(response is { Error: ErrorCode.ERR_Success })) return false; for (int j = 0; j < response.RewardKs.Count; j++) { rewardData.Add(response.RewardKs[j], response.RewardVs[j]); } TimeTracingDataManager.LevelRewardDic[levelID] = rewardData; EventAgent.DispatchEvent(ConstMessage.TIMETRACINGREDUPDATE); // 奖励弹窗 BonusController.TryShowBonusList(ItemUtil.CreateItemDataList(response.BonusList)); return true; } //获取套装排名榜数据 public static async ETTask ReqGetSuitRank(int suitID) { TimeTracingDataManager.Instance.SuitRankDatasDic[0].Clear(); S2C_GetSuitCollectRankList response = (S2C_GetSuitCollectRankList)await MessageHelper.SendToServer(new C2S_GetSuitCollectRankList { SuitId = suitID }); TimeTracingDataManager.Instance.SuitRankDatasDic[0] = response.SuitCollectRankList; TimeTracingDataManager.RefreshTime = response.NexTime; TimeTracingDataManager.Instance.mySuitRankInfo[0] = response.MySuitCollectRank; return true; } //获取套装好友排名榜数据 public static async ETTask ReqGetSuitFriendRank(int suitID) { TimeTracingDataManager.Instance.SuitRankDatasDic[1].Clear(); S2C_GetFriendSuitCollectRankList response = (S2C_GetFriendSuitCollectRankList)await MessageHelper.SendToServer(new C2S_GetFriendSuitCollectRankList { SuitId = suitID }); TimeTracingDataManager.Instance.SuitRankDatasDic[1] = response.FriendSuitCollectRankList; TimeTracingDataManager.Instance.mySuitRankInfo[1] = response.MySuitCollectRank; return true; } //获取关卡排行榜信息 public static async ETTask ReqGetLevelRank(int levelID) { TimeTracingDataManager.Instance.LevelRankDatasDic[0].Clear(); S2C_GetInstanceZonesRankList response = (S2C_GetInstanceZonesRankList)await MessageHelper.SendToServer(new C2S_GetInstanceZonesRankList { LevelCfgId = levelID }); TimeTracingDataManager.Instance.LevelRankDatasDic[0] = response.LevelRankList; TimeTracingDataManager.RefreshTime = response.NexTime; TimeTracingDataManager.Instance.myLevelRankInfo[0] = response.MyLevelRankInfo; return true; } //获取关卡好友排行榜数据 public static async ETTask ReqGetLevelFriendRank(int levelID) { TimeTracingDataManager.Instance.LevelRankDatasDic[1].Clear(); S2C_GetInstanceZonesFriendRankList response = (S2C_GetInstanceZonesFriendRankList)await MessageHelper.SendToServer( new C2S_GetInstanceZonesFriendRankList { LevelCfgId = levelID }); TimeTracingDataManager.Instance.LevelRankDatasDic[1] = response.FriendLevelRankList; TimeTracingDataManager.Instance.myLevelRankInfo[1] = response.MyLevelRank; return true; } public static async ETTask ReqSetDataRecord(long SuitID) { TimeTracingDataManager.Instance.LevelRankDatasDic[1].Clear(); S2C_UpdateDataRecord response = (S2C_UpdateDataRecord)await MessageHelper.SendToServer(new C2S_UpdateDataRecord() { K = 6200123, V = SuitID }); return true; } public static async ETTask ReqGetDataRecord() { TimeTracingDataManager.Instance.LevelRankDatasDic[1].Clear(); S2C_GetDataRecord response = (S2C_GetDataRecord)await MessageHelper.SendToServer(new C2S_GetDataRecord() { }); for (int i = 0; i < response.AllKs.Count; i++) { if (response.AllKs[i] == 6200123) { TimeTracingDataManager.SuitID = (int)response.AllVs[i]; List activityCfgList = CommonDataManager.Tables.TblActivityOpenCfg.DataList.Where(a => a.Type == 21).ToList(); foreach (var item in activityCfgList) { if (item.Params1[0] == (int)response.AllVs[i]) { TimeTracingDataManager._currentChapterId = item.Params3[0]; break; } } return true; } } return true; } } }