|
@@ -87,7 +87,7 @@ namespace MafiaTelegramBot.Controllers
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
- public static async Task<List<GameRoom>> GetPublicRooms()
|
|
|
|
|
|
+ public static async Task<List<GameRoom>> GetPublicNotRankedRooms()
|
|
{
|
|
{
|
|
return await Task.Run(() =>
|
|
return await Task.Run(() =>
|
|
{
|
|
{
|
|
@@ -99,7 +99,32 @@ namespace MafiaTelegramBot.Controllers
|
|
}
|
|
}
|
|
|
|
|
|
var rooms = OpenedGames.Values
|
|
var rooms = OpenedGames.Values
|
|
- .Where(room => !room.IsPrivate && !room.IsFilled() && !room.IsRunning).
|
|
|
|
|
|
+ .Where(room => !room.IsPrivate && !room.IsFilled() && !room.IsRunning && !room.IsRanking).
|
|
|
|
+ ToList();
|
|
|
|
+ rooms.Sort((room, room2) => Comparison(room, room2).Result);
|
|
|
|
+ return rooms;
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public static async Task<List<GameRoom>> GetPublicRankedRooms(char rank)
|
|
|
|
+ {
|
|
|
|
+ return await Task.Run(() =>
|
|
|
|
+ {
|
|
|
|
+ async Task<int> Comparison(GameRoom room, GameRoom room2)
|
|
|
|
+ {
|
|
|
|
+ var first = await room.GetCapacity() / (double) await room.GetMaximum();
|
|
|
|
+ var second = await room2.GetCapacity() / (double) await room2.GetMaximum();
|
|
|
|
+ return second > first ? 1 : 0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ bool IsNeighborRank(char roomRank, char playerRank)
|
|
|
|
+ {
|
|
|
|
+ return roomRank - playerRank > -2 && roomRank - playerRank < 2;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ var rooms = OpenedGames.Values
|
|
|
|
+ .Where(room => !room.IsPrivate && !room.IsFilled() && !room.IsRunning
|
|
|
|
+ && room.IsRanking && IsNeighborRank(room.GetRoomRank().Result, rank)).
|
|
ToList();
|
|
ToList();
|
|
rooms.Sort((room, room2) => Comparison(room, room2).Result);
|
|
rooms.Sort((room, room2) => Comparison(room, room2).Result);
|
|
return rooms;
|
|
return rooms;
|