diff --git a/Content.Shared/Shuttles/Components/PilotComponent.cs b/Content.Shared/Shuttles/Components/PilotComponent.cs index 2381274a7f..45acff4ddb 100644 --- a/Content.Shared/Shuttles/Components/PilotComponent.cs +++ b/Content.Shared/Shuttles/Components/PilotComponent.cs @@ -1,7 +1,5 @@ -using Content.Shared.ActionBlocker; using Robust.Shared.GameStates; using Robust.Shared.Map; -using Robust.Shared.Serialization; namespace Content.Shared.Shuttles.Components { @@ -12,9 +10,6 @@ namespace Content.Shared.Shuttles.Components [NetworkedComponent] public sealed class PilotComponent : Component { - [Dependency] private readonly IEntitySystemManager _sysMan = default!; - [Dependency] private readonly IEntityManager _entMan = default!; - [ViewVariables] public SharedShuttleConsoleComponent? Console { get; set; } /// @@ -23,43 +18,5 @@ namespace Content.Shared.Shuttles.Components [ViewVariables] public EntityCoordinates? Position { get; set; } public const float BreakDistance = 0.25f; - - public override void HandleComponentState(ComponentState? curState, ComponentState? nextState) - { - base.HandleComponentState(curState, nextState); - if (curState is not PilotComponentState state) return; - - var console = state.Console.GetValueOrDefault(); - if (!console.IsValid()) - { - Console = null; - return; - } - - if (!_entMan.TryGetComponent(console, out SharedShuttleConsoleComponent? shuttleConsoleComponent)) - { - Logger.Warning($"Unable to set Helmsman console to {console}"); - return; - } - - Console = shuttleConsoleComponent; - _sysMan.GetEntitySystem().UpdateCanMove(Owner); - } - - public override ComponentState GetComponentState() - { - return Console == null ? new PilotComponentState(null) : new PilotComponentState(Console.Owner); - } - - [Serializable, NetSerializable] - private sealed class PilotComponentState : ComponentState - { - public EntityUid? Console { get; } - - public PilotComponentState(EntityUid? uid) - { - Console = uid; - } - } } } diff --git a/Content.Shared/Shuttles/SharedShuttleConsoleSystem.cs b/Content.Shared/Shuttles/SharedShuttleConsoleSystem.cs index 212de73fcc..0e0bd043a1 100644 --- a/Content.Shared/Shuttles/SharedShuttleConsoleSystem.cs +++ b/Content.Shared/Shuttles/SharedShuttleConsoleSystem.cs @@ -1,6 +1,8 @@ using Content.Shared.ActionBlocker; using Content.Shared.Movement; using Content.Shared.Shuttles.Components; +using Robust.Shared.GameStates; +using Robust.Shared.Serialization; namespace Content.Shared.Shuttles { @@ -14,6 +16,45 @@ namespace Content.Shared.Shuttles SubscribeLocalEvent(HandleMovementBlock); SubscribeLocalEvent(OnStartup); SubscribeLocalEvent(HandlePilotShutdown); + SubscribeLocalEvent(OnGetState); + SubscribeLocalEvent(OnHandleState); + } + + private void OnGetState(EntityUid uid, PilotComponent component, ref ComponentGetState args) + { + args.State = new PilotComponentState(component.Console?.Owner); + } + + private void OnHandleState(EntityUid uid, PilotComponent component, ref ComponentHandleState args) + { + if (args.Current is not PilotComponentState state) return; + + var console = state.Console.GetValueOrDefault(); + if (!console.IsValid()) + { + component.Console = null; + return; + } + + if (!TryComp(console, out var shuttleConsoleComponent)) + { + Logger.Warning($"Unable to set Helmsman console to {console}"); + return; + } + + component.Console = shuttleConsoleComponent; + ActionBlockerSystem.UpdateCanMove(uid); + } + + [Serializable, NetSerializable] + private sealed class PilotComponentState : ComponentState + { + public EntityUid? Console { get; } + + public PilotComponentState(EntityUid? uid) + { + Console = uid; + } } protected virtual void HandlePilotShutdown(EntityUid uid, PilotComponent component, ComponentShutdown args)