Beispiel #1
0
        public void SetStats(PublicSummoner summoner, PlayerLifetimeStats stats)
        {
            if (summoner == null || stats == null)
            {
                return;
            }

            if (InvokeRequired)
            {
                Invoke(new Action <PublicSummoner, PlayerLifetimeStats>(SetStats), summoner, stats);
                return;
            }

            SetLevel(summoner.SummonerLevel);
            RemoveAll(p => (p.Tag as string) == "Stats");

            foreach (var stat in stats.PlayerStatSummaries.PlayerStatSummarySet)
            {
                var sc = new StatsControl {
                    Dock = DockStyle.Fill, Tag = "Stats"
                };
                sc.SetStatSummary(stat);

                var tab = new TabPage(MinifyStatType(stat.PlayerStatSummaryType))
                {
                    BackColor = this.BackColor,
                    Tag       = "Stats"
                };
                tab.Controls.Add(sc);
                AddTab(tab);
            }
        }
 public void GotPlayerStats(PlayerLifetimeStats stats)
 {
     Summaries = new List <PlayerStatSummary>();
     Dispatcher.BeginInvoke(DispatcherPriority.Input, new ThreadStart(() =>
     {
         StatsComboBox.Items.Clear();
         StatsListView.Items.Clear();
         try
         {
             foreach (
                 PlayerStatSummary x in
                 stats.PlayerStatSummaries.PlayerStatSummarySet.Where(x => x.AggregatedStats.Stats.Count > 0)
                 )
             {
                 Summaries.Add(x);
                 string SummaryString = x.PlayerStatSummaryTypeString;
                 SummaryString        =
                     string.Concat(
                         SummaryString.Select(
                             e => Char.IsUpper(e) ? " " + e : e.ToString(CultureInfo.InvariantCulture)))
                     .TrimStart(' ');
                 SummaryString = SummaryString.Replace("Odin", "Dominion");
                 SummaryString = SummaryString.Replace("x", "v");
                 StatsComboBox.Items.Add(SummaryString);
             }
         }
         catch
         {
             Client.Log("Error when loading player stats.");
         }
         StatsComboBox.SelectedItem = "Ranked Solo5v5";
     }));
 }
        public RemotingMessageReceivedEventArgs HandleMessage(object sender, RemotingMessageReceivedEventArgs e)
        {
            object[]       body           = e.Body as object[];
            SummonerClient summonerSender = sender as SummonerClient;
            int            accId          = Convert.ToInt32(body[0]);
            int            unknown        = Convert.ToInt32(body[1]);

            PlayerLifetimeStats PLSData = new PlayerLifetimeStats()
            {
                PlayerStatSummaries = new PlayerStatSummaries()
                {
                    Season = 6,
                },
                PreviousFirstWinOfDay = new DateTime(2016, 08, 11, 12, 00, 00),
                UserId           = Convert.ToInt32(summonerSender._sumId),
                DodgeStreak      = 0,
                DodgePenaltyDate = null,
                PlayerStatsJson  = null,
                PlayerStats      = new PlayerStats()
                {
                    TimeTrackedStats = new RtmpSharp.IO.AMF3.ArrayCollection()
                    {
                    },
                    PromoGamesPlayed           = 0,
                    PromoGamesPlayedLastUpdate = null,
                    LifetimeGamesPlayed        = null
                }
            };

            e.ReturnRequired = true;
            e.Data           = PLSData;

            return(e);
        }
        private async Task <List <PlayerLifetimeStats> > RunPlayerStatsAsync(Leaderboard leaderboard, CancellationToken cancellationToken)
        {
            List <PlayerLifetimeStats> playerLifetimeStats = new List <PlayerLifetimeStats>();

            foreach (LeaderboardPlayer leaderboardPlayer in leaderboard.Players)
            {
                try
                {
                    if (cancellationToken.IsCancellationRequested)
                    {
                        return(new List <PlayerLifetimeStats>());
                    }

                    Log.Information($"Getting lifetime stats for player {leaderboardPlayer.Id}");

                    PlayerLifetimeStats response = await _pubgApiCaller.GetPlayerLifetimeStatsAsync(leaderboardPlayer, cancellationToken);

                    response.Id = leaderboardPlayer.Id;

                    playerLifetimeStats.Add(response);

                    Log.Information($"Lifetime stats for player {leaderboardPlayer.Id} saved in memory correctly.");
                }
                catch (Exception)
                {
                    Log.Error($"Error on stats update for player {leaderboardPlayer.Id}");
                }
            }

            return(playerLifetimeStats);
        }
        public async Task <PlayerLifetimeStats> GetPlayerLifetimeStatsByNameAsync(string name, CancellationToken cancellationToken)
        {
            try
            {
                string playerId = await GetPlayerIdAsync(name, cancellationToken);

                HttpResponseMessage apiResponse = await CallGovernor.Call(async() =>
                {
                    return(await _httpClient.GetAsync(
                               $"https://api.pubg.com/shards/steam/players/{playerId}/seasons/lifetime", cancellationToken));
                }, cancellationToken);

                string raw = await apiResponse.Content.ReadAsStringAsync();

                PlayerLifetimeStats playerLifetimeStats =
                    _documentExtractorService.GetPlayerLifetimeStatsDocumentFromRaw(raw, playerId, name);

                return(playerLifetimeStats);
            }
            catch (Exception ex)
            {
                Log.Error("Error getting data from API", ex);
                throw;
            }
        }
Beispiel #6
0
        public async Task <ActionResult <PlayerLifetimeStats> > GetAccountNameAsync(string playerName)
        {
            await _reloadStatsService.ReloadIfNeededAsync();

            PlayerLifetimeStats playerLifetimeStats = await CacheAsideAsync <PlayerLifetimeStats>(playerName,
                                                                                                  async (mode) => await _playerLifetimeStatsService.GetPlayerStatsByName(mode));

            if (playerLifetimeStats == null)
            {
                playerLifetimeStats = await _fallbackPlayerService.GetPlayerAdHocAsync(playerName);

                if (playerLifetimeStats != null)
                {
                    await Cache(playerName, playerLifetimeStats);

                    return(Ok(playerLifetimeStats));
                }
            }
            else
            {
                return(Ok(playerLifetimeStats));
            }

            return(NotFound(playerName));
        }
Beispiel #7
0
        public async void Update(double SummonerId, double AccountId)
        {
            AccId = AccountId;
            LcdsResponseString TotalKudos = await RiotCalls.CallKudos("{\"commandName\":\"TOTALS\",\"summonerId\": " + SummonerId + "}");

            RenderKudos(TotalKudos);
            ChampionStatInfo[] TopChampions = await RiotCalls.RetrieveTopPlayedChampions(AccountId, "CLASSIC");

            RenderTopPlayedChampions(TopChampions);
            PlayerLifetimeStats stats = await RiotCalls.RetrievePlayerStatsByAccountId(AccountId, "3");

            GotPlayerStats(stats);
        }
Beispiel #8
0
        public async Task <PlayerLifetimeStats> RetrievePlayerStatsByAccountId(Double accountId, String season)
        {
            int Id = Invoke("playerStatsService", "retrievePlayerStatsByAccountId", new object[] { accountId, season });

            while (!results.ContainsKey(Id))
            {
                await Task.Delay(10);
            }
            TypedObject         messageBody = results[Id].GetTO("data").GetTO("body");
            PlayerLifetimeStats result      = new PlayerLifetimeStats(messageBody);

            results.Remove(Id);
            return(result);
        }
Beispiel #9
0
        public async Task <ActionResult <PlayerLifetimeStats> > GetAccountIdAsync(string accountId)
        {
            await _reloadStatsService.ReloadIfNeededAsync();

            PlayerLifetimeStats playerLifetimeStats = await CacheAsideAsync <PlayerLifetimeStats>(accountId,
                                                                                                  async (mode) => await _playerLifetimeStatsService.GetPlayerStatsById(mode));

            if (playerLifetimeStats == null)
            {
                return(NotFound(accountId));
            }

            return(Ok(playerLifetimeStats));
        }
Beispiel #10
0
        public void SetStats(PublicSummoner summoner, SummonerLeaguesDTO leagueInfo, PlayerLifetimeStats stats)
        {
            if (summoner == null || stats == null)
            {
                return;
            }

            if (InvokeRequired)
            {
                Invoke(new Action <PublicSummoner, SummonerLeaguesDTO, PlayerLifetimeStats>(SetStats), summoner, leagueInfo, stats);
                return;
            }

            RemoveAll(p => (p.Tag as string) == "Stats");

            var nameMap = new Dictionary <string, string>()
            {
                { "RankedSolo5x5", "RANKED_SOLO_5x5" },
                { "RankedTeam5x5", "RANKED_TEAM_5x5" },
                { "RankedTeam3x3", "RANKED_TEAM_3x3" }
            };

            foreach (var stat in stats.PlayerStatSummaries.PlayerStatSummarySet)
            {
                var sc = new StatsControl {
                    Dock = DockStyle.Fill, Tag = "Stats"
                };

                Dictionary <string, object> queueInfo = null;
                if (leagueInfo != null)
                {
                    string queueType;
                    if (nameMap.TryGetValue(stat.PlayerStatSummaryTypeString, out queueType))
                    {
                        queueInfo = leagueInfo.GetQueueByName(queueType);
                    }
                }

                sc.SetStatSummary(stat, SummonerLeaguesDTO.GetRanking(queueInfo));

                var tab = new TabPage(MinifyStatType(stat.PlayerStatSummaryType))
                {
                    BackColor = this.BackColor,
                    Tag       = "Stats"
                };
                tab.Controls.Add(sc);
                AddTab(tab);
            }
        }
        public PlayerLifetimeStats GetPlayerLifetimeStatsDocumentFromRaw(string raw, string playerId, string name)
        {
            JObject jResponse     = JsonConvert.DeserializeObject <JObject>(raw);
            JToken  gameModeStats = jResponse[DataGameModeStatsJsonPath][AttributesGameModeStatsJsonPath][GameModeStatsJsonPath];

            PlayerLifetimeStats player = new PlayerLifetimeStats();

            foreach (string gameMode in _workerConfiguration.GameModes)
            {
                player.PlayerId   = playerId;
                player.PlayerName = name;

                GameModeStats modeStats = new GameModeStats();
                modeStats.Mode  = gameMode;
                modeStats.Stats = gameModeStats[gameMode].ToObject <GameStats>();

                player.GameModeStats.Add(modeStats);
            }

            return(player);
        }
Beispiel #12
0
 public void GotPlayerStats(PlayerLifetimeStats stats)
 {
     Summaries = new List <PlayerStatSummary>();
     Dispatcher.BeginInvoke(DispatcherPriority.Input, new ThreadStart(() =>
     {
         StatsComboBox.Items.Clear();
         StatsListView.Items.Clear();
         foreach (PlayerStatSummary x in stats.PlayerStatSummaries.PlayerStatSummarySet)
         {
             if (x.AggregatedStats.Stats.Count > 0)
             {
                 Summaries.Add(x);
                 string SummaryString = x.PlayerStatSummaryTypeString;
                 SummaryString        = string.Concat(SummaryString.Select(e => Char.IsUpper(e) ? " " + e : e.ToString())).TrimStart(' ');
                 SummaryString        = SummaryString.Replace("Odin", "Dominion");
                 SummaryString        = SummaryString.Replace("x", "v");
                 StatsComboBox.Items.Add(SummaryString);
             }
         }
     }));
 }
Beispiel #13
0
        /// 18.)
        public void RetrievePlayerStatsByAccountId(Double accountId, String season, PlayerLifetimeStats.Callback callback)
        {
            PlayerLifetimeStats cb = new PlayerLifetimeStats(callback);

            InvokeWithCallback("playerStatsService", "retrievePlayerStatsByAccountId", new object[] { accountId, season }, cb);
        }
Beispiel #14
0
        public RemotingMessageReceivedEventArgs HandleMessage(object sender, RemotingMessageReceivedEventArgs e)
        {
            SummonerClient summonerSender = sender as SummonerClient;

            object[] body    = e.Body as object[];
            int      accId   = Convert.ToInt32(body[0]);
            int      unknown = Convert.ToInt32(body[1]);

            PlayerLifetimeStats PLSData = new PlayerLifetimeStats()
            {
                PlayerStatSummaries = new PlayerStatSummaries()
                {
                    UserID      = Convert.ToInt32(summonerSender._sumId),
                    SummaryList = new RtmpSharp.IO.AMF3.ArrayCollection()
                    {
                        new PlayerStatSummary()
                        {
                            ModifyDate      = new DateTime(2016, 08, 11, 12, 00, 00),
                            Type            = "AramUnranked5x5",
                            Wins            = 9000,
                            AggregatedStats = new SummaryAggStats
                            {
                                Stats = new RtmpSharp.IO.AMF3.ArrayCollection
                                {
                                    new SummaryAggStat
                                    {
                                        StatType = "totalTurretsKilled",
                                        Value    = 1337
                                    },
                                    new SummaryAggStat
                                    {
                                        StatType = "totalAssists",
                                        Value    = 1337
                                    },
                                    new SummaryAggStat
                                    {
                                        StatType = "totalChampionKills",
                                        Value    = 1337
                                    },
                                }
                            }
                        },
                        new PlayerStatSummary()
                        {
                            Type            = "RankedSolo5x5",
                            MaxRating       = 3000,
                            Rating          = 3000,
                            ModifyDate      = new DateTime(2016, 08, 11, 12, 00, 00),
                            Wins            = 55,
                            Losses          = 5,
                            AggregatedStats = new SummaryAggStats
                            {
                                Stats = new RtmpSharp.IO.AMF3.ArrayCollection
                                {
                                    new SummaryAggStat
                                    {
                                        StatType = "totalNeutralMinionsKilled",
                                        Value    = 1337
                                    },
                                    new SummaryAggStat
                                    {
                                        StatType = "totalChampionKills",
                                        Value    = 1337
                                    },
                                    new SummaryAggStat
                                    {
                                        StatType = "totalAssists",
                                        Value    = 1337
                                    },
                                    new SummaryAggStat
                                    {
                                        StatType = "totalTurretsKilled",
                                        Value    = 1337
                                    },
                                }
                            },
                        },
                        new PlayerStatSummary()
                        {
                            ModifyDate      = new DateTime(2016, 08, 11, 12, 00, 00),
                            Type            = "RankedTeam5x5",
                            Losses          = 1337,
                            Wins            = 9000,
                            Leaves          = 0,
                            AggregatedStats = new SummaryAggStats
                            {
                                Stats = new RtmpSharp.IO.AMF3.ArrayCollection
                                {
                                    new SummaryAggStat
                                    {
                                        StatType = "totalNeutralMinionsKilled",
                                        Value    = 1337
                                    },
                                    new SummaryAggStat
                                    {
                                        StatType = "totalChampionKills",
                                        Value    = 1337
                                    },
                                    new SummaryAggStat
                                    {
                                        StatType = "totalAssists",
                                        Value    = 1337
                                    },
                                    new SummaryAggStat
                                    {
                                        StatType = "totalTurretsKilled",
                                        Value    = 1337
                                    },
                                }
                            },
                            UserId = Convert.ToInt32(summonerSender._sumId),
                        },
                        new PlayerStatSummary()
                        {
                            ModifyDate      = new DateTime(2016, 08, 11, 12, 00, 00),
                            Type            = "Unranked",
                            Losses          = 1337,
                            Wins            = 9000,
                            Leaves          = 0,
                            AggregatedStats = new SummaryAggStats
                            {
                                Stats = new RtmpSharp.IO.AMF3.ArrayCollection
                                {
                                    new SummaryAggStat
                                    {
                                        StatType = "totalNeutralMinionsKilled",
                                        Value    = 1337
                                    },
                                    new SummaryAggStat
                                    {
                                        StatType = "totalChampionKills",
                                        Value    = 1337
                                    },
                                    new SummaryAggStat
                                    {
                                        StatType = "totalAssists",
                                        Value    = 1337
                                    },
                                    new SummaryAggStat
                                    {
                                        StatType = "totalTurretsKilled",
                                        Value    = 1337
                                    },
                                }
                            },
                        },
                    }
                },
                PreviousFirstWinOfDay = new DateTime(2016, 08, 11, 12, 00, 00),
                UserId      = Convert.ToInt32(summonerSender._sumId),
                PlayerStats = new PlayerStats
                {
                    PromoGamesPlayed           = 11,
                    PromoGamesPlayedLastUpdate = DateTime.Now
                },
                GameStatistics = new RtmpSharp.IO.AMF3.ArrayCollection()
                {
                    new PlayerGameStats {
                        ChampionId       = 17,
                        CreateDate       = DateTime.Now,
                        ExperienceEarned = 9999,
                        IPEarned         = 9999,
                        FellowPlayers    = new RtmpSharp.IO.AMF3.ArrayCollection(),
                        GameId           = 1,
                        GameMapId        = 11,
                        GameMode         = "CLASSIC",
                        GameMutators     = new RtmpSharp.IO.AMF3.ArrayCollection(),
                        GameType         = "RankedSolo5x5",
                        Invalid          = false,
                        Leaver           = false,
                        LeveledUp        = true,
                        QueueType        = "RANKED_SOLO_5x5",
                        Ranked           = true,
                        RawStats         = new RtmpSharp.IO.AMF3.ArrayCollection(),
                        Spell1           = 5,
                        Spell2           = 5,
                        Statistics       = null,
                        TeamId           = 100,
                        UserId           = summonerSender._sumId
                    }
                }
            };

            e.ReturnRequired = true;
            e.Data           = PLSData;

            return(e);
        }