Fix jetpack warnings (#18227)

This commit is contained in:
metalgearsloth
2023-07-23 16:00:59 +10:00
committed by GitHub
parent c8ef41e732
commit 1de396d566
6 changed files with 83 additions and 71 deletions

View File

@@ -6,20 +6,17 @@ using Content.Shared.Movement.Events;
using Content.Shared.Popups;
using Robust.Shared.Containers;
using Robust.Shared.GameStates;
using Robust.Shared.Network;
using Robust.Shared.Player;
using Robust.Shared.Serialization;
using Robust.Shared.Timing;
namespace Content.Shared.Movement.Systems;
public abstract class SharedJetpackSystem : EntitySystem
{
[Dependency] protected readonly MovementSpeedModifierSystem MovementSpeedModifier = default!;
[Dependency] protected readonly SharedAppearanceSystem Appearance = default!;
[Dependency] private readonly MovementSpeedModifierSystem _movementSpeedModifier = default!;
[Dependency] protected readonly SharedAppearanceSystem Appearance = default!;
[Dependency] protected readonly SharedContainerSystem Container = default!;
[Dependency] private readonly SharedPopupSystem _popup = default!;
[Dependency] private readonly SharedMoverController _mover = default!;
[Dependency] private readonly SharedMoverController _mover = default!;
[Dependency] private readonly SharedPopupSystem _popup = default!;
public override void Initialize()
{
@@ -55,14 +52,16 @@ public abstract class SharedJetpackSystem : EntitySystem
{
_popup.PopupClient(Loc.GetString("jetpack-to-grid"), uid, uid);
SetEnabled(jetpack, false, uid);
SetEnabled(user.Jetpack, jetpack, false, uid);
}
}
}
private void OnJetpackUserHandleState(EntityUid uid, JetpackUserComponent component, ref ComponentHandleState args)
{
if (args.Current is not JetpackUserComponentState state) return;
if (args.Current is not JetpackUserComponentState state)
return;
component.Jetpack = state.Jetpack;
}
@@ -76,7 +75,7 @@ public abstract class SharedJetpackSystem : EntitySystem
private void OnJetpackDropped(EntityUid uid, JetpackComponent component, DroppedEvent args)
{
SetEnabled(component, false, args.User);
SetEnabled(uid, component, false, args.User);
}
private void OnJetpackUserCanWeightless(EntityUid uid, JetpackUserComponent component, ref CanWeightlessMoveEvent args)
@@ -89,22 +88,24 @@ public abstract class SharedJetpackSystem : EntitySystem
if (TryComp<JetpackComponent>(component.Jetpack, out var jetpack) &&
!CanEnableOnGrid(args.Transform.GridUid))
{
SetEnabled(jetpack, false, uid);
SetEnabled(component.Jetpack, jetpack, false, uid);
_popup.PopupClient(Loc.GetString("jetpack-to-grid"), uid, uid);
}
}
private void SetupUser(EntityUid uid, JetpackComponent component)
private void SetupUser(EntityUid user, EntityUid jetpackUid)
{
var user = EnsureComp<JetpackUserComponent>(uid);
_mover.SetRelay(uid, component.Owner);
user.Jetpack = component.Owner;
var userComp = EnsureComp<JetpackUserComponent>(user);
_mover.SetRelay(user, jetpackUid);
userComp.Jetpack = jetpackUid;
}
private void RemoveUser(EntityUid uid)
{
if (!RemComp<JetpackUserComponent>(uid)) return;
if (!RemComp<JetpackUserComponent>(uid))
return;
RemComp<RelayInputMoverComponent>(uid);
}
@@ -120,7 +121,7 @@ public abstract class SharedJetpackSystem : EntitySystem
return;
}
SetEnabled(component, !IsEnabled(uid));
SetEnabled(uid, component, !IsEnabled(uid));
}
private bool CanEnableOnGrid(EntityUid? gridUid)
@@ -139,44 +140,48 @@ public abstract class SharedJetpackSystem : EntitySystem
return HasComp<ActiveJetpackComponent>(uid);
}
public void SetEnabled(JetpackComponent component, bool enabled, EntityUid? user = null)
public void SetEnabled(EntityUid uid, JetpackComponent component, bool enabled, EntityUid? user = null)
{
if (IsEnabled(component.Owner) == enabled ||
enabled && !CanEnable(component)) return;
if (IsEnabled(uid) == enabled ||
enabled && !CanEnable(uid, component))
{
return;
}
if (enabled)
{
EnsureComp<ActiveJetpackComponent>(component.Owner);
EnsureComp<ActiveJetpackComponent>(uid);
}
else
{
RemComp<ActiveJetpackComponent>(component.Owner);
RemComp<ActiveJetpackComponent>(uid);
}
if (user == null)
{
Container.TryGetContainingContainer(component.Owner, out var container);
Container.TryGetContainingContainer(uid, out var container);
user = container?.Owner;
}
// Can't activate if no one's using.
if (user == null && enabled) return;
if (user == null && enabled)
return;
if (user != null)
{
if (enabled)
{
SetupUser(user.Value, component);
SetupUser(user.Value, uid);
}
else
{
RemoveUser(user.Value);
}
MovementSpeedModifier.RefreshMovementSpeedModifiers(user.Value);
_movementSpeedModifier.RefreshMovementSpeedModifiers(user.Value);
}
Appearance.SetData(component.Owner, JetpackVisuals.Enabled, enabled);
Appearance.SetData(uid, JetpackVisuals.Enabled, enabled);
Dirty(component);
}
@@ -185,7 +190,7 @@ public abstract class SharedJetpackSystem : EntitySystem
return HasComp<JetpackUserComponent>(uid);
}
protected virtual bool CanEnable(JetpackComponent component)
protected virtual bool CanEnable(EntityUid uid, JetpackComponent component)
{
return true;
}