/// <summary> /// Возвращает рейтинг игрока на определенную дату. /// Участие в турнире влияет на рейтинг только на следующей день после турнира. /// Для игрока, которого нет в БД возвращается -1 /// </summary> /// <param name="playerId">Id игрока из БД</param> /// <param name="date">дата, на которую рассчитывается рейтинг</param> /// <returns></returns> public int GetPlayerRating(int playerId, DateTime date) { if (FPlayers.ContainsKey(playerId)) { PlayerRating player = FPlayers[playerId]; #if STANDARD return(player.Rating); #endif #if FEDITION if (date > player.LastRatingDate) { return(player.Rating - (GetMonthCount(player.LastRatingDate, date) / 3) * 25); } DateTime last_date = DateTime.MinValue; int rating = 0; foreach (CompetitionInfo comp in FCompetitions) { if (comp.Date < date && comp.Results.ContainsKey(playerId)) { PlayersCompetitionResult res = comp.Results[playerId]; rating = res.RatingBegin + res.Penalty; last_date = comp.Date; } } if (last_date != DateTime.MinValue) { rating -= (GetMonthCount(last_date, date) / 3) * 25; } return(rating); #endif } else { return(-1); } }
int Compare(PlayerRating x, PlayerRating y) { return((new CaseInsensitiveComparer()).Compare(x.Name, y.Name)); }
int Compare(PlayerRating x, PlayerRating y) { return(y.Rating - x.Rating); }