--- /dev/null
+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);
+ }
+}
using System;
using System.Threading.Tasks;
-using Content.Server.Doors.Components;
using Content.Server.Doors.Systems;
using Content.Shared.Doors.Components;
using NUnit.Framework;
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;
using Content.Shared.Construction;
using JetBrains.Annotations;
-using Content.Server.Doors.Components;
using Content.Shared.Doors.Components;
using Content.Shared.Examine;
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;
{
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)
-using Content.Server.Doors.Components;
using Content.Server.Wires;
using Content.Shared.Doors;
using Content.Shared.Doors.Components;
{
public override Color Color { get; set; } = Color.Red;
public override string Name { get; set; } = "wire-name-door-safety";
-
+
[DataField("timeout")]
private int _timeout = 30;
-using Content.Server.Doors.Components;
using Content.Server.Wires;
using Content.Shared.Doors;
using Content.Shared.Doors.Components;
{
public override Color Color { get; set; } = Color.Orange;
public override string Name { get; set; } = "wire-name-door-timer";
-
+
[DataField("timeout")]
private int _timeout = 30;
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;
-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