From a8fd975edd898076c8502b3ce0839d55dc06e7b8 Mon Sep 17 00:00:00 2001 From: TemporalOroboros Date: Fri, 3 Feb 2023 11:43:53 -0800 Subject: [PATCH] Resolves SmokeVisualizer is Obsolete (#13881) --- .../Chemistry/Visualizers/SmokeVisualizer.cs | 28 ------------------- .../Visualizers/SmokeVisualizerSystem.cs | 22 +++++++++++++++ .../Visualizers/SmokeVisualsComponent.cs | 10 +++++++ .../Entities/Effects/chemistry_effects.yml | 3 +- 4 files changed, 33 insertions(+), 30 deletions(-) delete mode 100644 Content.Client/Chemistry/Visualizers/SmokeVisualizer.cs create mode 100644 Content.Client/Chemistry/Visualizers/SmokeVisualizerSystem.cs create mode 100644 Content.Client/Chemistry/Visualizers/SmokeVisualsComponent.cs diff --git a/Content.Client/Chemistry/Visualizers/SmokeVisualizer.cs b/Content.Client/Chemistry/Visualizers/SmokeVisualizer.cs deleted file mode 100644 index 6b0e347a1f..0000000000 --- a/Content.Client/Chemistry/Visualizers/SmokeVisualizer.cs +++ /dev/null @@ -1,28 +0,0 @@ -using Content.Shared.Smoking; -using JetBrains.Annotations; -using Robust.Client.GameObjects; -using Robust.Shared.GameObjects; -using Robust.Shared.IoC; -using Robust.Shared.Maths; - -namespace Content.Client.Chemistry.Visualizers -{ - [UsedImplicitly] - public sealed class SmokeVisualizer : AppearanceVisualizer - { - [Obsolete("Subscribe to AppearanceChangeEvent instead.")] - public override void OnChangeData(AppearanceComponent component) - { - base.OnChangeData(component); - - var entities = IoCManager.Resolve(); - if (component.TryGetData(SmokeVisuals.Color, out var color)) - { - if (entities.TryGetComponent(component.Owner, out SpriteComponent? sprite)) - { - sprite.Color = color; - } - } - } - } -} diff --git a/Content.Client/Chemistry/Visualizers/SmokeVisualizerSystem.cs b/Content.Client/Chemistry/Visualizers/SmokeVisualizerSystem.cs new file mode 100644 index 0000000000..1cc57ca259 --- /dev/null +++ b/Content.Client/Chemistry/Visualizers/SmokeVisualizerSystem.cs @@ -0,0 +1,22 @@ +using Content.Shared.Smoking; +using Robust.Client.GameObjects; + +namespace Content.Client.Chemistry.Visualizers; + +/// +/// Ensures entities with have a color corresponding with their contained reagents. +/// +public sealed class SmokeVisualizerSystem : VisualizerSystem +{ + /// + /// Syncs the color of the smoke with the color of its contained reagents. + /// + protected override void OnAppearanceChange(EntityUid uid, SmokeVisualsComponent comp, ref AppearanceChangeEvent args) + { + if (args.Sprite == null) + return; + if(!AppearanceSystem.TryGetData(uid, SmokeVisuals.Color, out var color)) + return; + args.Sprite.Color = color; + } +} diff --git a/Content.Client/Chemistry/Visualizers/SmokeVisualsComponent.cs b/Content.Client/Chemistry/Visualizers/SmokeVisualsComponent.cs new file mode 100644 index 0000000000..f2718f41c9 --- /dev/null +++ b/Content.Client/Chemistry/Visualizers/SmokeVisualsComponent.cs @@ -0,0 +1,10 @@ +namespace Content.Client.Chemistry.Visualizers; + +/// +/// A component that changes color to match its contained reagents. +/// Managed by . +/// Only functions with smoke at the moment. +/// +[RegisterComponent] +[Access(typeof(SmokeVisualizerSystem))] +public sealed class SmokeVisualsComponent : Component {} diff --git a/Resources/Prototypes/Entities/Effects/chemistry_effects.yml b/Resources/Prototypes/Entities/Effects/chemistry_effects.yml index 2c4b9d9607..458e297d4a 100644 --- a/Resources/Prototypes/Entities/Effects/chemistry_effects.yml +++ b/Resources/Prototypes/Entities/Effects/chemistry_effects.yml @@ -8,8 +8,7 @@ sprite: Effects/chemsmoke.rsi state: chemsmoke - type: Appearance - visuals: - - type: SmokeVisualizer + - type: SmokeVisuals - type: Occluder - type: Transform anchored: true