diff --git a/Content.Client/Disposal/Systems/DisposalUnitSystem.cs b/Content.Client/Disposal/Systems/DisposalUnitSystem.cs index fff235308e..6c9aea8b9f 100644 --- a/Content.Client/Disposal/Systems/DisposalUnitSystem.cs +++ b/Content.Client/Disposal/Systems/DisposalUnitSystem.cs @@ -1,3 +1,4 @@ +using System.Diagnostics.CodeAnalysis; using Content.Shared.Disposal; using Content.Shared.Disposal.Components; using Content.Shared.DragDrop; @@ -53,6 +54,16 @@ public sealed class DisposalUnitSystem : SharedDisposalUnitSystem return HasComp(uid); } + public override bool ResolveDisposals(EntityUid uid, [NotNullWhen(true)] ref SharedDisposalUnitComponent? component) + { + if (component != null) + return true; + + TryComp(uid, out var storage); + component = storage; + return component != null; + } + public override void DoInsertDisposalUnit(EntityUid uid, EntityUid toInsert, EntityUid user, SharedDisposalUnitComponent? disposal = null) { return; diff --git a/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs b/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs index 76082f8b8d..45629caf16 100644 --- a/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs +++ b/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs @@ -1,3 +1,4 @@ +using System.Diagnostics.CodeAnalysis; using System.Linq; using Content.Server.Administration.Logs; using Content.Server.Atmos.EntitySystems; @@ -200,7 +201,7 @@ public sealed class DisposalUnitSystem : SharedDisposalUnitSystem public override void DoInsertDisposalUnit(EntityUid uid, EntityUid toInsert, EntityUid user, SharedDisposalUnitComponent? disposal = null) { - if (!Resolve(uid, ref disposal)) + if (!ResolveDisposals(uid, ref disposal)) return; if (!disposal.Container.Insert(toInsert)) @@ -737,6 +738,16 @@ public sealed class DisposalUnitSystem : SharedDisposalUnitSystem return HasComp(uid); } + public override bool ResolveDisposals(EntityUid uid, [NotNullWhen(true)] ref SharedDisposalUnitComponent? component) + { + if (component != null) + return true; + + TryComp(uid, out var storage); + component = storage; + return component != null; + } + public override bool CanInsert(EntityUid uid, SharedDisposalUnitComponent component, EntityUid entity) { if (!base.CanInsert(uid, component, entity) || component is not SharedDisposalUnitComponent serverComp) diff --git a/Content.Shared/Disposal/SharedDisposalUnitSystem.cs b/Content.Shared/Disposal/SharedDisposalUnitSystem.cs index 475dd8e78b..b69e674f21 100644 --- a/Content.Shared/Disposal/SharedDisposalUnitSystem.cs +++ b/Content.Shared/Disposal/SharedDisposalUnitSystem.cs @@ -8,7 +8,6 @@ using Content.Shared.Item; using Content.Shared.Mobs.Components; using Content.Shared.Mobs.Systems; using Content.Shared.Throwing; -using JetBrains.Annotations; using Robust.Shared.Audio; using Robust.Shared.Physics.Components; using Robust.Shared.Physics.Events; @@ -37,6 +36,8 @@ public abstract class SharedDisposalUnitSystem : EntitySystem public abstract bool HasDisposals([NotNullWhen(true)] EntityUid? uid); + public abstract bool ResolveDisposals(EntityUid uid, [NotNullWhen(true)] ref SharedDisposalUnitComponent? component); + /// /// Gets the current pressure state of a disposals unit. ///