private static void AddGame(GameStats game, bool today = false) { if(game.Result == GameResult.Win) { TotalWon++; if(today) WonToday++; } else if(game.Result == GameResult.Loss) { TotalLost++; if(today) LostToday++; } // ignore Draw and "other" results }
private static bool IsLatest(GameStats latest, GameStats game) { return game.StartTime >= latest.StartTime; }
private static SeasonSummary Summarize(List<DeckStats> stats) { int highRank = -1; GameStats latest = new GameStats(); latest.StartTime = DateTime.Now.AddMonths(-1); foreach(var deck in stats) { foreach(var game in deck.Games) { if(IsRanked(game) && IsThisSeason(game) && IsOnThisServer(game)) { AddGame(game, IsToday(game)); if(IsLatest(latest, game)) { latest = game; } // TODO: not sure what happens with legend ranks? if(game.Rank < highRank || highRank <= 0) { highRank = game.Rank; } } } } return new SeasonSummary(TotalWon, TotalLost, latest.Rank, WonToday, LostToday, highRank); }
private static bool IsToday(GameStats g) { return g.StartTime >= StartOfToday && g.StartTime <= EndOfToday; }
private static bool IsThisSeason(GameStats g) { return g.StartTime >= FirstOfMonth && g.StartTime <= LastOfMonth; }
private static bool IsRanked(GameStats g) { return g.GameMode == GameMode.Ranked; }
private static bool IsOnThisServer(GameStats g) { return g.Region == Server; }