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; } }
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)); }
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); }
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); }
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)); }
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); }
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); } } })); }
/// 18.) public void RetrievePlayerStatsByAccountId(Double accountId, String season, PlayerLifetimeStats.Callback callback) { PlayerLifetimeStats cb = new PlayerLifetimeStats(callback); InvokeWithCallback("playerStatsService", "retrievePlayerStatsByAccountId", new object[] { accountId, season }, cb); }
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); }