SubscribeLocalEvent<AlertLevelDisplayComponent, AppearanceChangeEvent>(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());
}
}
}
+using Content.Server.Power.Components;
using Content.Server.Station.Systems;
using Content.Shared.AlertLevel;
using Robust.Server.GameObjects;
{
SubscribeLocalEvent<AlertLevelChangedEvent>(OnAlertChanged);
SubscribeLocalEvent<AlertLevelDisplayComponent, ComponentInit>(OnDisplayInit);
+ SubscribeLocalEvent<AlertLevelDisplayComponent, PowerChangedEvent>(OnPowerChanged);
}
private void OnAlertChanged(AlertLevelChangedEvent args)
}
}
- private void OnDisplayInit(EntityUid uid, AlertLevelDisplayComponent component, ComponentInit args)
+ private void OnDisplayInit(EntityUid uid, AlertLevelDisplayComponent alertLevelDisplay, ComponentInit args)
{
if (TryComp(uid, out AppearanceComponent? appearance))
{
}
}
}
+ 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);
+ }
}