]> git.deb.at Git - rhonda/impostor.git/commitdiff
Added game manager net object and logic classes
authorAeonLucid <aeonlucid@gmail.com>
Sun, 18 Dec 2022 23:56:03 +0000 (00:56 +0100)
committerAeonLucid <aeonlucid@gmail.com>
Sun, 18 Dec 2022 23:56:03 +0000 (00:56 +0100)
26 files changed:
src/Impostor.Api/Net/Inner/Objects/GameManager/IInnerGameManager.cs [new file with mode: 0644]
src/Impostor.Api/Net/Inner/Objects/GameManager/IInnerHideAndSeekManager.cs [new file with mode: 0644]
src/Impostor.Api/Net/Inner/Objects/GameManager/IInnerNormalGameManager.cs [new file with mode: 0644]
src/Impostor.Server/Net/Inner/Objects/GameManager/InnerGameManager.cs [new file with mode: 0644]
src/Impostor.Server/Net/Inner/Objects/GameManager/InnerHideAndSeekManager.cs [new file with mode: 0644]
src/Impostor.Server/Net/Inner/Objects/GameManager/InnerNormalGameManager.cs [new file with mode: 0644]
src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/GameLogicComponent.cs [new file with mode: 0644]
src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/HideAndSeek/LogicGameFlowHnS.cs [new file with mode: 0644]
src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/HideAndSeek/LogicHnSDangerLevel.cs [new file with mode: 0644]
src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/HideAndSeek/LogicHnSDeathPopup.cs [new file with mode: 0644]
src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/HideAndSeek/LogicHnSMusic.cs [new file with mode: 0644]
src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/HideAndSeek/LogicMinigameHnS.cs [new file with mode: 0644]
src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/HideAndSeek/LogicOptionsHnS.cs [new file with mode: 0644]
src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/HideAndSeek/LogicPingsHnS.cs [new file with mode: 0644]
src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/HideAndSeek/LogicRoleSelectionHnS.cs [new file with mode: 0644]
src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/HideAndSeek/LogicUsablesHnS.cs [new file with mode: 0644]
src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/LogicGameFlow.cs [new file with mode: 0644]
src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/LogicMinigame.cs [new file with mode: 0644]
src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/LogicOptions.cs [new file with mode: 0644]
src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/LogicRoleSelection.cs [new file with mode: 0644]
src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/LogicUsables.cs [new file with mode: 0644]
src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/Normal/LogicGameFlowNormal.cs [new file with mode: 0644]
src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/Normal/LogicOptionsNormal.cs [new file with mode: 0644]
src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/Normal/LogicRoleSelectionNormal.cs [new file with mode: 0644]
src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/Normal/LogicUsablesBasic.cs [new file with mode: 0644]
src/Impostor.Server/Net/State/Game.Data.cs

diff --git a/src/Impostor.Api/Net/Inner/Objects/GameManager/IInnerGameManager.cs b/src/Impostor.Api/Net/Inner/Objects/GameManager/IInnerGameManager.cs
new file mode 100644 (file)
index 0000000..4f502f2
--- /dev/null
@@ -0,0 +1,6 @@
+namespace Impostor.Api.Net.Inner.Objects.GameManager;
+
+public interface IInnerGameManager
+{
+    
+}
diff --git a/src/Impostor.Api/Net/Inner/Objects/GameManager/IInnerHideAndSeekManager.cs b/src/Impostor.Api/Net/Inner/Objects/GameManager/IInnerHideAndSeekManager.cs
new file mode 100644 (file)
index 0000000..b8267f6
--- /dev/null
@@ -0,0 +1,6 @@
+namespace Impostor.Api.Net.Inner.Objects.GameManager;
+
+internal interface IInnerHideAndSeekManager
+{
+    
+}
diff --git a/src/Impostor.Api/Net/Inner/Objects/GameManager/IInnerNormalGameManager.cs b/src/Impostor.Api/Net/Inner/Objects/GameManager/IInnerNormalGameManager.cs
new file mode 100644 (file)
index 0000000..7f7b3c0
--- /dev/null
@@ -0,0 +1,6 @@
+namespace Impostor.Api.Net.Inner.Objects.GameManager;
+
+public interface IInnerNormalGameManager
+{
+    
+}
diff --git a/src/Impostor.Server/Net/Inner/Objects/GameManager/InnerGameManager.cs b/src/Impostor.Server/Net/Inner/Objects/GameManager/InnerGameManager.cs
new file mode 100644 (file)
index 0000000..27ce592
--- /dev/null
@@ -0,0 +1,64 @@
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Impostor.Api.Net;
+using Impostor.Api.Net.Custom;
+using Impostor.Api.Net.Inner.Objects.GameManager;
+using Impostor.Server.Net.Inner.Objects.GameManager.Logic;
+using Impostor.Server.Net.State;
+using Microsoft.Extensions.Logging;
+
+namespace Impostor.Server.Net.Inner.Objects.GameManager;
+
+internal abstract class InnerGameManager : InnerNetObject, IInnerGameManager
+{
+    private readonly ILogger<InnerGameManager> _logger;
+
+    public InnerGameManager(ICustomMessageManager<ICustomRpc> customMessageManager, Game game, ILogger<InnerGameManager> logger) : base(customMessageManager, game)
+    {
+        _logger = logger;
+
+        Components.Add(this);
+    }
+
+    protected readonly List<GameLogicComponent> LogicComponents = new();
+
+    public LogicGameFlow LogicFlow { get; protected init; } = null!;
+
+    public LogicMinigame LogicMinigame { get; protected init; } = null!;
+
+    public LogicRoleSelection LogicRoleSelection { get; protected init; } = null!;
+
+    public LogicUsables LogicUsables { get; protected init; } = null!;
+
+    public LogicOptions LogicOptions { get; protected init; } = null!;
+
+    protected T AddGameLogic<T>(T logic)
+        where T : GameLogicComponent
+    {
+        LogicComponents.Add(logic);
+        return logic;
+    }
+
+    public override ValueTask<bool> SerializeAsync(IMessageWriter writer, bool initialState)
+    {
+        throw new System.NotImplementedException();
+    }
+
+    public override ValueTask DeserializeAsync(IClientPlayer sender, IClientPlayer? target, IMessageReader reader, bool initialState)
+    {
+        while (reader.Position < reader.Length)
+        {
+            var innerReader = reader.ReadMessage();
+            var tag = (int)innerReader.Tag;
+            if (tag < 0 || tag > this.LogicComponents.Count)
+            {
+                _logger.LogError("Out of bounds in DeserializeAsync of InnerGameManager");
+                continue;
+            }
+
+            this.LogicComponents[tag].Deserialize(innerReader, initialState);
+        }
+
+        return ValueTask.CompletedTask;
+    }
+}
diff --git a/src/Impostor.Server/Net/Inner/Objects/GameManager/InnerHideAndSeekManager.cs b/src/Impostor.Server/Net/Inner/Objects/GameManager/InnerHideAndSeekManager.cs
new file mode 100644 (file)
index 0000000..306f9b0
--- /dev/null
@@ -0,0 +1,37 @@
+using Impostor.Api.Net.Custom;
+using Impostor.Api.Net.Inner.Objects.GameManager;
+using Impostor.Server.Net.Inner.Objects.GameManager.Logic.HideAndSeek;
+using Impostor.Server.Net.State;
+using Microsoft.Extensions.Logging;
+
+namespace Impostor.Server.Net.Inner.Objects.GameManager;
+
+internal class InnerHideAndSeekManager : InnerGameManager, IInnerHideAndSeekManager
+{
+    public InnerHideAndSeekManager(ICustomMessageManager<ICustomRpc> customMessageManager, Game game, ILogger<InnerGameManager> logger) : base(customMessageManager, game, logger)
+    {
+        LogicMusic = AddGameLogic(new LogicHnSMusic(this));
+        LogicMinigame = AddGameLogic(new LogicMinigameHnS(this));
+        LogicFlowHnS = new LogicGameFlowHnS(this);
+        LogicFlow = AddGameLogic(LogicFlowHnS);
+        LogicUsables = AddGameLogic(new LogicUsablesHnS());
+        LogicRoleSelection = AddGameLogic(new LogicRoleSelectionHnS(this));
+        LogicOptionsHnS = new LogicOptionsHnS(this, game);
+        LogicOptions = AddGameLogic(this.LogicOptionsHnS);
+        LogicDangerLevel = AddGameLogic(new LogicHnSDangerLevel(this));
+        LogicPing = AddGameLogic(new LogicPingsHnS(this));
+        LogicDeathPopup = AddGameLogic(new LogicHnSDeathPopup(this));
+    }
+
+    public LogicHnSMusic LogicMusic { get; private set; }
+
+    public LogicGameFlowHnS LogicFlowHnS { get; private set; }
+
+    public LogicOptionsHnS LogicOptionsHnS { get; private set; }
+
+    public LogicHnSDangerLevel LogicDangerLevel { get; private set; }
+
+    public LogicPingsHnS LogicPing { get; private set; }
+
+    public LogicHnSDeathPopup LogicDeathPopup { get; private set; }
+}
diff --git a/src/Impostor.Server/Net/Inner/Objects/GameManager/InnerNormalGameManager.cs b/src/Impostor.Server/Net/Inner/Objects/GameManager/InnerNormalGameManager.cs
new file mode 100644 (file)
index 0000000..9b8e3b7
--- /dev/null
@@ -0,0 +1,20 @@
+using Impostor.Api.Net.Custom;
+using Impostor.Api.Net.Inner.Objects.GameManager;
+using Impostor.Server.Net.Inner.Objects.GameManager.Logic;
+using Impostor.Server.Net.Inner.Objects.GameManager.Logic.Normal;
+using Impostor.Server.Net.State;
+using Microsoft.Extensions.Logging;
+
+namespace Impostor.Server.Net.Inner.Objects.GameManager;
+
+internal class InnerNormalGameManager : InnerGameManager, IInnerNormalGameManager
+{
+    public InnerNormalGameManager(ICustomMessageManager<ICustomRpc> customMessageManager, Game game, ILogger<InnerGameManager> logger) : base(customMessageManager, game, logger)
+    {
+        LogicFlow = AddGameLogic(new LogicGameFlowNormal(this));
+        LogicMinigame = AddGameLogic(new LogicMinigame(this));
+        LogicRoleSelection = AddGameLogic(new LogicRoleSelectionNormal(this));
+        LogicUsables = AddGameLogic(new LogicUsablesBasic(this));
+        LogicOptions = AddGameLogic(new LogicOptionsNormal(this, game));
+    }
+}
diff --git a/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/GameLogicComponent.cs b/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/GameLogicComponent.cs
new file mode 100644 (file)
index 0000000..9241a19
--- /dev/null
@@ -0,0 +1,19 @@
+using Impostor.Api.Net.Inner;
+using Impostor.Api.Net.Inner.Objects;
+
+namespace Impostor.Server.Net.Inner.Objects.GameManager.Logic;
+
+internal abstract class GameLogicComponent
+{
+    public virtual void OnPlayerDisconnect(IInnerPlayerControl pc)
+    {
+    }
+
+    public virtual void HandleRPC(RpcCalls callId, IMessageReader reader)
+    {
+    }
+
+    public abstract bool Serialize(IMessageWriter writer, bool initialState);
+
+    public abstract void Deserialize(IMessageReader reader, bool initialState);
+}
diff --git a/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/HideAndSeek/LogicGameFlowHnS.cs b/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/HideAndSeek/LogicGameFlowHnS.cs
new file mode 100644 (file)
index 0000000..47e3c7c
--- /dev/null
@@ -0,0 +1,24 @@
+namespace Impostor.Server.Net.Inner.Objects.GameManager.Logic.HideAndSeek;
+
+internal class LogicGameFlowHnS : LogicGameFlow
+{
+    private float currentFinalHideTime;
+    private float currentHideTime;
+
+    public LogicGameFlowHnS(InnerHideAndSeekManager gameManager)
+    {
+    }
+
+    public override bool Serialize(IMessageWriter writer, bool initialState)
+    {
+        throw new System.NotImplementedException();
+    }
+
+    public override void Deserialize(IMessageReader reader, bool initialState)
+    {
+        var num = reader.ReadSingle();
+
+        currentFinalHideTime = reader.ReadSingle();
+        currentHideTime = num;
+    }
+}
diff --git a/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/HideAndSeek/LogicHnSDangerLevel.cs b/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/HideAndSeek/LogicHnSDangerLevel.cs
new file mode 100644 (file)
index 0000000..eae6ee2
--- /dev/null
@@ -0,0 +1,17 @@
+namespace Impostor.Server.Net.Inner.Objects.GameManager.Logic.HideAndSeek;
+
+internal class LogicHnSDangerLevel : GameLogicComponent
+{
+    public LogicHnSDangerLevel(InnerHideAndSeekManager gameManager)
+    {
+    }
+
+    public override bool Serialize(IMessageWriter writer, bool initialState)
+    {
+        return false;
+    }
+
+    public override void Deserialize(IMessageReader reader, bool initialState)
+    {
+    }
+}
diff --git a/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/HideAndSeek/LogicHnSDeathPopup.cs b/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/HideAndSeek/LogicHnSDeathPopup.cs
new file mode 100644 (file)
index 0000000..f2ef712
--- /dev/null
@@ -0,0 +1,17 @@
+namespace Impostor.Server.Net.Inner.Objects.GameManager.Logic.HideAndSeek;
+
+internal class LogicHnSDeathPopup : GameLogicComponent
+{
+    public LogicHnSDeathPopup(InnerHideAndSeekManager gameManager)
+    {
+    }
+
+    public override bool Serialize(IMessageWriter writer, bool initialState)
+    {
+        return false;
+    }
+
+    public override void Deserialize(IMessageReader reader, bool initialState)
+    {
+    }
+}
diff --git a/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/HideAndSeek/LogicHnSMusic.cs b/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/HideAndSeek/LogicHnSMusic.cs
new file mode 100644 (file)
index 0000000..b775b29
--- /dev/null
@@ -0,0 +1,17 @@
+namespace Impostor.Server.Net.Inner.Objects.GameManager.Logic.HideAndSeek;
+
+internal class LogicHnSMusic : GameLogicComponent
+{
+    public LogicHnSMusic(InnerHideAndSeekManager gameManager)
+    {
+    }
+
+    public override bool Serialize(IMessageWriter writer, bool initialState)
+    {
+        return false;
+    }
+
+    public override void Deserialize(IMessageReader reader, bool initialState)
+    {
+    }
+}
diff --git a/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/HideAndSeek/LogicMinigameHnS.cs b/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/HideAndSeek/LogicMinigameHnS.cs
new file mode 100644 (file)
index 0000000..aa5438b
--- /dev/null
@@ -0,0 +1,8 @@
+namespace Impostor.Server.Net.Inner.Objects.GameManager.Logic.HideAndSeek;
+
+internal class LogicMinigameHnS : LogicMinigame
+{
+    public LogicMinigameHnS(InnerHideAndSeekManager gameManager) : base(gameManager)
+    {
+    }
+}
diff --git a/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/HideAndSeek/LogicOptionsHnS.cs b/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/HideAndSeek/LogicOptionsHnS.cs
new file mode 100644 (file)
index 0000000..3b2f313
--- /dev/null
@@ -0,0 +1,10 @@
+using Impostor.Server.Net.State;
+
+namespace Impostor.Server.Net.Inner.Objects.GameManager.Logic.HideAndSeek;
+
+internal class LogicOptionsHnS : LogicOptions
+{
+    public LogicOptionsHnS(InnerHideAndSeekManager gameManager, Game game) : base(game)
+    {
+    }
+}
diff --git a/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/HideAndSeek/LogicPingsHnS.cs b/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/HideAndSeek/LogicPingsHnS.cs
new file mode 100644 (file)
index 0000000..62682ea
--- /dev/null
@@ -0,0 +1,17 @@
+namespace Impostor.Server.Net.Inner.Objects.GameManager.Logic.HideAndSeek;
+
+internal class LogicPingsHnS : GameLogicComponent
+{
+    public LogicPingsHnS(InnerHideAndSeekManager gameManager)
+    {
+    }
+
+    public override bool Serialize(IMessageWriter writer, bool initialState)
+    {
+        return false;
+    }
+
+    public override void Deserialize(IMessageReader reader, bool initialState)
+    {
+    }
+}
diff --git a/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/HideAndSeek/LogicRoleSelectionHnS.cs b/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/HideAndSeek/LogicRoleSelectionHnS.cs
new file mode 100644 (file)
index 0000000..d65f74e
--- /dev/null
@@ -0,0 +1,17 @@
+namespace Impostor.Server.Net.Inner.Objects.GameManager.Logic.HideAndSeek;
+
+internal class LogicRoleSelectionHnS : LogicRoleSelection
+{
+    public LogicRoleSelectionHnS(InnerHideAndSeekManager gameManager)
+    {
+    }
+
+    public override bool Serialize(IMessageWriter writer, bool initialState)
+    {
+        return false;
+    }
+
+    public override void Deserialize(IMessageReader reader, bool initialState)
+    {
+    }
+}
diff --git a/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/HideAndSeek/LogicUsablesHnS.cs b/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/HideAndSeek/LogicUsablesHnS.cs
new file mode 100644 (file)
index 0000000..61df129
--- /dev/null
@@ -0,0 +1,13 @@
+namespace Impostor.Server.Net.Inner.Objects.GameManager.Logic.HideAndSeek;
+
+internal class LogicUsablesHnS : LogicUsables
+{
+    public override bool Serialize(IMessageWriter writer, bool initialState)
+    {
+        return false;
+    }
+
+    public override void Deserialize(IMessageReader reader, bool initialState)
+    {
+    }
+}
diff --git a/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/LogicGameFlow.cs b/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/LogicGameFlow.cs
new file mode 100644 (file)
index 0000000..2b408e8
--- /dev/null
@@ -0,0 +1,5 @@
+namespace Impostor.Server.Net.Inner.Objects.GameManager.Logic;
+
+internal abstract class LogicGameFlow : GameLogicComponent
+{
+}
diff --git a/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/LogicMinigame.cs b/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/LogicMinigame.cs
new file mode 100644 (file)
index 0000000..13c938b
--- /dev/null
@@ -0,0 +1,17 @@
+namespace Impostor.Server.Net.Inner.Objects.GameManager.Logic;
+
+internal class LogicMinigame : GameLogicComponent
+{
+    public LogicMinigame(InnerGameManager gameManager)
+    {
+    }
+
+    public override bool Serialize(IMessageWriter writer, bool initialState)
+    {
+        return false;
+    }
+
+    public override void Deserialize(IMessageReader reader, bool initialState)
+    {
+    }
+}
diff --git a/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/LogicOptions.cs b/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/LogicOptions.cs
new file mode 100644 (file)
index 0000000..2bffea9
--- /dev/null
@@ -0,0 +1,25 @@
+using Impostor.Api.Innersloth.GameOptions;
+using Impostor.Server.Net.State;
+
+namespace Impostor.Server.Net.Inner.Objects.GameManager.Logic;
+
+internal abstract class LogicOptions : GameLogicComponent
+{
+    private readonly Game _game;
+
+    protected LogicOptions(Game game)
+    {
+        _game = game;
+    }
+
+    public override bool Serialize(IMessageWriter writer, bool initialState)
+    {
+        GameOptionsFactory.Serialize(writer, _game.Options);
+        return true;
+    }
+
+    public override void Deserialize(IMessageReader reader, bool initialState)
+    {
+        var options = GameOptionsFactory.Deserialize(reader);
+    }
+}
diff --git a/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/LogicRoleSelection.cs b/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/LogicRoleSelection.cs
new file mode 100644 (file)
index 0000000..5674c73
--- /dev/null
@@ -0,0 +1,5 @@
+namespace Impostor.Server.Net.Inner.Objects.GameManager.Logic;
+
+internal abstract class LogicRoleSelection : GameLogicComponent
+{
+}
diff --git a/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/LogicUsables.cs b/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/LogicUsables.cs
new file mode 100644 (file)
index 0000000..1a60f09
--- /dev/null
@@ -0,0 +1,5 @@
+namespace Impostor.Server.Net.Inner.Objects.GameManager.Logic;
+
+internal abstract class LogicUsables : GameLogicComponent
+{
+}
diff --git a/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/Normal/LogicGameFlowNormal.cs b/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/Normal/LogicGameFlowNormal.cs
new file mode 100644 (file)
index 0000000..30febf1
--- /dev/null
@@ -0,0 +1,17 @@
+namespace Impostor.Server.Net.Inner.Objects.GameManager.Logic.Normal;
+
+internal class LogicGameFlowNormal : LogicGameFlow
+{
+    public LogicGameFlowNormal(InnerNormalGameManager gameManager)
+    {
+    }
+
+    public override bool Serialize(IMessageWriter writer, bool initialState)
+    {
+        return false;
+    }
+
+    public override void Deserialize(IMessageReader reader, bool initialState)
+    {
+    }
+}
diff --git a/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/Normal/LogicOptionsNormal.cs b/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/Normal/LogicOptionsNormal.cs
new file mode 100644 (file)
index 0000000..b94649b
--- /dev/null
@@ -0,0 +1,10 @@
+using Impostor.Server.Net.State;
+
+namespace Impostor.Server.Net.Inner.Objects.GameManager.Logic.Normal;
+
+internal class LogicOptionsNormal : LogicOptions
+{
+    public LogicOptionsNormal(InnerNormalGameManager gameManager, Game game) : base(game)
+    {
+    }
+}
diff --git a/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/Normal/LogicRoleSelectionNormal.cs b/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/Normal/LogicRoleSelectionNormal.cs
new file mode 100644 (file)
index 0000000..4e32da8
--- /dev/null
@@ -0,0 +1,17 @@
+namespace Impostor.Server.Net.Inner.Objects.GameManager.Logic.Normal;
+
+internal class LogicRoleSelectionNormal : LogicRoleSelection
+{
+    public LogicRoleSelectionNormal(InnerNormalGameManager gameManager)
+    {
+    }
+
+    public override bool Serialize(IMessageWriter writer, bool initialState)
+    {
+        return false;
+    }
+
+    public override void Deserialize(IMessageReader reader, bool initialState)
+    {
+    }
+}
diff --git a/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/Normal/LogicUsablesBasic.cs b/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/Normal/LogicUsablesBasic.cs
new file mode 100644 (file)
index 0000000..a16b5fa
--- /dev/null
@@ -0,0 +1,17 @@
+namespace Impostor.Server.Net.Inner.Objects.GameManager.Logic.Normal;
+
+internal class LogicUsablesBasic : LogicUsables
+{
+    public LogicUsablesBasic(InnerNormalGameManager gameManager)
+    {
+    }
+
+    public override bool Serialize(IMessageWriter writer, bool initialState)
+    {
+        return false;
+    }
+
+    public override void Deserialize(IMessageReader reader, bool initialState)
+    {
+    }
+}
index 64d8f051922c5a21f33fe3147d17a0c3126e2775..d08b636fc24218dd7bc0d7cb3d9fcf1badf53dd9 100644 (file)
@@ -10,6 +10,7 @@ using Impostor.Server.Events.Player;
 using Impostor.Server.Net.Inner;
 using Impostor.Server.Net.Inner.Objects;
 using Impostor.Server.Net.Inner.Objects.Components;
+using Impostor.Server.Net.Inner.Objects.GameManager;
 using Impostor.Server.Net.Inner.Objects.ShipStatus;
 using Microsoft.Extensions.DependencyInjection;
 using Microsoft.Extensions.Logging;
@@ -40,6 +41,8 @@ namespace Impostor.Server.Net.State
             typeof(InnerPolusShipStatus),
             typeof(InnerSkeldShipStatus), // April fools skeld
             typeof(InnerAirshipStatus),
+            typeof(InnerHideAndSeekManager),
+            typeof(InnerNormalGameManager),
         };
 
         private readonly List<InnerNetObject> _allObjects = new List<InnerNetObject>();