From: BrightSkyz Date: Mon, 5 Oct 2020 01:13:50 +0000 (-0400) Subject: Add total game counts for maps (#41) X-Git-Tag: v1.2.2~118 X-Git-Url: https://git.deb.at/?a=commitdiff_plain;h=3d74e0e93ffd13e6135206b243e83623d6f8a763;p=rhonda%2Fimpostor.git Add total game counts for maps (#41) --- diff --git a/src/Impostor.Server/Net/Manager/GameManager.cs b/src/Impostor.Server/Net/Manager/GameManager.cs index 0ad8fe5..0a1b59a 100644 --- a/src/Impostor.Server/Net/Manager/GameManager.cs +++ b/src/Impostor.Server/Net/Manager/GameManager.cs @@ -91,6 +91,20 @@ namespace Impostor.Server.Net.Manager } } + 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); diff --git a/src/Impostor.Server/Net/Messages/Message16GetGameListV2.cs b/src/Impostor.Server/Net/Messages/Message16GetGameListV2.cs index a454c70..f174892 100644 --- a/src/Impostor.Server/Net/Messages/Message16GetGameListV2.cs +++ b/src/Impostor.Server/Net/Messages/Message16GetGameListV2.cs @@ -13,15 +13,15 @@ namespace Impostor.Server.Net.Messages options = GameOptionsData.Deserialize(reader.ReadBytesAndSize()); } - public static void Serialize(MessageWriter writer, IEnumerable games) + public static void Serialize(MessageWriter writer, int skeldGameCount, int miraHqGameCount, int polusGameCount, IEnumerable 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 diff --git a/src/Impostor.Server/Net/State/ClientPlayer.Events.cs b/src/Impostor.Server/Net/State/ClientPlayer.Events.cs index 41c1b0e..b3468f9 100644 --- a/src/Impostor.Server/Net/State/ClientPlayer.Events.cs +++ b/src/Impostor.Server/Net/State/ClientPlayer.Events.cs @@ -19,8 +19,12 @@ namespace Impostor.Server.Net.State 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); }