}
}
+ public int GetGameCount(MapFlags map)
+ {
+ var count = 0;
+
+ foreach (var (code, game) in _games) {
+ if (!map.HasFlag((MapFlags)(1 << game.Options.MapId)))
+ {
+ continue;
+ }
+ count++;
+ }
+ return count;
+ }
+
public void Remove(int gameCode)
{
_logger.LogDebug("Remove game with code {0} ({1}).", GameCode.IntToGameName(gameCode), gameCode);
options = GameOptionsData.Deserialize(reader.ReadBytesAndSize());
}
- public static void Serialize(MessageWriter writer, IEnumerable<Game> games)
+ public static void Serialize(MessageWriter writer, int skeldGameCount, int miraHqGameCount, int polusGameCount, IEnumerable<Game> games)
{
writer.StartMessage(MessageFlags.GetGameListV2);
// Count
writer.StartMessage(1);
- writer.Write(123); // The Skeld
- writer.Write(456); // Mira HQ
- writer.Write(789); // Polus
+ writer.Write(skeldGameCount); // The Skeld
+ writer.Write(miraHqGameCount); // Mira HQ
+ writer.Write(polusGameCount); // Polus
writer.EndMessage();
// Listing
using (var message = MessageWriter.Get(SendOption.Reliable))
{
var games = _gameManager.FindListings((MapFlags) options.MapId, options.NumImpostors, options.Keywords);
-
- Message16GetGameListV2.Serialize(message, games);
+
+ var skeldGameCount = _gameManager.GetGameCount(MapFlags.Skeld);
+ var miraHqGameCount = _gameManager.GetGameCount(MapFlags.MiraHQ);
+ var polusGameCount = _gameManager.GetGameCount(MapFlags.Polus);
+
+ Message16GetGameListV2.Serialize(message, skeldGameCount, miraHqGameCount, polusGameCount, games);
Client.Send(message);
}