From 0e6e338093102f4d5f100ec544ca017339339a4b Mon Sep 17 00:00:00 2001 From: TemporalOroboros Date: Sat, 22 Apr 2023 02:39:04 -0700 Subject: [PATCH] Resolves ParticleAcceleratorPartVisualizer is Obsolete (#13897) --- .../ParticleAcceleratorPartVisualizer.cs | 62 ------------------- ...ticleAcceleratorPartVisualizerComponent.cs | 23 +++++++ ...ParticleAcceleratorPartVisualizerSystem.cs | 29 +++++++++ .../Power/Generation/PA/control_box.yml | 5 +- .../Power/Generation/PA/emitter.yml | 16 ++--- .../Power/Generation/PA/fuel_chamber.yml | 5 +- .../Power/Generation/PA/power_box.yml | 5 +- 7 files changed, 64 insertions(+), 81 deletions(-) delete mode 100644 Content.Client/ParticleAccelerator/ParticleAcceleratorPartVisualizer.cs create mode 100644 Content.Client/ParticleAccelerator/ParticleAcceleratorPartVisualizerComponent.cs create mode 100644 Content.Client/ParticleAccelerator/ParticleAcceleratorPartVisualizerSystem.cs diff --git a/Content.Client/ParticleAccelerator/ParticleAcceleratorPartVisualizer.cs b/Content.Client/ParticleAccelerator/ParticleAcceleratorPartVisualizer.cs deleted file mode 100644 index e34f8e5550..0000000000 --- a/Content.Client/ParticleAccelerator/ParticleAcceleratorPartVisualizer.cs +++ /dev/null @@ -1,62 +0,0 @@ -using System.Linq; -using Content.Shared.Singularity.Components; -using JetBrains.Annotations; -using Robust.Client.GameObjects; - -namespace Content.Client.ParticleAccelerator -{ - [UsedImplicitly] - [DataDefinition] - public sealed class ParticleAcceleratorPartVisualizer : AppearanceVisualizer - { - [DataField("baseState", required: true)] - private string _baseState = default!; - - private static readonly Dictionary StatesSuffixes = new() - { - {ParticleAcceleratorVisualState.Powered, "p"}, - {ParticleAcceleratorVisualState.Level0, "p0"}, - {ParticleAcceleratorVisualState.Level1, "p1"}, - {ParticleAcceleratorVisualState.Level2, "p2"}, - {ParticleAcceleratorVisualState.Level3, "p3"}, - }; - - [Obsolete("Subscribe to your component being initialised instead.")] - public override void InitializeEntity(EntityUid entity) - { - base.InitializeEntity(entity); - if (!IoCManager.Resolve().TryGetComponent(entity, out var sprite)) - { - throw new EntityCreationException("No sprite component found in entity that has ParticleAcceleratorPartVisualizer"); - } - - if (!sprite.AllLayers.Any()) - { - throw new EntityCreationException("No Layer set for entity that has ParticleAcceleratorPartVisualizer"); - } - } - - [Obsolete("Subscribe to AppearanceChangeEvent instead.")] - public override void OnChangeData(AppearanceComponent component) - { - base.OnChangeData(component); - - var entities = IoCManager.Resolve(); - if (!entities.TryGetComponent(component.Owner, out SpriteComponent? sprite)) return; - if (!component.TryGetData(ParticleAcceleratorVisuals.VisualState, out ParticleAcceleratorVisualState state)) - { - state = ParticleAcceleratorVisualState.Unpowered; - } - - if (state != ParticleAcceleratorVisualState.Unpowered) - { - sprite.LayerSetVisible(ParticleAcceleratorVisualLayers.Unlit, true); - sprite.LayerSetState(ParticleAcceleratorVisualLayers.Unlit, _baseState + StatesSuffixes[state]); - } - else - { - sprite.LayerSetVisible(ParticleAcceleratorVisualLayers.Unlit, false); - } - } - } -} diff --git a/Content.Client/ParticleAccelerator/ParticleAcceleratorPartVisualizerComponent.cs b/Content.Client/ParticleAccelerator/ParticleAcceleratorPartVisualizerComponent.cs new file mode 100644 index 0000000000..78fa4cf8fb --- /dev/null +++ b/Content.Client/ParticleAccelerator/ParticleAcceleratorPartVisualizerComponent.cs @@ -0,0 +1,23 @@ +using Content.Shared.Singularity.Components; + +namespace Content.Client.ParticleAccelerator; + +[RegisterComponent] +[Access(typeof(ParticleAcceleratorPartVisualizerSystem))] +public sealed class ParticleAcceleratorPartVisualsComponent : Component +{ + [DataField("stateBase", required: true)] + [ViewVariables(VVAccess.ReadWrite)] + public string StateBase = default!; + + [DataField("stateSuffixes")] + [ViewVariables(VVAccess.ReadWrite)] + public readonly Dictionary StatesSuffixes = new() + { + {ParticleAcceleratorVisualState.Powered, "p"}, + {ParticleAcceleratorVisualState.Level0, "p0"}, + {ParticleAcceleratorVisualState.Level1, "p1"}, + {ParticleAcceleratorVisualState.Level2, "p2"}, + {ParticleAcceleratorVisualState.Level3, "p3"}, + }; +} diff --git a/Content.Client/ParticleAccelerator/ParticleAcceleratorPartVisualizerSystem.cs b/Content.Client/ParticleAccelerator/ParticleAcceleratorPartVisualizerSystem.cs new file mode 100644 index 0000000000..254dc87ffb --- /dev/null +++ b/Content.Client/ParticleAccelerator/ParticleAcceleratorPartVisualizerSystem.cs @@ -0,0 +1,29 @@ +using System.Linq; +using Content.Shared.Singularity.Components; +using Robust.Client.GameObjects; + +namespace Content.Client.ParticleAccelerator; + +public sealed class ParticleAcceleratorPartVisualizerSystem : VisualizerSystem +{ + protected override void OnAppearanceChange(EntityUid uid, ParticleAcceleratorPartVisualsComponent comp, ref AppearanceChangeEvent args) + { + if (args.Sprite == null) + return; + + if (!AppearanceSystem.TryGetData(uid, ParticleAcceleratorVisuals.VisualState, out var state, args.Component)) + { + state = ParticleAcceleratorVisualState.Unpowered; + } + + if (state != ParticleAcceleratorVisualState.Unpowered) + { + args.Sprite.LayerSetVisible(ParticleAcceleratorVisualLayers.Unlit, true); + args.Sprite.LayerSetState(ParticleAcceleratorVisualLayers.Unlit, comp.StateBase + comp.StatesSuffixes[state]); + } + else + { + args.Sprite.LayerSetVisible(ParticleAcceleratorVisualLayers.Unlit, false); + } + } +} diff --git a/Resources/Prototypes/Entities/Structures/Power/Generation/PA/control_box.yml b/Resources/Prototypes/Entities/Structures/Power/Generation/PA/control_box.yml index a4be4dcc9d..de0f223933 100644 --- a/Resources/Prototypes/Entities/Structures/Power/Generation/PA/control_box.yml +++ b/Resources/Prototypes/Entities/Structures/Power/Generation/PA/control_box.yml @@ -14,9 +14,8 @@ shader: unshaded visible: false - type: Appearance - visuals: - - type: ParticleAcceleratorPartVisualizer - baseState: unlit + - type: ParticleAcceleratorPartVisuals + stateBase: unlit - type: ApcPowerReceiver powerLoad: 250 - type: ExtensionCableReceiver diff --git a/Resources/Prototypes/Entities/Structures/Power/Generation/PA/emitter.yml b/Resources/Prototypes/Entities/Structures/Power/Generation/PA/emitter.yml index 56454ea874..df862ec265 100644 --- a/Resources/Prototypes/Entities/Structures/Power/Generation/PA/emitter.yml +++ b/Resources/Prototypes/Entities/Structures/Power/Generation/PA/emitter.yml @@ -14,9 +14,8 @@ shader: unshaded visible: false - type: Appearance - visuals: - - type: ParticleAcceleratorPartVisualizer - baseState: unlit + - type: ParticleAcceleratorPartVisuals + stateBase: unlit - type: ParticleAcceleratorPart - type: ParticleAcceleratorEmitter emitterType: Left @@ -43,13 +42,11 @@ shader: unshaded visible: false - type: Appearance - visuals: - - type: ParticleAcceleratorPartVisualizer - baseState: unlit + - type: ParticleAcceleratorPartVisuals + stateBase: unlit - type: ParticleAcceleratorPart - type: ParticleAcceleratorEmitter emitterType: Center - - type: Construction graph: ParticleAcceleratorEmitterCenter node: completed - type: GuideHelp @@ -71,9 +68,8 @@ shader: unshaded visible: false - type: Appearance - visuals: - - type: ParticleAcceleratorPartVisualizer - baseState: unlit + - type: ParticleAcceleratorPartVisuals + stateBase: unlit - type: ParticleAcceleratorPart - type: ParticleAcceleratorEmitter emitterType: Right diff --git a/Resources/Prototypes/Entities/Structures/Power/Generation/PA/fuel_chamber.yml b/Resources/Prototypes/Entities/Structures/Power/Generation/PA/fuel_chamber.yml index 9f5a0c617b..acd3551a7d 100644 --- a/Resources/Prototypes/Entities/Structures/Power/Generation/PA/fuel_chamber.yml +++ b/Resources/Prototypes/Entities/Structures/Power/Generation/PA/fuel_chamber.yml @@ -14,9 +14,8 @@ shader: unshaded visible: false - type: Appearance - visuals: - - type: ParticleAcceleratorPartVisualizer - baseState: unlit + - type: ParticleAcceleratorPartVisuals + stateBase: unlit - type: ParticleAcceleratorPart - type: ParticleAcceleratorFuelChamber - type: Construction diff --git a/Resources/Prototypes/Entities/Structures/Power/Generation/PA/power_box.yml b/Resources/Prototypes/Entities/Structures/Power/Generation/PA/power_box.yml index ff0a482fd3..669fbdf664 100644 --- a/Resources/Prototypes/Entities/Structures/Power/Generation/PA/power_box.yml +++ b/Resources/Prototypes/Entities/Structures/Power/Generation/PA/power_box.yml @@ -14,9 +14,8 @@ shader: unshaded visible: false - type: Appearance - visuals: - - type: ParticleAcceleratorPartVisualizer - baseState: unlit + - type: ParticleAcceleratorPartVisuals + stateBase: unlit - type: ParticleAcceleratorPart - type: ParticleAcceleratorPowerBox - type: PowerConsumer -- 2.51.2