From fe3bd658a185539d33338b7d9d0d7e592f756981 Mon Sep 17 00:00:00 2001 From: AeonLucid Date: Fri, 23 Oct 2020 19:13:28 +0200 Subject: [PATCH] Expose all global InnerNet objects --- src/Impostor.Api/Innersloth/Data/GameNet.cs | 101 ++++++++++++++---- .../Innersloth/Net/Objects/InnerShipStatus.cs | 1 - src/Impostor.Api/ProjectRules.ruleset | 1 + 3 files changed, 80 insertions(+), 23 deletions(-) diff --git a/src/Impostor.Api/Innersloth/Data/GameNet.cs b/src/Impostor.Api/Innersloth/Data/GameNet.cs index 29ec6f9..614e6a2 100644 --- a/src/Impostor.Api/Innersloth/Data/GameNet.cs +++ b/src/Impostor.Api/Innersloth/Data/GameNet.cs @@ -1,6 +1,7 @@ using Impostor.Api.Games; using Impostor.Api.Innersloth.Net; using Impostor.Api.Innersloth.Net.Objects; +using Impostor.Api.Innersloth.Net.Objects.Components; namespace Impostor.Api.Innersloth.Data { @@ -16,46 +17,102 @@ namespace Impostor.Api.Innersloth.Data _game = game; } + public InnerLobbyBehaviour LobbyBehaviour { get; private set; } + public InnerGameData GameData { get; private set; } + public InnerVoteBanSystem VoteBan { get; private set; } + + public InnerShipStatus ShipStatus { get; private set; } + internal void OnSpawn(InnerNetObject netObj) { - if (netObj is InnerGameData data) - { - GameData = data; - } - else if (netObj is InnerPlayerControl control) + switch (netObj) { - // Hook up InnerPlayerControl <-> IClientPlayer. - var clientPlayer = _game.GetClientPlayer(control.OwnerId); - if (clientPlayer != null) + case InnerLobbyBehaviour lobby: + { + LobbyBehaviour = lobby; + break; + } + + case InnerGameData data: { - clientPlayer.Character = control; + GameData = data; + break; } - // Hook up InnerPlayerControl <-> InnerPlayerControl.PlayerInfo. - control.PlayerInfo = GameData.GetPlayerById(control.PlayerId); + case InnerVoteBanSystem voteBan: + { + VoteBan = voteBan; + break; + } + + case InnerShipStatus shipStatus: + { + ShipStatus = shipStatus; + break; + } - if (control.PlayerInfo == null) + case InnerPlayerControl control: { - GameData.AddPlayer(control); + // Hook up InnerPlayerControl <-> IClientPlayer. + var clientPlayer = _game.GetClientPlayer(control.OwnerId); + if (clientPlayer != null) + { + clientPlayer.Character = control; + } + + // Hook up InnerPlayerControl <-> InnerPlayerControl.PlayerInfo. + control.PlayerInfo = GameData.GetPlayerById(control.PlayerId); + + if (control.PlayerInfo == null) + { + GameData.AddPlayer(control); + } + + break; } } } internal void OnDestroy(InnerNetObject netObj) { - if (netObj is InnerGameData) + switch (netObj) { - GameData = null; - } - else if (netObj is InnerPlayerControl control) - { - // Remove InnerPlayerControl <-> IClientPlayer. - var clientPlayer = _game.GetClientPlayer(control.OwnerId); - if (clientPlayer != null) + case InnerLobbyBehaviour lobby: + { + LobbyBehaviour = null; + break; + } + + case InnerGameData: + { + GameData = null; + break; + } + + case InnerVoteBanSystem: { - clientPlayer.Character = null; + VoteBan = null; + break; + } + + case InnerShipStatus: + { + ShipStatus = null; + break; + } + + case InnerPlayerControl control: + { + // Remove InnerPlayerControl <-> IClientPlayer. + var clientPlayer = _game.GetClientPlayer(control.OwnerId); + if (clientPlayer != null) + { + clientPlayer.Character = null; + } + + break; } } } diff --git a/src/Impostor.Api/Innersloth/Net/Objects/InnerShipStatus.cs b/src/Impostor.Api/Innersloth/Net/Objects/InnerShipStatus.cs index 78ba1fe..1c08dd6 100644 --- a/src/Impostor.Api/Innersloth/Net/Objects/InnerShipStatus.cs +++ b/src/Impostor.Api/Innersloth/Net/Objects/InnerShipStatus.cs @@ -45,7 +45,6 @@ namespace Impostor.Api.Innersloth.Net.Objects { case 27: { - // Close doors. if (!sender.Character.PlayerInfo.IsImpostor) { Console.WriteLine($"OOPS Fake Impostor: {sender.Character.PlayerInfo.PlayerName} did doors"); diff --git a/src/Impostor.Api/ProjectRules.ruleset b/src/Impostor.Api/ProjectRules.ruleset index a21a8d4..a380f5c 100644 --- a/src/Impostor.Api/ProjectRules.ruleset +++ b/src/Impostor.Api/ProjectRules.ruleset @@ -3,6 +3,7 @@ + -- 2.39.5