]> git.deb.at Git - rhonda/impostor.git/commitdiff
Add total game counts for maps (#41)
authorBrightSkyz <BrightSkyz@users.noreply.github.com>
Mon, 5 Oct 2020 01:13:50 +0000 (21:13 -0400)
committerGitHub <noreply@github.com>
Mon, 5 Oct 2020 01:13:50 +0000 (03:13 +0200)
src/Impostor.Server/Net/Manager/GameManager.cs
src/Impostor.Server/Net/Messages/Message16GetGameListV2.cs
src/Impostor.Server/Net/State/ClientPlayer.Events.cs

index 0ad8fe51530447afb367d315632b35c516b8ad64..0a1b59a09e2a7b6d2c831682a9b25a425f9055fb 100644 (file)
@@ -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);
index a454c70b35e59e1754776d3b12e78e7c05cfa66e..f174892c936f3a8f8b57e7892ea4d57358ee9bb0 100644 (file)
@@ -13,15 +13,15 @@ namespace Impostor.Server.Net.Messages
             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
index 41c1b0e6cca4fa55aab1b4adeba586b03bb63fc3..b3468f91d214a71c3ddb2d633e294a4dbfce9b12 100644 (file)
@@ -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);
             }