From: AeonLucid Date: Mon, 19 Dec 2022 14:34:55 +0000 (+0100) Subject: Clean up unused serialization and expose two HideAndSeek floats in api X-Git-Tag: v1.8.0~2^2~8 X-Git-Url: https://git.deb.at/?a=commitdiff_plain;h=5a8927e4c9d53a5843317318e281821306217a2f;p=rhonda%2Fimpostor.git Clean up unused serialization and expose two HideAndSeek floats in api --- diff --git a/src/Impostor.Api/Net/Inner/IGameNet.cs b/src/Impostor.Api/Net/Inner/IGameNet.cs index 7b068d1..0167b5c 100644 --- a/src/Impostor.Api/Net/Inner/IGameNet.cs +++ b/src/Impostor.Api/Net/Inner/IGameNet.cs @@ -1,4 +1,5 @@ using Impostor.Api.Net.Inner.Objects; +using Impostor.Api.Net.Inner.Objects.GameManager; using Impostor.Api.Net.Inner.Objects.ShipStatus; namespace Impostor.Api.Net.Inner @@ -8,6 +9,8 @@ namespace Impostor.Api.Net.Inner /// public interface IGameNet { + IInnerGameManager? GameManager { get; } + IInnerLobbyBehaviour? LobbyBehaviour { get; } IInnerGameData? GameData { get; } diff --git a/src/Impostor.Api/Net/Inner/Objects/GameManager/IInnerHideAndSeekManager.cs b/src/Impostor.Api/Net/Inner/Objects/GameManager/IInnerHideAndSeekManager.cs index b8267f6..24a84b2 100644 --- a/src/Impostor.Api/Net/Inner/Objects/GameManager/IInnerHideAndSeekManager.cs +++ b/src/Impostor.Api/Net/Inner/Objects/GameManager/IInnerHideAndSeekManager.cs @@ -1,6 +1,8 @@ -namespace Impostor.Api.Net.Inner.Objects.GameManager; +using Impostor.Api.Net.Inner.Objects.GameManager.Logic.HideAndSeek; -internal interface IInnerHideAndSeekManager +namespace Impostor.Api.Net.Inner.Objects.GameManager; + +public interface IInnerHideAndSeekManager { - + ILogicGameFlowHnS LogicFlowHnS { get; } } diff --git a/src/Impostor.Api/Net/Inner/Objects/GameManager/Logic/HideAndSeek/ILogicGameFlowHnS.cs b/src/Impostor.Api/Net/Inner/Objects/GameManager/Logic/HideAndSeek/ILogicGameFlowHnS.cs new file mode 100644 index 0000000..98a2f41 --- /dev/null +++ b/src/Impostor.Api/Net/Inner/Objects/GameManager/Logic/HideAndSeek/ILogicGameFlowHnS.cs @@ -0,0 +1,8 @@ +namespace Impostor.Api.Net.Inner.Objects.GameManager.Logic.HideAndSeek; + +public interface ILogicGameFlowHnS +{ + float CurrentFinalHideTime { get; } + + float CurrentHideTime { get; } +} diff --git a/src/Impostor.Server/Net/Inner/Objects/GameManager/InnerGameManager.cs b/src/Impostor.Server/Net/Inner/Objects/GameManager/InnerGameManager.cs index 08891ae..8ed3a00 100644 --- a/src/Impostor.Server/Net/Inner/Objects/GameManager/InnerGameManager.cs +++ b/src/Impostor.Server/Net/Inner/Objects/GameManager/InnerGameManager.cs @@ -2,6 +2,7 @@ using System.Threading.Tasks; using Impostor.Api.Net; using Impostor.Api.Net.Custom; +using Impostor.Api.Net.Inner; using Impostor.Api.Net.Inner.Objects.GameManager; using Impostor.Server.Net.Inner.Objects.GameManager.Logic; using Impostor.Server.Net.State; @@ -12,6 +13,7 @@ namespace Impostor.Server.Net.Inner.Objects.GameManager; internal abstract class InnerGameManager : InnerNetObject, IInnerGameManager { private readonly ILogger _logger; + private readonly List _logicComponents = new(); public InnerGameManager(ICustomMessageManager customMessageManager, Game game, ILogger logger) : base(customMessageManager, game) { @@ -20,8 +22,6 @@ internal abstract class InnerGameManager : InnerNetObject, IInnerGameManager Components.Add(this); } - protected readonly List LogicComponents = new(); - public LogicGameFlow LogicFlow { get; protected init; } = null!; public LogicMinigame LogicMinigame { get; protected init; } = null!; @@ -35,23 +35,30 @@ internal abstract class InnerGameManager : InnerNetObject, IInnerGameManager protected T AddGameLogic(T logic) where T : GameLogicComponent { - LogicComponents.Add(logic); + _logicComponents.Add(logic); return logic; } - internal int? GetGameLogicTag(T logic) + /// + /// Finds the tag of the registered . + /// + /// Instance to search for. + /// Intance type to search for. + /// Tag of the registered , or -1 if not found. + internal int GetGameLogicTag(T logic) where T : GameLogicComponent { - for (var i = 0; i < LogicComponents.Count; i++) + return _logicComponents.IndexOf(logic); + } + + public override ValueTask HandleRpcAsync(ClientPlayer sender, ClientPlayer? target, RpcCalls call, IMessageReader reader) + { + foreach (var logicComponent in _logicComponents) { - var component = LogicComponents[i]; - if (component == logic) - { - return i; - } + logicComponent.HandleRPC(call, reader); } - return null; + return ValueTask.FromResult(true); } public override ValueTask SerializeAsync(IMessageWriter writer, bool initialState) @@ -65,13 +72,13 @@ internal abstract class InnerGameManager : InnerNetObject, IInnerGameManager { var innerReader = reader.ReadMessage(); var tag = (int)innerReader.Tag; - if (tag < 0 || tag > this.LogicComponents.Count) + if (tag < 0 || tag > this._logicComponents.Count) { _logger.LogError("Out of bounds in DeserializeAsync of InnerGameManager"); continue; } - this.LogicComponents[tag].Deserialize(innerReader, initialState); + this._logicComponents[tag].Deserialize(innerReader, initialState); } return ValueTask.CompletedTask; diff --git a/src/Impostor.Server/Net/Inner/Objects/GameManager/InnerHideAndSeekManager.Api.cs b/src/Impostor.Server/Net/Inner/Objects/GameManager/InnerHideAndSeekManager.Api.cs new file mode 100644 index 0000000..308588e --- /dev/null +++ b/src/Impostor.Server/Net/Inner/Objects/GameManager/InnerHideAndSeekManager.Api.cs @@ -0,0 +1,9 @@ +using Impostor.Api.Net.Inner.Objects.GameManager; +using Impostor.Api.Net.Inner.Objects.GameManager.Logic.HideAndSeek; + +namespace Impostor.Server.Net.Inner.Objects.GameManager; + +internal partial class InnerHideAndSeekManager +{ + ILogicGameFlowHnS IInnerHideAndSeekManager.LogicFlowHnS => LogicFlowHnS; +} diff --git a/src/Impostor.Server/Net/Inner/Objects/GameManager/InnerHideAndSeekManager.cs b/src/Impostor.Server/Net/Inner/Objects/GameManager/InnerHideAndSeekManager.cs index 306f9b0..b8468fe 100644 --- a/src/Impostor.Server/Net/Inner/Objects/GameManager/InnerHideAndSeekManager.cs +++ b/src/Impostor.Server/Net/Inner/Objects/GameManager/InnerHideAndSeekManager.cs @@ -6,21 +6,21 @@ using Microsoft.Extensions.Logging; namespace Impostor.Server.Net.Inner.Objects.GameManager; -internal class InnerHideAndSeekManager : InnerGameManager, IInnerHideAndSeekManager +internal partial class InnerHideAndSeekManager : InnerGameManager, IInnerHideAndSeekManager { public InnerHideAndSeekManager(ICustomMessageManager customMessageManager, Game game, ILogger logger) : base(customMessageManager, game, logger) { - LogicMusic = AddGameLogic(new LogicHnSMusic(this)); - LogicMinigame = AddGameLogic(new LogicMinigameHnS(this)); - LogicFlowHnS = new LogicGameFlowHnS(this); + LogicMusic = AddGameLogic(new LogicHnSMusic()); + LogicMinigame = AddGameLogic(new LogicMinigameHnS()); + LogicFlowHnS = new LogicGameFlowHnS(); LogicFlow = AddGameLogic(LogicFlowHnS); LogicUsables = AddGameLogic(new LogicUsablesHnS()); - LogicRoleSelection = AddGameLogic(new LogicRoleSelectionHnS(this)); - LogicOptionsHnS = new LogicOptionsHnS(this, game); + LogicRoleSelection = AddGameLogic(new LogicRoleSelectionHnS()); + LogicOptionsHnS = new LogicOptionsHnS(game); LogicOptions = AddGameLogic(this.LogicOptionsHnS); - LogicDangerLevel = AddGameLogic(new LogicHnSDangerLevel(this)); - LogicPing = AddGameLogic(new LogicPingsHnS(this)); - LogicDeathPopup = AddGameLogic(new LogicHnSDeathPopup(this)); + LogicDangerLevel = AddGameLogic(new LogicHnSDangerLevel()); + LogicPing = AddGameLogic(new LogicPingsHnS()); + LogicDeathPopup = AddGameLogic(new LogicHnSDeathPopup()); } public LogicHnSMusic LogicMusic { 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 index 9b8e3b7..a3e715a 100644 --- a/src/Impostor.Server/Net/Inner/Objects/GameManager/InnerNormalGameManager.cs +++ b/src/Impostor.Server/Net/Inner/Objects/GameManager/InnerNormalGameManager.cs @@ -11,10 +11,10 @@ internal class InnerNormalGameManager : InnerGameManager, IInnerNormalGameManage { public InnerNormalGameManager(ICustomMessageManager customMessageManager, Game game, ILogger 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)); + LogicFlow = AddGameLogic(new LogicGameFlowNormal()); + LogicMinigame = AddGameLogic(new LogicMinigame()); + LogicRoleSelection = AddGameLogic(new LogicRoleSelectionNormal()); + LogicUsables = AddGameLogic(new LogicUsablesBasic()); + LogicOptions = AddGameLogic(new LogicOptionsNormal(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 index 9241a19..5e2b4d5 100644 --- a/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/GameLogicComponent.cs +++ b/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/GameLogicComponent.cs @@ -1,19 +1,22 @@ -using Impostor.Api.Net.Inner; -using Impostor.Api.Net.Inner.Objects; +using System; +using Impostor.Api.Net.Inner; 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) { + throw new NotImplementedException($"Unhandled RpcCall {callId}"); } - public virtual void HandleRPC(RpcCalls callId, IMessageReader reader) + public virtual bool Serialize(IMessageWriter writer, bool initialState) { + throw new NotImplementedException(); } - public abstract bool Serialize(IMessageWriter writer, bool initialState); - - public abstract void Deserialize(IMessageReader reader, bool initialState); + public virtual void Deserialize(IMessageReader reader, bool initialState) + { + throw new NotImplementedException(); + } } 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 index 47e3c7c..1033b5f 100644 --- a/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/HideAndSeek/LogicGameFlowHnS.cs +++ b/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/HideAndSeek/LogicGameFlowHnS.cs @@ -1,24 +1,18 @@ -namespace Impostor.Server.Net.Inner.Objects.GameManager.Logic.HideAndSeek; +using Impostor.Api.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(); - } +namespace Impostor.Server.Net.Inner.Objects.GameManager.Logic.HideAndSeek; +internal class LogicGameFlowHnS : LogicGameFlow, ILogicGameFlowHnS +{ public override void Deserialize(IMessageReader reader, bool initialState) { var num = reader.ReadSingle(); - currentFinalHideTime = reader.ReadSingle(); - currentHideTime = num; + CurrentFinalHideTime = reader.ReadSingle(); + CurrentHideTime = num; } + + public float CurrentFinalHideTime { get; private set; } + + public float CurrentHideTime { get; private set; } } 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 index eae6ee2..ba4fc85 100644 --- a/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/HideAndSeek/LogicHnSDangerLevel.cs +++ b/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/HideAndSeek/LogicHnSDangerLevel.cs @@ -2,16 +2,4 @@ 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 index f2ef712..b624c96 100644 --- a/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/HideAndSeek/LogicHnSDeathPopup.cs +++ b/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/HideAndSeek/LogicHnSDeathPopup.cs @@ -2,16 +2,4 @@ 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 index b775b29..e0f0a33 100644 --- a/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/HideAndSeek/LogicHnSMusic.cs +++ b/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/HideAndSeek/LogicHnSMusic.cs @@ -2,16 +2,4 @@ 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 index aa5438b..1e44fad 100644 --- a/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/HideAndSeek/LogicMinigameHnS.cs +++ b/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/HideAndSeek/LogicMinigameHnS.cs @@ -2,7 +2,4 @@ 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 index 3b2f313..9a4e89a 100644 --- a/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/HideAndSeek/LogicOptionsHnS.cs +++ b/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/HideAndSeek/LogicOptionsHnS.cs @@ -4,7 +4,7 @@ namespace Impostor.Server.Net.Inner.Objects.GameManager.Logic.HideAndSeek; internal class LogicOptionsHnS : LogicOptions { - public LogicOptionsHnS(InnerHideAndSeekManager gameManager, Game game) : base(game) + public LogicOptionsHnS(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 index 62682ea..ff60e30 100644 --- a/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/HideAndSeek/LogicPingsHnS.cs +++ b/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/HideAndSeek/LogicPingsHnS.cs @@ -2,16 +2,4 @@ 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 index d65f74e..2acd488 100644 --- a/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/HideAndSeek/LogicRoleSelectionHnS.cs +++ b/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/HideAndSeek/LogicRoleSelectionHnS.cs @@ -2,16 +2,4 @@ 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 index 61df129..3022cdc 100644 --- a/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/HideAndSeek/LogicUsablesHnS.cs +++ b/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/HideAndSeek/LogicUsablesHnS.cs @@ -2,12 +2,4 @@ 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/LogicMinigame.cs b/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/LogicMinigame.cs index 13c938b..7fd1e3b 100644 --- a/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/LogicMinigame.cs +++ b/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/LogicMinigame.cs @@ -2,16 +2,4 @@ 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/Normal/LogicGameFlowNormal.cs b/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/Normal/LogicGameFlowNormal.cs index 30febf1..2be3c7f 100644 --- a/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/Normal/LogicGameFlowNormal.cs +++ b/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/Normal/LogicGameFlowNormal.cs @@ -2,16 +2,4 @@ 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 index b94649b..944fc56 100644 --- a/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/Normal/LogicOptionsNormal.cs +++ b/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/Normal/LogicOptionsNormal.cs @@ -4,7 +4,7 @@ namespace Impostor.Server.Net.Inner.Objects.GameManager.Logic.Normal; internal class LogicOptionsNormal : LogicOptions { - public LogicOptionsNormal(InnerNormalGameManager gameManager, Game game) : base(game) + public LogicOptionsNormal(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 index 4e32da8..855f757 100644 --- a/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/Normal/LogicRoleSelectionNormal.cs +++ b/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/Normal/LogicRoleSelectionNormal.cs @@ -2,16 +2,4 @@ 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 index a16b5fa..2d159a7 100644 --- a/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/Normal/LogicUsablesBasic.cs +++ b/src/Impostor.Server/Net/Inner/Objects/GameManager/Logic/Normal/LogicUsablesBasic.cs @@ -2,16 +2,4 @@ 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) - { - } } diff --git a/src/Impostor.Server/Net/State/Game.Api.cs b/src/Impostor.Server/Net/State/Game.Api.cs index ad6c793..b8a081e 100644 --- a/src/Impostor.Server/Net/State/Game.Api.cs +++ b/src/Impostor.Server/Net/State/Game.Api.cs @@ -2,13 +2,11 @@ using System.Threading.Tasks; using Impostor.Api; using Impostor.Api.Games; -using Impostor.Api.Innersloth.GameOptions; using Impostor.Api.Net; using Impostor.Api.Net.Inner; using Impostor.Api.Net.Messages; using Impostor.Hazel; using Impostor.Server.Net.Inner; -using Impostor.Server.Net.Inner.Objects.GameManager; namespace Impostor.Server.Net.State { @@ -30,14 +28,13 @@ namespace Impostor.Server.Net.State throw new ImpostorException("Attempted to change settings when the host was not spawned."); } - var gameManager = FindObjectByType(); - if (gameManager == null) + if (GameNet.GameManager == null) { throw new ImpostorException("Attempted to change options when the game manager was not spawned."); } - var gameOptionsTag = gameManager.GetGameLogicTag(gameManager.LogicOptions); - if (gameOptionsTag == null) + var gameOptionsTag = GameNet.GameManager.GetGameLogicTag(GameNet.GameManager.LogicOptions); + if (gameOptionsTag == -1) { throw new ImpostorException("Attempted to change options when the LogicOptions was not spawned."); } @@ -52,10 +49,10 @@ namespace Impostor.Server.Net.State Code.Serialize(writer); writer.StartMessage(GameDataTag.DataFlag); - writer.WritePacked(gameManager.NetId); + writer.WritePacked(GameNet.GameManager.NetId); writer.StartMessage((byte)gameOptionsTag); - GameOptionsFactory.Serialize(writer, Options); + GameNet.GameManager.LogicOptions.Serialize(writer, false); writer.EndMessage(); writer.EndMessage(); diff --git a/src/Impostor.Server/Net/State/Game.Data.cs b/src/Impostor.Server/Net/State/Game.Data.cs index e0a3712..02a7438 100644 --- a/src/Impostor.Server/Net/State/Game.Data.cs +++ b/src/Impostor.Server/Net/State/Game.Data.cs @@ -60,20 +60,6 @@ namespace Impostor.Server.Net.State return default; } - public T? FindObjectByType() - where T : IInnerNetObject - { - foreach (var netObject in _allObjects) - { - if (netObject is T result) - { - return result; - } - } - - return default; - } - public async ValueTask HandleGameDataAsync(IMessageReader parent, ClientPlayer sender, bool toPlayer) { // Find target player. @@ -304,6 +290,12 @@ namespace Impostor.Server.Net.State { switch (netObj) { + case InnerGameManager innerGameManager: + { + GameNet.GameManager = innerGameManager; + break; + } + case InnerLobbyBehaviour lobby: { GameNet.LobbyBehaviour = lobby; diff --git a/src/Impostor.Server/Net/State/GameNet.Api.cs b/src/Impostor.Server/Net/State/GameNet.Api.cs index 3af856c..68d4c26 100644 --- a/src/Impostor.Server/Net/State/GameNet.Api.cs +++ b/src/Impostor.Server/Net/State/GameNet.Api.cs @@ -1,5 +1,6 @@ using Impostor.Api.Net.Inner; using Impostor.Api.Net.Inner.Objects; +using Impostor.Api.Net.Inner.Objects.GameManager; using Impostor.Api.Net.Inner.Objects.ShipStatus; namespace Impostor.Server.Net.State @@ -7,6 +8,8 @@ namespace Impostor.Server.Net.State /// internal partial class GameNet : IGameNet { + IInnerGameManager? IGameNet.GameManager => GameManager; + IInnerLobbyBehaviour? IGameNet.LobbyBehaviour => LobbyBehaviour; IInnerGameData? IGameNet.GameData => GameData; diff --git a/src/Impostor.Server/Net/State/GameNet.cs b/src/Impostor.Server/Net/State/GameNet.cs index bb7a8e2..66f69f0 100644 --- a/src/Impostor.Server/Net/State/GameNet.cs +++ b/src/Impostor.Server/Net/State/GameNet.cs @@ -1,11 +1,14 @@ 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; namespace Impostor.Server.Net.State { internal partial class GameNet { + public InnerGameManager? GameManager { get; internal set; } + public InnerLobbyBehaviour? LobbyBehaviour { get; internal set; } public InnerGameData? GameData { get; internal set; }