]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Fix firelock lights for hot / pressurized rooms (#15892)
authorTom Leys <tom@crump-leys.com>
Sat, 6 May 2023 05:54:36 +0000 (17:54 +1200)
committerGitHub <noreply@github.com>
Sat, 6 May 2023 05:54:36 +0000 (15:54 +1000)
Content.Client/Doors/FirelockSystem.cs [new file with mode: 0644]
Content.IntegrationTests/Tests/Doors/AirlockTest.cs
Content.Server/Atmos/EntitySystems/AtmosphereSystem.Monstermos.cs
Content.Server/Construction/Conditions/AirlockBolted.cs
Content.Server/Doors/Systems/FirelockSystem.cs
Content.Server/Doors/WireActions/DoorSafetyWireAction.cs
Content.Server/Doors/WireActions/DoorTimingWireAction.cs
Content.Server/Remotes/DoorRemoteSystem.cs
Content.Shared/Doors/Components/FirelockComponent.cs [moved from Content.Server/Doors/Components/FirelockComponent.cs with 95% similarity]

diff --git a/Content.Client/Doors/FirelockSystem.cs b/Content.Client/Doors/FirelockSystem.cs
new file mode 100644 (file)
index 0000000..a06f3b8
--- /dev/null
@@ -0,0 +1,27 @@
+using Content.Shared.Doors.Components;
+using Robust.Client.GameObjects;
+
+namespace Content.Client.Doors;
+
+public sealed class FirelockSystem : EntitySystem
+{
+    [Dependency] protected readonly SharedAppearanceSystem AppearanceSystem = default!;
+
+    public override void Initialize()
+    {
+        base.Initialize();
+        SubscribeLocalEvent<FirelockComponent, AppearanceChangeEvent>(OnAppearanceChange);
+    }
+
+    private void OnAppearanceChange(EntityUid uid, FirelockComponent comp, ref AppearanceChangeEvent args)
+    {
+        if (args.Sprite == null)
+            return;
+
+        // Apply the closed lights bool to the sprite
+        bool unlitVisible =
+            (AppearanceSystem.TryGetData<bool>(uid, DoorVisuals.ClosedLights, out var closedLights, args.Component) &&
+             closedLights);
+        args.Sprite.LayerSetVisible(DoorVisualLayers.BaseUnlit, unlitVisible);
+    }
+}
index dd74105ca30842ffb357c2711bbb9940071ec90c..02c031af1fdcc35482e5248c963622cbe5b4b61e 100644 (file)
@@ -1,6 +1,5 @@
 using System;
 using System.Threading.Tasks;
-using Content.Server.Doors.Components;
 using Content.Server.Doors.Systems;
 using Content.Shared.Doors.Components;
 using NUnit.Framework;
index ae614574f50bfce0b1a07cb2ae5a9472bce5c616..9877e7add97d3ad33f0f342df3c66a0ace5e930d 100644 (file)
@@ -1,6 +1,6 @@
 using Content.Server.Atmos.Components;
-using Content.Server.Doors.Components;
 using Content.Server.Doors.Systems;
+using Content.Shared.Doors.Components;
 using Content.Shared.Atmos;
 using Content.Shared.Atmos.Components;
 using Content.Shared.Database;
index 8ba908fef3fb3a970f579f46c0a543fb1761d4d2..06a60118b93fad616880e1da0194346ea9787237 100644 (file)
@@ -1,6 +1,5 @@
 using Content.Shared.Construction;
 using JetBrains.Annotations;
-using Content.Server.Doors.Components;
 using Content.Shared.Doors.Components;
 using Content.Shared.Examine;
 
index c23745423fdc5c6ea98ac34343db6828ae585802..df89680b699fe5ec3f2b222720ff1844f9b0bc2f 100644 (file)
@@ -1,7 +1,6 @@
 using Content.Server.Atmos.Components;
 using Content.Server.Atmos.EntitySystems;
 using Content.Server.Atmos.Monitor.Systems;
-using Content.Server.Doors.Components;
 using Content.Server.Popups;
 using Content.Server.Power.Components;
 using Content.Server.Power.EntitySystems;
@@ -161,13 +160,13 @@ namespace Content.Server.Doors.Systems
         {
             var ev = new BeforeDoorAutoCloseEvent();
             RaiseLocalEvent(uid, ev);
+            UpdateVisuals(uid, component, args);
             if (ev.Cancelled)
             {
                 return;
             }
 
             _doorSystem.SetNextStateChange(uid, component.AutocloseDelay);
-            UpdateVisuals(uid, component, args);
         }
 
         private void OnBeforeDoorAutoclose(EntityUid uid, FirelockComponent component, BeforeDoorAutoCloseEvent args)
index 8d02d923fe8839c9f8137709d64b1c1f3bb7b189..939d617de5e782092647aa5b443313470cebaecd 100644 (file)
@@ -1,4 +1,3 @@
-using Content.Server.Doors.Components;
 using Content.Server.Wires;
 using Content.Shared.Doors;
 using Content.Shared.Doors.Components;
@@ -11,7 +10,7 @@ public sealed class DoorSafetyWireAction : ComponentWireAction<AirlockComponent>
 {
     public override Color Color { get; set; } = Color.Red;
     public override string Name { get; set; } = "wire-name-door-safety";
-    
+
 
     [DataField("timeout")]
     private int _timeout = 30;
index 1539575590b2e0f4fcca6f44bbda424ad6faba92..1f576342f0012039da8fcc854be4f96c44299ddd 100644 (file)
@@ -1,4 +1,3 @@
-using Content.Server.Doors.Components;
 using Content.Server.Wires;
 using Content.Shared.Doors;
 using Content.Shared.Doors.Components;
@@ -11,7 +10,7 @@ public sealed class DoorTimingWireAction : ComponentWireAction<AirlockComponent>
 {
     public override Color Color { get; set; } = Color.Orange;
     public override string Name { get; set; } = "wire-name-door-timer";
-    
+
     [DataField("timeout")]
     private int _timeout = 30;
 
index 2f93ad08d21b22123ccfa9746375cc7a210a251d..bbc84eec6e973e6935a3372fac4c0b33ea3f3058 100644 (file)
@@ -7,7 +7,6 @@ using Content.Shared.Doors.Systems;
 using Content.Shared.Physics;
 using Content.Shared.Access.Components;
 using Content.Server.Doors.Systems;
-using Content.Server.Doors.Components;
 using Content.Server.Power.EntitySystems;
 using Content.Shared.Database;
 using Content.Shared.Interaction.Events;
similarity index 95%
rename from Content.Server/Doors/Components/FirelockComponent.cs
rename to Content.Shared/Doors/Components/FirelockComponent.cs
index 249a41302385b2bc1b163fea923c2b68398ce25e..ceef5964a31ee185f5d38bdaeffa897b716e3e4b 100644 (file)
@@ -1,7 +1,6 @@
-using Content.Server.Atmos.Monitor.Components;
 using Content.Shared.Doors.Components;
 
-namespace Content.Server.Doors.Components
+namespace Content.Shared.Doors.Components
 {
     /// <summary>
     /// Companion component to <see cref="DoorComponent"/> that handles firelock-specific behavior, including