]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Resolves ParticleAcceleratorPartVisualizer is Obsolete (#13897)
authorTemporalOroboros <TemporalOroboros@gmail.com>
Sat, 22 Apr 2023 09:39:04 +0000 (02:39 -0700)
committerGitHub <noreply@github.com>
Sat, 22 Apr 2023 09:39:04 +0000 (19:39 +1000)
Content.Client/ParticleAccelerator/ParticleAcceleratorPartVisualizer.cs [deleted file]
Content.Client/ParticleAccelerator/ParticleAcceleratorPartVisualizerComponent.cs [new file with mode: 0644]
Content.Client/ParticleAccelerator/ParticleAcceleratorPartVisualizerSystem.cs [new file with mode: 0644]
Resources/Prototypes/Entities/Structures/Power/Generation/PA/control_box.yml
Resources/Prototypes/Entities/Structures/Power/Generation/PA/emitter.yml
Resources/Prototypes/Entities/Structures/Power/Generation/PA/fuel_chamber.yml
Resources/Prototypes/Entities/Structures/Power/Generation/PA/power_box.yml

diff --git a/Content.Client/ParticleAccelerator/ParticleAcceleratorPartVisualizer.cs b/Content.Client/ParticleAccelerator/ParticleAcceleratorPartVisualizer.cs
deleted file mode 100644 (file)
index e34f8e5..0000000
+++ /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<ParticleAcceleratorVisualState, string> 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<IEntityManager>().TryGetComponent<SpriteComponent?>(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<IEntityManager>();
-            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 (file)
index 0000000..78fa4cf
--- /dev/null
@@ -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<ParticleAcceleratorVisualState, string> 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 (file)
index 0000000..254dc87
--- /dev/null
@@ -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<ParticleAcceleratorPartVisualsComponent>
+{
+    protected override void OnAppearanceChange(EntityUid uid, ParticleAcceleratorPartVisualsComponent comp, ref AppearanceChangeEvent args)
+    {
+        if (args.Sprite == null)
+            return;
+        
+        if (!AppearanceSystem.TryGetData<ParticleAcceleratorVisualState>(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);
+        }
+    }
+}
index a4be4dcc9dde8ea2f020c0fdcd84a3d3b64ed554..de0f223933260aecc70639271e01c5383c86df26 100644 (file)
@@ -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
index 56454ea874dadc0156283103e93b93512c4f03b5..df862ec2659e703ff74bd5f3a8c29f32899b73cc 100644 (file)
@@ -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
           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
index 9f5a0c617ba8ba2c4917e56468a4123679bd07f5..acd3551a7dbccbab0ac35c41ce439a3f3c485a17 100644 (file)
@@ -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
index ff0a482fd3c63b35f9d19bb8557bd816654314eb..669fbdf66492708fce96a5ac158940453b861acd 100644 (file)
@@ -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