Пример #1
0
        public void Initialise(PublicSummoner publicSummoner, RegionType summonerRegion)
        {
            //Id cannot be set yet

            Region = summonerRegion;

            AccountId = publicSummoner.acctId;
            SummonerId = publicSummoner.summonerId;

            SummonerName = publicSummoner.name;
            InternalName = publicSummoner.internalName;

            SummonerLevel = publicSummoner.summonerLevel;
            ProfileIcon = publicSummoner.profileIconId;

            HasBeenUpdated = false;

            UpdateAutomatically = false;

            int time = (int)Time.UnixTime();

            TimeCreated = time;
            TimeUpdated = time;

            RevisionDate = (int)publicSummoner.revisionDate.ToUnixTime();
            LastUpdateTrial = 0;
        }
Пример #2
0
 public Summoner(PublicSummoner publicSummoner, RegionType summonerRegion)
 {
     Initialise(publicSummoner, summonerRegion);
 }
Пример #3
0
 bool GetRecentGames(string summonerName, ref PublicSummoner publicSummoner, ref List<PlayerGameStats> recentGames)
 {
     publicSummoner = RPC.GetSummonerByName(summonerName);
     if (publicSummoner == null)
         return false;
     RecentGames recentGameData = RPC.GetRecentGames(publicSummoner.acctId);
     recentGames = recentGameData.gameStatistics;
     recentGames.Sort(CompareGames);
     return true;
 }
Пример #4
0
        void AnalyseRecentGames(List<string> arguments)
        {
            string summonerName = GetNameFromArguments(arguments);
            PublicSummoner publicSummoner = new PublicSummoner();
            List<PlayerGameStats> recentGames = new List<PlayerGameStats>();
            bool foundSummoner = GetRecentGames(summonerName, ref publicSummoner, ref recentGames);
            if (!foundSummoner)
            {
                NoSuchSummoner();
                return;
            }
            foreach (var stats in recentGames)
            {
                GameResult result = new GameResult(stats);
                Console.Write("[{0}] [{1}] [{2}] ", stats.gameId, stats.createDate, result.Win ? "W" : "L");
                if (stats.ranked)
                    Console.Write("Ranked ");
                if (stats.gameType == "PRACTICE_GAME")
                {
                    Console.Write("Custom ");
                    switch (stats.gameMode)
                    {
                        case "CLASSIC":
                            Console.Write("Summoner's Rift");
                            break;

                        case "ODIN":
                            Console.Write("Dominion");
                            break;

                        default:
                            Console.Write(stats.gameMode);
                            break;
                    }
                }
                else
                {
                    switch (stats.queueType)
                    {
                        case "RANKED_TEAM_3x3":
                            Output.Write("Twisted Treeline");
                            break;

                        case "NORMAL":
                        case "RANKED_SOLO_5x5":
                            Console.Write("Summoner's Rift");
                            break;

                        case "RANKED_TEAM_5x5":
                            Console.Write("Summoner's Rift (team)");
                            break;

                        case "ODIN_UNRANKED":
                            Console.Write("Dominion");
                            break;

                        case "BOT":
                            Console.Write("Co-op vs. AI");
                            break;

                        default:
                            Console.Write(stats.queueType);
                            break;
                    }
                }
                Console.WriteLine(", {0}, {1}/{2}/{3}", GetChampionName(stats.championId), result.Kills, result.Deaths, result.Assists);
                List<string> units = new List<string>();
                if (stats.adjustedRating != 0)
                    units.Add(string.Format("Rating: {0} ({1})", stats.rating + stats.eloChange, SignPrefix(stats.eloChange)));
                if (stats.adjustedRating != 0)
                    units.Add(string.Format("adjusted {0}", stats.adjustedRating));
                if (stats.teamRating != 0)
                    units.Add(string.Format("team {0} ({1})", stats.teamRating, SignPrefix(stats.teamRating - stats.rating)));
                PrintUnits(units);
                if (stats.predictedWinPct != 0.0)
                    units.Add(string.Format("Predicted winning percentage {0}", Percentage(stats.predictedWinPct)));
                if (stats.premadeSize > 1)
                    units.Add(string.Format("Queued with {0}", stats.premadeSize));
                if (stats.leaver)
                    units.Add("Left the game");
                if (stats.afk)
                    units.Add("AFK");
                units.Add(string.Format("{0} ms ping", stats.userServerPing));
                units.Add(string.Format("{0} s spent in queue", stats.timeInQueue));
                PrintUnits(units);
            }
        }
Пример #5
0
        void AnalyseSummonerProfile(List<string> arguments)
        {
            string summonerName = GetNameFromArguments(arguments);
            PublicSummoner publicSummoner = new PublicSummoner();
            List<PlayerGameStats> recentGames = new List<PlayerGameStats>();
            bool foundSummoner = GetRecentGames(summonerName, ref publicSummoner, ref recentGames);
            if (!foundSummoner)
            {
                NoSuchSummoner();
                return;
            }

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

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

            Output.WriteLine("Name: " + publicSummoner.name);
            Output.WriteLine("Account ID: " + publicSummoner.summonerId);
            Output.WriteLine("Summoner level: " + publicSummoner.summonerLevel);
            //No idea what this value contains now
            //Output.WriteLine("IP: " + allSummonerData.summonerLevelAndPoints.infPoints);

            //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);
        }
Пример #6
0
        void AnalyseEnvironmentalRating(List<string> arguments, bool ranked, string season)
        {
            if (arguments.Count == 0)
                return;
            string summonerName = GetSummonerName(arguments[0]);
            var excludedNames = new List<string>();
            for (int i = 1; i < arguments.Count; i++)
                excludedNames.Add(GetSummonerName(arguments[i]));
            PublicSummoner publicSummoner = new PublicSummoner();
            List<PlayerGameStats> recentGames = new List<PlayerGameStats>();
            bool foundSummoner = GetRecentGames(summonerName, ref publicSummoner, ref recentGames);
            if (!foundSummoner)
            {
                NoSuchSummoner();
                return;
            }

            var knownSummoners = new HashSet<string>();
            var currentRatings = new List<int>();
            var topRatings = new List<int>();
            int gameCount = 0;

            foreach (var stats in recentGames)
            {
                GameResult result = new GameResult(stats);
                if (
                    (stats.gameType == "PRACTICE_GAME") ||
                    (!ranked && stats.queueType != "NORMAL") ||
                    (ranked && stats.queueType != "RANKED_SOLO_5x5")
                    )
                    continue;
                var ids = new List<int>();
                foreach (var fellowPlayer in stats.fellowPlayers)
                    ids.Add(fellowPlayer.summonerId);
                var names = RPC.GetSummonerNames(ids);
                bool isValidGame = true;
                foreach (var name in excludedNames)
                {
                    if (names.IndexOf(name) >= 0)
                    {
                        isValidGame = false;
                        break;
                    }
                }
                if (!isValidGame)
                    continue;
                gameCount++;
                foreach (var name in names)
                {
                    if (knownSummoners.Contains(name))
                        continue;
                    knownSummoners.Add(name);
                    PublicSummoner summoner = RPC.GetSummonerByName(name);
                    if (summoner == null)
                    {
                        Console.WriteLine("Unable to load summoner {0}", name);
                        return;
                    }

                    PlayerLifeTimeStats lifeTimeStatistics = RPC.RetrievePlayerStatsByAccountID(summoner.acctId, season);
                    if (lifeTimeStatistics == null)
                    {
                        Console.WriteLine("Unable to retrieve lifetime statistics for summoner {0}", name);
                        return;
                    }

                    List<PlayerStatSummary> summaries = lifeTimeStatistics.playerStatSummaries.playerStatSummarySet;
                    const string target = "RankedSolo5x5";
                    foreach (var summary in summaries)
                    {
                        if (summary.playerStatSummaryType == target)
                        {
                            int games = summary.wins + summary.losses;
                            if (games == 0)
                                break;

                            Console.Write("{0}: ", name);
                            if (summary.maxRating >= 2200)
                                Console.ForegroundColor = ConsoleColor.White;
                            else if (summary.maxRating >= 1850)
                                Console.ForegroundColor = ConsoleColor.DarkCyan;
                            else if (summary.maxRating >= 1500)
                                Console.ForegroundColor = ConsoleColor.DarkYellow;
                            else if (summary.maxRating < 1150 && summary.maxRating != 0)
                                Console.ForegroundColor = ConsoleColor.DarkGray;
                            Console.Write("{0} (top {1}), ", summary.rating, summary.maxRating);
                            Console.ResetColor();
                            Console.Write("{0} W - {1} L ({2})", summary.wins, summary.losses, SignPrefix(summary.wins - summary.losses));
                            if (summary.leaves > 0)
                                Console.Write(", left {0} {1}", summary.leaves, (summary.leaves > 1 ? "games" : "game"));
                            Console.WriteLine("");

                            currentRatings.Add(summary.rating);
                            topRatings.Add(summary.maxRating);
                            break;
                        }
                    }
                }
            }

            currentRatings.Sort();
            topRatings.Sort();

            PrintRatings("Current ratings", currentRatings);
            PrintRatings("Top ratings", topRatings);

            int playerCount = 9 * gameCount;
            int rankedPlayers = topRatings.Count;
            float rankedRatio = (float)rankedPlayers / playerCount;
            Console.WriteLine("Ranked players: {0}/{1} ({2:F1}%)", rankedPlayers, playerCount, rankedRatio * 100);
        }
Пример #7
0
        void AnalyseSummonerProfile(List<string> arguments)
        {
            string summonerName = GetSummonerName(arguments[0]);
            PublicSummoner publicSummoner = new PublicSummoner();
            List<PlayerGameStats> recentGames = new List<PlayerGameStats>();
            bool foundSummoner = GetRecentGames(summonerName, ref publicSummoner, ref recentGames);
            if (!foundSummoner)
            {
                NoSuchSummoner();
                return;
            }

            Output.WriteLine("Name: " + publicSummoner.name);
            Output.WriteLine("Account ID: " + publicSummoner.acctId);
            Output.WriteLine("Summoner ID: " + publicSummoner.summonerId);
            Output.WriteLine("Summoner level: " + publicSummoner.summonerLevel);

            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);
            }
        }
Пример #8
0
        public void endPublicSummonerResponder(PublicSummoner summoner)
        {
            endPSummoners.Add(summoner);

            if (summoner != null)
            {
                pvpnet.RPC.GetRecentGamesAsync(summoner.acctId, new FluorineFx.Net.Responder<RecentGames>(endFellowRecentGamesResponder));
                pvpnet.RPC.RetrievePlayerStatsByAccountIDAsync(summoner.acctId, "CURRENT", new FluorineFx.Net.Responder<PlayerLifeTimeStats>(endPlayerLifeStatsResponder));
            }
        }
Пример #9
0
        private void updateSummoner(PublicSummoner pSumm, PlayerLifeTimeStats summStats, AggregatedStats aggStats, AllPublicSummonerDataDTO summPages, MasteryBook masteries)
        {
            PlayerStatSummary rSolo5x5;
            PlayerStatSummary rTeam5x5;
            PlayerStatSummary normal5x5;
            List<ChampionStatistics> champStats = ChampionStatistics.GetChampionStatistics(aggStats);

            db.updateSummoner("summonerLevel", pSumm.summonerLevel.ToString(), pSumm.summonerId);
            db.updateSummoner("profileIconId", pSumm.profileIconId.ToString(), pSumm.summonerId);

            if ((rSolo5x5 = summStats.getRankedSolo5x5()) != null)
            {
                db.updateSummoner("solo5x5_elo", rSolo5x5.rating.ToString(), pSumm.summonerId);
                db.updateSummoner("solo5x5_wins", rSolo5x5.wins.ToString(), pSumm.summonerId);
                db.updateSummoner("solo5x5_losses", rSolo5x5.losses.ToString(), pSumm.summonerId);
                db.updateSummoner("solo5x5_maxElo", rSolo5x5.maxRating.ToString(), pSumm.summonerId);
            }

            if ((rTeam5x5 = summStats.getRankedTeam5x5()) != null)
            {
                db.updateSummoner("team5x5_elo", rTeam5x5.rating.ToString(), pSumm.summonerId);
                db.updateSummoner("team5x5_wins", rTeam5x5.wins.ToString(), pSumm.summonerId);
                db.updateSummoner("team5x5_losses", rTeam5x5.losses.ToString(), pSumm.summonerId);
                db.updateSummoner("team5x5_maxElo", rTeam5x5.maxRating.ToString(), pSumm.summonerId);
            }

            if ((normal5x5 = summStats.getNormal5x5()) != null)
            {
                db.updateSummoner("normal5x5_elo", normal5x5.rating.ToString(), pSumm.summonerId);
                db.updateSummoner("normal5x5_wins", normal5x5.wins.ToString(), pSumm.summonerId);
                db.updateSummoner("normal5x5_losses", normal5x5.losses.ToString(), pSumm.summonerId);
                db.updateSummoner("normal5x5_maxElo", normal5x5.maxRating.ToString(), pSumm.summonerId);
            }

            db.updateSummoner("ranked_kills", ChampionStatistics.totalRankedKills(champStats).ToString(), pSumm.summonerId);
            db.updateSummoner("ranked_assists", ChampionStatistics.totalRankedAssists(champStats).ToString(), pSumm.summonerId);
            db.updateSummoner("ranked_deaths", ChampionStatistics.totalRankedDeaths(champStats).ToString(), pSumm.summonerId);
            db.updateSummoner("ranked_pentaKills", ChampionStatistics.totalRankedPentaKills(champStats).ToString(), pSumm.summonerId);
            db.updateSummoner("ranked_quadraKills", ChampionStatistics.totalRankedQuadraKills(champStats).ToString(), pSumm.summonerId);
            db.updateSummoner("ranked_tripleKills", ChampionStatistics.totalRankedTripleKills(champStats).ToString(), pSumm.summonerId);
            db.updateSummoner("ranked_doubleKills", ChampionStatistics.totalRankedDoubleKills(champStats).ToString(), pSumm.summonerId);
            db.updateSummoner("ranked_minionKills", ChampionStatistics.totalRankedMinionKills(champStats).ToString(), pSumm.summonerId);
            db.updateSummoner("ranked_goldEarned", ChampionStatistics.totalRankedGoldEarned(champStats).ToString(), pSumm.summonerId);
            db.updateSummoner("ranked_turretsDestroyed", ChampionStatistics.totalRankedTurretsDestroyed(champStats).ToString(), pSumm.summonerId);
            db.updateSummoner("ranked_mostKills", ChampionStatistics.rankedMostKills(champStats).ToString(), pSumm.summonerId);
            db.updateSummoner("ranked_mostDeaths", ChampionStatistics.rankedMostDeaths(champStats).ToString(), pSumm.summonerId);

            /** Update Runes and Masteries */
        }