Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
 private PlayerEntity TryGetPlayerEntity(MatchInfo.Player player)
 => player != null && PlayerEntities.TryGetValue(player.Id, out var playerEntity) ? playerEntity : null;
Ejemplo n.º 3
0
        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);
        }