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
{
_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;
}
}
}