Ejemplo n.º 1
0
        void UpdateSummonerRatings(Summoner summoner, PlayerLifeTimeStats lifeTimeStatistics, DbConnection connection)
        {
            List <PlayerStatSummary> summaries = lifeTimeStatistics.playerStatSummaries.playerStatSummarySet;

            ProcessSummary(MapType.SummonersRift, GameModeType.Normal, "Unranked", summoner, summaries, connection, true);
            ProcessSummary(MapType.TwistedTreeline, GameModeType.Premade, "RankedPremade3x3", summoner, summaries, connection);
            ProcessSummary(MapType.SummonersRift, GameModeType.Solo, "RankedSolo5x5", summoner, summaries, connection);
            ProcessSummary(MapType.SummonersRift, GameModeType.Premade, "RankedPremade5x5", summoner, summaries, connection);
            ProcessSummary(MapType.Dominion, GameModeType.Normal, "OdinUnranked", summoner, summaries, connection, true);
        }
Ejemplo n.º 2
0
 void GetLifeTimeStatistics(PlayerLifeTimeStats lifeTimeStatistics)
 {
     LifeTimeStatistics = lifeTimeStatistics;
     ProcessReply();
 }
Ejemplo n.º 3
0
        void AnalyseSummonerProfile(List <string> arguments)
        {
            string         summonerName   = GetSummonerName(arguments[0]);
            PublicSummoner publicSummoner = RPC.GetSummonerByName(summonerName);

            if (publicSummoner == null)
            {
                NoSuchSummoner();
                return;
            }

            SummonerLeaguesDTO summonerLeagues = RPC.GetAllLeaguesForPlayer(publicSummoner.summonerId);

            Output.WriteLine("Name: {0}", publicSummoner.name);
            Output.WriteLine("Account ID: {0}", publicSummoner.acctId);
            Output.WriteLine("Summoner ID: {0}", publicSummoner.summonerId);
            Output.WriteLine("Summoner level: {0}", publicSummoner.summonerLevel);

            foreach (var league in summonerLeagues.summonerLeagues)
            {
                int?leaguePoints = null;
                foreach (var entry in league.entries)
                {
                    try
                    {
                        int id = Convert.ToInt32(entry.playerOrTeamId);
                        if (publicSummoner.summonerId == id)
                        {
                            leaguePoints = entry.leaguePoints;
                            break;
                        }
                    }
                    catch (Exception)
                    {
                        // playerOrTeamId may be a strange string like "TEAM-xxx" for team queue
                        break;
                    }
                }
                Output.WriteLine("League ({0}): {1} {2}, {3} LP ({4})", league.queue, league.tier, league.requestorsRank, leaguePoints == null ? "?" : leaguePoints.Value.ToString(), league.name);
            }

            string[] seasonStrings =
            {
                "CURRENT",
                "TWO",
                "ONE",
            };

            foreach (string seasonString in seasonStrings)
            {
                Output.WriteLine("Season: \"{0}\"", seasonString);

                PlayerLifeTimeStats lifeTimeStatistics = RPC.RetrievePlayerStatsByAccountID(publicSummoner.acctId, seasonString);
                if (lifeTimeStatistics == null)
                {
                    Output.WriteLine("Unable to retrieve lifetime statistics");
                    return;
                }

                List <PlayerStatSummary> summaries = lifeTimeStatistics.playerStatSummaries.playerStatSummarySet;

                //The hidden "Team" variants of the "Premade" ratings are currently unused, it seems
                AnalayseStatistics("Unranked Summoner's Rift/Twisted Treeline", "Unranked", summaries);
                AnalayseStatistics("Ranked Twisted Treeline (team)", "RankedPremade3x3", summaries);
                AnalayseStatistics("Ranked Summoner's Rift (solo)", "RankedSolo5x5", summaries);
                AnalayseStatistics("Ranked Summoner's Rift (team)", "RankedPremade5x5", summaries);
                AnalayseStatistics("Unranked Dominion", "OdinUnranked", summaries);
            }
        }
Ejemplo n.º 4
0
        void UpdateSummoner(Summoner summoner, AllPublicSummonerDataDTO publicSummonerData, AggregatedStats[] aggregatedStats, PlayerLifeTimeStats lifeTimeStatistics, RecentGames recentGames, DbConnection connection)
        {
            int accountId = summoner.AccountId;

            lock (ActiveAccountIds)
            {
                // Avoid concurrent updates of the same account, it's asking for trouble and is redundant anyways
                // We might obtain outdated results in one query but that's a minor issue in comparison to corrupted database results
                if (ActiveAccountIds.Contains(accountId))
                {
                    return;
                }

                ActiveAccountIds.Add(accountId);
            }

            // Use a transaction because we're going to insert a fair amount of data
            using (var transaction = connection.BeginTransaction())
            {
                UpdateSummonerFields(summoner, connection, true);
                UpdateRunes(summoner, publicSummonerData, connection);

                UpdateSummonerRatings(summoner, lifeTimeStatistics, connection);
                // A season value of zero indicates the current season only
                for (int season = 0; season < aggregatedStats.Length; season++)
                {
                    UpdateSummonerRankedStatistics(summoner, season, aggregatedStats[season], connection);
                }
                UpdateSummonerGames(summoner, recentGames, connection);

                transaction.Commit();
            }

            lock (ActiveAccountIds)
                ActiveAccountIds.Remove(accountId);
        }