]> git.deb.at Git - rhonda/impostor.git/commitdiff
Stop hardcoding the GameOptions in GameListingV2
authorminiduikboot <mini@duikbo.at>
Wed, 26 Mar 2025 19:52:17 +0000 (20:52 +0100)
committerminiduikboot <mini@duikbo.at>
Sun, 30 Mar 2025 18:35:03 +0000 (20:35 +0200)
To prevent needing to pull in Impostor.Hazel, use an extension method
instead.

Thanks Niko for researching this part

Co-Authored-By: Niko233 <139348239+NikoCat233@users.noreply.github.com>
src/Impostor.Server/Extensions/IGameOptionsExtensions.cs [new file with mode: 0644]
src/Impostor.Server/Http/GamesController.cs

diff --git a/src/Impostor.Server/Extensions/IGameOptionsExtensions.cs b/src/Impostor.Server/Extensions/IGameOptionsExtensions.cs
new file mode 100644 (file)
index 0000000..ca54b7d
--- /dev/null
@@ -0,0 +1,24 @@
+using System;
+using Impostor.Api.Innersloth.GameOptions;
+using Impostor.Hazel;
+
+namespace Impostor.Server.Extensions;
+
+public static class IGameOptionsExtensions
+{
+    public static byte[] ToBytes(this IGameOptions gameOptions)
+    {
+        using var writer = MessageWriter.Get(MessageType.Unreliable);
+        writer.Write(gameOptions.Version);
+        writer.StartMessage(0);
+        writer.Write((byte)gameOptions.GameMode);
+        gameOptions.Serialize(writer);
+        writer.EndMessage();
+        return writer.ToByteArray(false);
+    }
+
+    public static string ToBase64String(this IGameOptions gameOptions)
+    {
+        return Convert.ToBase64String(gameOptions.ToBytes());
+    }
+}
index 58c3abb7cb783a5c716549c45ff5aa7b601ca3bd..d7310e5ce687ddbe9c5b919e795de6f7cf3baaa1 100644 (file)
@@ -9,6 +9,7 @@ using Impostor.Api.Config;
 using Impostor.Api.Games;
 using Impostor.Api.Games.Managers;
 using Impostor.Api.Innersloth;
+using Impostor.Server.Extensions;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.Extensions.Options;
 
@@ -308,9 +309,7 @@ public sealed class GamesController : ControllerBase
                 NumImpostors = game.Options.NumImpostors,
                 MapId = game.Options.Map,
                 Language = game.Options.Keywords,
-
-                // TODO don't hardcode
-                Options = "CXQAAAEAAA8AAQAAAgAAwD8AAEA/AAAAQAAAoEECAgQCAAAAAgEtAAAALQAAAAAPAAABAQAHBQABZAMAAAAKHgIAAWQCAAAKDwQAAkYDAAAjDwADAAFkAgAADw8IAAJkAgAACgEJAAFkAgAACh4KAAFkAwAADxQB",
+                Options = game.Options.ToBase64String(),
             };
         }
     }