コード例 #1
0
 /// <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);
     }
 }
コード例 #2
0
 int Compare(PlayerRating x, PlayerRating y)
 {
     return((new CaseInsensitiveComparer()).Compare(x.Name, y.Name));
 }
コード例 #3
0
 int Compare(PlayerRating x, PlayerRating y)
 {
     return(y.Rating - x.Rating);
 }