From 69838a3638340afdb4808f83489580c4024358fd Mon Sep 17 00:00:00 2001 From: nikthechampiongr Date: Sun, 24 Mar 2024 13:49:26 +0200 Subject: [PATCH 1/3] Fix mailing units turning into disposal units while recharging. The states were hardcoded. --- Content.Client/Disposal/Systems/DisposalUnitSystem.cs | 10 +++++++--- .../Entities/Structures/Piping/Disposal/units.yml | 2 ++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/Content.Client/Disposal/Systems/DisposalUnitSystem.cs b/Content.Client/Disposal/Systems/DisposalUnitSystem.cs index 344bd2ec979ab5..500082e7882c34 100644 --- a/Content.Client/Disposal/Systems/DisposalUnitSystem.cs +++ b/Content.Client/Disposal/Systems/DisposalUnitSystem.cs @@ -101,12 +101,16 @@ private void UpdateState(EntityUid uid, SharedDisposalUnitComponent unit, Sprite sprite.LayerSetVisible(DisposalUnitVisualLayers.Base, state == VisualState.Anchored); sprite.LayerSetVisible(DisposalUnitVisualLayers.BaseFlush, state is VisualState.Flushing or VisualState.Charging); + sprite.LayerMapTryGet(DisposalUnitVisualLayers.BaseCharging, out var chargingLayer); + var chargingState = sprite.LayerGetState(chargingLayer); + // This is a transient state so not too worried about replaying in range. if (state == VisualState.Flushing) { if (!_animationSystem.HasRunningAnimation(uid, AnimationKey)) { - var flushState = new RSI.StateId("disposal-flush"); + sprite.LayerMapTryGet(DisposalUnitVisualLayers.BaseFlush, out var flushLayer); + var flushState = sprite.LayerGetState(flushLayer); // Setup the flush animation to play var anim = new Animation @@ -124,7 +128,7 @@ private void UpdateState(EntityUid uid, SharedDisposalUnitComponent unit, Sprite // Return to base state (though, depending on how the unit is // configured we might get an appearance change event telling // us to go to charging state) - new AnimationTrackSpriteFlick.KeyFrame("disposal-charging", (float) unit.FlushDelay.TotalSeconds) + new AnimationTrackSpriteFlick.KeyFrame(chargingState, (float) unit.FlushDelay.TotalSeconds) } }, } @@ -147,7 +151,7 @@ private void UpdateState(EntityUid uid, SharedDisposalUnitComponent unit, Sprite } else if (state == VisualState.Charging) { - sprite.LayerSetState(DisposalUnitVisualLayers.BaseFlush, new RSI.StateId("disposal-charging")); + sprite.LayerSetState(DisposalUnitVisualLayers.BaseFlush, chargingState); } else { diff --git a/Resources/Prototypes/Entities/Structures/Piping/Disposal/units.yml b/Resources/Prototypes/Entities/Structures/Piping/Disposal/units.yml index c5f04d80a14fd0..1193182d09f93d 100644 --- a/Resources/Prototypes/Entities/Structures/Piping/Disposal/units.yml +++ b/Resources/Prototypes/Entities/Structures/Piping/Disposal/units.yml @@ -16,6 +16,8 @@ map: [ "enum.DisposalUnitVisualLayers.Unanchored" ] - state: disposal map: [ "enum.DisposalUnitVisualLayers.Base" ] + - state: disposal-charging + map: [ "enum.DisposalUnitVisualLayers.BaseCharging" ] - state: disposal-flush map: [ "enum.DisposalUnitVisualLayers.BaseFlush" ] - state: dispover-charge From e7691aba66be2b9f09e468ff81868da2298d519c Mon Sep 17 00:00:00 2001 From: nikthechampiongr Date: Sun, 24 Mar 2024 16:32:15 +0200 Subject: [PATCH 2/3] Fix error handling --- Content.Client/Disposal/Systems/DisposalUnitSystem.cs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Content.Client/Disposal/Systems/DisposalUnitSystem.cs b/Content.Client/Disposal/Systems/DisposalUnitSystem.cs index 500082e7882c34..f5122b18322219 100644 --- a/Content.Client/Disposal/Systems/DisposalUnitSystem.cs +++ b/Content.Client/Disposal/Systems/DisposalUnitSystem.cs @@ -101,16 +101,18 @@ private void UpdateState(EntityUid uid, SharedDisposalUnitComponent unit, Sprite sprite.LayerSetVisible(DisposalUnitVisualLayers.Base, state == VisualState.Anchored); sprite.LayerSetVisible(DisposalUnitVisualLayers.BaseFlush, state is VisualState.Flushing or VisualState.Charging); - sprite.LayerMapTryGet(DisposalUnitVisualLayers.BaseCharging, out var chargingLayer); - var chargingState = sprite.LayerGetState(chargingLayer); + var chargingState = sprite.LayerMapTryGet(DisposalUnitVisualLayers.BaseCharging, out var chargingLayer) + ? sprite.LayerGetState(chargingLayer) + : new RSI.StateId("disposal-charging"); // This is a transient state so not too worried about replaying in range. if (state == VisualState.Flushing) { if (!_animationSystem.HasRunningAnimation(uid, AnimationKey)) { - sprite.LayerMapTryGet(DisposalUnitVisualLayers.BaseFlush, out var flushLayer); - var flushState = sprite.LayerGetState(flushLayer); + var flushState = sprite.LayerMapTryGet(DisposalUnitVisualLayers.BaseFlush, out var flushLayer) + ? sprite.LayerGetState(flushLayer) + : new RSI.StateId("disposal-flush"); // Setup the flush animation to play var anim = new Animation From 48f3e1d1515e610292df25d34eb85881becdf680 Mon Sep 17 00:00:00 2001 From: nikthechampiongr Date: Mon, 25 Mar 2024 03:23:23 +0200 Subject: [PATCH 3/3] Make default states constants --- Content.Client/Disposal/Systems/DisposalUnitSystem.cs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Content.Client/Disposal/Systems/DisposalUnitSystem.cs b/Content.Client/Disposal/Systems/DisposalUnitSystem.cs index f5122b18322219..8c40c784219913 100644 --- a/Content.Client/Disposal/Systems/DisposalUnitSystem.cs +++ b/Content.Client/Disposal/Systems/DisposalUnitSystem.cs @@ -22,6 +22,9 @@ public sealed class DisposalUnitSystem : SharedDisposalUnitSystem private const string AnimationKey = "disposal_unit_animation"; + private const string DefaultFlushState = "disposal-flush"; + private const string DefaultChargeState = "disposal-charging"; + public override void Initialize() { base.Initialize(); @@ -103,7 +106,7 @@ private void UpdateState(EntityUid uid, SharedDisposalUnitComponent unit, Sprite var chargingState = sprite.LayerMapTryGet(DisposalUnitVisualLayers.BaseCharging, out var chargingLayer) ? sprite.LayerGetState(chargingLayer) - : new RSI.StateId("disposal-charging"); + : new RSI.StateId(DefaultChargeState); // This is a transient state so not too worried about replaying in range. if (state == VisualState.Flushing) @@ -112,7 +115,7 @@ private void UpdateState(EntityUid uid, SharedDisposalUnitComponent unit, Sprite { var flushState = sprite.LayerMapTryGet(DisposalUnitVisualLayers.BaseFlush, out var flushLayer) ? sprite.LayerGetState(flushLayer) - : new RSI.StateId("disposal-flush"); + : new RSI.StateId(DefaultFlushState); // Setup the flush animation to play var anim = new Animation