]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Resolves EmergencyLightVisualizer is Obsolete (#13887)
authorTemporalOroboros <TemporalOroboros@gmail.com>
Mon, 13 Feb 2023 01:45:51 +0000 (17:45 -0800)
committerGitHub <noreply@github.com>
Mon, 13 Feb 2023 01:45:51 +0000 (01:45 +0000)
* Split EmergencyLightVisualizer into Component/System pair

* Server ignore EmergencyLightVisualizer

* Update YAML

* Reviews

* small

---------

Co-authored-by: AJCM <AJCM@tutanota.com>
Content.Client/Light/Components/EmergencyLightComponent.cs
Content.Client/Light/EntitySystems/EmergencyLightSystem.cs [new file with mode: 0644]
Content.Client/Light/Visualizers/EmergencyLightVisualizer.cs [deleted file]
Resources/Prototypes/Entities/Structures/Lighting/base_lighting.yml

index c2c139e58c8e573f1de96f661d807de16220d954..47d28b8cde611f6dea88c69b960cbdf3a1128fcd 100644 (file)
@@ -2,11 +2,17 @@
 using Robust.Shared.GameObjects;
 using Robust.Shared.GameStates;
 
-namespace Content.Client.Light.Components
+namespace Content.Client.Light.Components;
+
+[RegisterComponent]
+[NetworkedComponent]
+public sealed class EmergencyLightComponent : SharedEmergencyLightComponent
+{
+}
+
+public enum EmergencyLightVisualLayers
 {
-    [RegisterComponent]
-    [NetworkedComponent]
-    public sealed class EmergencyLightComponent : SharedEmergencyLightComponent
-    {
-    }
+    Base,
+    LightOff,
+    LightOn,
 }
diff --git a/Content.Client/Light/EntitySystems/EmergencyLightSystem.cs b/Content.Client/Light/EntitySystems/EmergencyLightSystem.cs
new file mode 100644 (file)
index 0000000..71d6673
--- /dev/null
@@ -0,0 +1,26 @@
+using Content.Client.Light.Components;
+using Content.Shared.Light.Component;
+using Robust.Client.GameObjects;
+
+namespace Content.Client.Light.EntitySystems;
+
+public sealed class EmergencyLightSystem : VisualizerSystem<EmergencyLightComponent>
+{
+    protected override void OnAppearanceChange(EntityUid uid, EmergencyLightComponent comp, ref AppearanceChangeEvent args)
+    {
+        if (args.Sprite == null)
+            return;
+
+        if (!AppearanceSystem.TryGetData<bool>(uid, EmergencyLightVisuals.On, out var on, args.Component))
+            on = false;
+
+        args.Sprite.LayerSetVisible(EmergencyLightVisualLayers.LightOff, !on);
+        args.Sprite.LayerSetVisible(EmergencyLightVisualLayers.LightOn, on);
+
+        if (AppearanceSystem.TryGetData<Color>(uid, EmergencyLightVisuals.Color, out var color, args.Component))
+        {
+            args.Sprite.LayerSetColor(EmergencyLightVisualLayers.LightOn, color);
+            args.Sprite.LayerSetColor(EmergencyLightVisualLayers.LightOff, color);
+        }
+    }
+}
diff --git a/Content.Client/Light/Visualizers/EmergencyLightVisualizer.cs b/Content.Client/Light/Visualizers/EmergencyLightVisualizer.cs
deleted file mode 100644 (file)
index 03f8a87..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-using Content.Shared.Light.Component;
-using Robust.Client.GameObjects;
-using Robust.Shared.GameObjects;
-using Robust.Shared.IoC;
-using Robust.Shared.Serialization.Manager.Attributes;
-
-namespace Content.Client.Light.Visualizers
-{
-    [DataDefinition]
-    public sealed class EmergencyLightVisualizer : AppearanceVisualizer
-    {
-        [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(EmergencyLightVisuals.On, out bool on))
-                on = false;
-
-            sprite.LayerSetState(EmergencyLightVisualLayers.Light, on ? "emergency_light_on" : "emergency_light_off");
-            sprite.LayerSetShader(EmergencyLightVisualLayers.Light, on ? "unshaded" : "shaded");
-
-            if (component.TryGetData(EmergencyLightVisuals.Color, out Color color))
-            {
-                sprite.LayerSetColor(EmergencyLightVisualLayers.Light, color);
-            }
-        }
-    }
-}
-
-public enum EmergencyLightVisualLayers
-{
-    Base,
-    Light
-}
index e58a742c77d40ddca1cbddb90e8df7d587925f71..baa2d7362a65dea04d5e99062066c9766b9136bc 100644 (file)
     sprite: Structures/Wallmounts/Lighting/emergency_light.rsi
     layers:
     - state: base
-      map: ["enum.EmergencyLightVisualLayers.Base"]
+      map: [ "enum.EmergencyLightVisualLayers.Base" ]
     - state: emergency_light_off
-      map: ["enum.EmergencyLightVisualLayers.Light"]
+      map: [ "enum.EmergencyLightVisualLayers.LightOff" ]
       color: "#FF4020"
+    - state: emergency_light_on
+      map: [ "enum.EmergencyLightVisualLayers.LightOn" ]
+      color: "#FF4020"
+      shader: "unshaded"
+      visible: false
   - type: Appearance
-    visuals:
-    - type: EmergencyLightVisualizer
   - type: AmbientSound
     sound:
       path: /Audio/Ambience/Objects/alarm.ogg