diff --git a/Content.Client/AlertLevel/AlertLevelDisplaySystem.cs b/Content.Client/AlertLevel/AlertLevelDisplaySystem.cs index cbeda8ff7c..fb093ff448 100644 --- a/Content.Client/AlertLevel/AlertLevelDisplaySystem.cs +++ b/Content.Client/AlertLevel/AlertLevelDisplaySystem.cs @@ -15,32 +15,32 @@ public sealed class AlertLevelDisplaySystem : EntitySystem SubscribeLocalEvent(OnAppearanceChange); } - private void OnAppearanceChange(EntityUid uid, AlertLevelDisplayComponent component, ref AppearanceChangeEvent args) + private void OnAppearanceChange(EntityUid uid, AlertLevelDisplayComponent alertLevelDisplay, ref AppearanceChangeEvent args) { if (args.Sprite == null) { return; } + var layer = args.Sprite.LayerMapReserveBlank(AlertLevelDisplay.Layer); - if (!args.Sprite.LayerMapTryGet(AlertLevelDisplay.Layer, out _)) + if (args.AppearanceData.TryGetValue(AlertLevelDisplay.Powered, out var poweredObject)) { - var layer = args.Sprite.AddLayer(new RSI.StateId(component.AlertVisuals.Values.First())); - args.Sprite.LayerMapSet(AlertLevelDisplay.Layer, layer); + args.Sprite.LayerSetVisible(layer, poweredObject is true); } if (!args.AppearanceData.TryGetValue(AlertLevelDisplay.CurrentLevel, out var level)) { - args.Sprite.LayerSetState(AlertLevelDisplay.Layer, new RSI.StateId(component.AlertVisuals.Values.First())); + args.Sprite.LayerSetState(layer, alertLevelDisplay.AlertVisuals.Values.First()); return; } - if (component.AlertVisuals.TryGetValue((string) level, out var visual)) + if (alertLevelDisplay.AlertVisuals.TryGetValue((string) level, out var visual)) { - args.Sprite.LayerSetState(AlertLevelDisplay.Layer, new RSI.StateId(visual)); + args.Sprite.LayerSetState(layer, visual); } else { - args.Sprite.LayerSetState(AlertLevelDisplay.Layer, new RSI.StateId(component.AlertVisuals.Values.First())); + args.Sprite.LayerSetState(layer, alertLevelDisplay.AlertVisuals.Values.First()); } } } diff --git a/Content.Server/AlertLevel/AlertLevelDisplaySystem.cs b/Content.Server/AlertLevel/AlertLevelDisplaySystem.cs index c6fdbf5817..043f69e420 100644 --- a/Content.Server/AlertLevel/AlertLevelDisplaySystem.cs +++ b/Content.Server/AlertLevel/AlertLevelDisplaySystem.cs @@ -1,3 +1,4 @@ +using Content.Server.Power.Components; using Content.Server.Station.Systems; using Content.Shared.AlertLevel; using Robust.Server.GameObjects; @@ -13,6 +14,7 @@ public sealed class AlertLevelDisplaySystem : EntitySystem { SubscribeLocalEvent(OnAlertChanged); SubscribeLocalEvent(OnDisplayInit); + SubscribeLocalEvent(OnPowerChanged); } private void OnAlertChanged(AlertLevelChangedEvent args) @@ -23,7 +25,7 @@ public sealed class AlertLevelDisplaySystem : EntitySystem } } - private void OnDisplayInit(EntityUid uid, AlertLevelDisplayComponent component, ComponentInit args) + private void OnDisplayInit(EntityUid uid, AlertLevelDisplayComponent alertLevelDisplay, ComponentInit args) { if (TryComp(uid, out AppearanceComponent? appearance)) { @@ -34,4 +36,11 @@ public sealed class AlertLevelDisplaySystem : EntitySystem } } } + private void OnPowerChanged(EntityUid uid, AlertLevelDisplayComponent alertLevelDisplay, ref PowerChangedEvent args) + { + if (!TryComp(uid, out AppearanceComponent? appearance)) + return; + + _appearance.SetData(uid, AlertLevelDisplay.Powered, args.Powered, appearance); + } } diff --git a/Content.Shared/AlertLevel/SharedAlertLevelDisplay.cs b/Content.Shared/AlertLevel/SharedAlertLevelDisplay.cs index 37634740f6..84d6c07eb0 100644 --- a/Content.Shared/AlertLevel/SharedAlertLevelDisplay.cs +++ b/Content.Shared/AlertLevel/SharedAlertLevelDisplay.cs @@ -6,5 +6,6 @@ namespace Content.Shared.AlertLevel; public enum AlertLevelDisplay { CurrentLevel, - Layer + Layer, + Powered }