private bool IsValidPlayerInfo(MatchInfo.Player playerInfo) { var name = playerInfo?.Name ?? playerInfo?.BattleTag?.Name; var valid = name != null; Log.Debug($"valid={valid}, gameMode={CurrentGameMode}, player={name}, starLevel={playerInfo?.Standard.StarLevel}"); return(valid); }
private PlayerEntity TryGetPlayerEntity(MatchInfo.Player player) => player != null && PlayerEntities.TryGetValue(player.Id, out var playerEntity) ? playerEntity : null;
private static MatchInfo GetMatchInfoInternal() { var matchInfo = new MatchInfo(); var gameState = Mirror.Root?["GameState"]["s_instance"]; var netCacheValues = GetService("NetCache")?["m_netCache"]?["valueSlots"]; if (gameState != null) { var playerIds = gameState["m_playerMap"]["keySlots"]; var players = gameState["m_playerMap"]["valueSlots"]; for (var i = 0; i < playerIds.Length; i++) { var player = players[i]; if (player?.Class.Name != "Player") { continue; } var medalInfo = player["m_medalInfo"]; var sMedalInfo = medalInfo?["m_currMedalInfo"]; var wMedalInfo = medalInfo?["m_currWildMedalInfo"]; var account = player["m_gameAccountId"]; var accountId = new AccountId { Hi = account?["m_hi"] ?? 0, Lo = account?["m_lo"] ?? 0 }; var matchInfoPlayer = new MatchInfo.Player { Id = playerIds[i], Name = player["m_name"], Standard = GetMatchMedalInfo(sMedalInfo), StandardRank = GetRankValue(sMedalInfo), Wild = GetMatchMedalInfo(wMedalInfo), WildRank = GetRankValue(wMedalInfo), CardBackId = player["m_cardBackId"], AccountId = accountId, BattleTag = GetBattleTag(accountId), }; var side = (Side)player["m_side"]; if (side == Side.FRIENDLY) { matchInfo.LocalPlayer = matchInfoPlayer; } else if (side == Side.OPPOSING) { matchInfo.OpposingPlayer = matchInfoPlayer; } } } if (matchInfo.LocalPlayer == null || matchInfo.OpposingPlayer == null) { return(null); } var gameMgr = GetService("GameMgr"); if (gameMgr != null) { matchInfo.MissionId = gameMgr["m_missionId"]; matchInfo.GameType = gameMgr["m_gameType"]; matchInfo.FormatType = gameMgr["m_formatType"]; var brawlGameTypes = new[] { 16, 17, 18 }; if (brawlGameTypes.Contains(matchInfo.GameType)) { var mission = GetCurrentBrawlMission(); matchInfo.BrawlSeasonId = mission?["<tavernBrawlSpec>k__BackingField"]?["<GameContentSeason>k__BackingField"]?["<SeasonId>k__BackingField"]; } } if (netCacheValues != null) { foreach (var netCache in netCacheValues) { if (netCache?.Class.Name != "NetCacheRewardProgress") { continue; } matchInfo.RankedSeasonId = netCache["<Season>k__BackingField"]; break; } } return(matchInfo); }