mirror of
https://github.com/space-syndicate/space-station-14.git
synced 2026-10-09 18:31:17 +03:00
* prediction * fix * reviews * warnings * cleanup * grupdate * bruh --------- Co-authored-by: Princess Cheeseballs <66055347+Princess-Cheeseballs@users.noreply.github.com>
37 lines
1.4 KiB
C#
37 lines
1.4 KiB
C#
using System.Linq;
|
|
using Content.Shared.AlertLevel;
|
|
using Robust.Client.GameObjects;
|
|
using Robust.Shared.Prototypes;
|
|
|
|
namespace Content.Client.AlertLevel;
|
|
|
|
public sealed partial class AlertLevelDisplaySystem : EntitySystem
|
|
{
|
|
[Dependency] private SpriteSystem _sprite = default!;
|
|
[Dependency] private SharedAppearanceSystem _appearance = default!;
|
|
|
|
[SubscribeLocalEvent]
|
|
private void OnAppearanceChange(EntityUid uid, AlertLevelDisplayComponent alertLevelDisplay, ref AppearanceChangeEvent args)
|
|
{
|
|
if (args.Sprite == null)
|
|
{
|
|
return;
|
|
}
|
|
var layer = _sprite.LayerMapReserve((uid, args.Sprite), AlertLevelDisplay.Layer);
|
|
|
|
if (_appearance.TryGetData<bool>(uid, AlertLevelDisplay.Powered, out var powered, component: args.Component))
|
|
{
|
|
_sprite.LayerSetVisible((uid, args.Sprite), layer, powered);
|
|
}
|
|
|
|
if (!_appearance.TryGetData<ProtoId<AlertLevelPrototype>>(uid, AlertLevelDisplay.CurrentLevel, out var level, component: args.Component))
|
|
{
|
|
_sprite.LayerSetRsiState((uid, args.Sprite), layer, alertLevelDisplay.AlertVisuals.Values.First());
|
|
return;
|
|
}
|
|
|
|
_sprite.LayerSetRsiState((uid, args.Sprite),
|
|
layer,
|
|
alertLevelDisplay.AlertVisuals.GetValueOrDefault(level) ?? alertLevelDisplay.AlertVisuals.Values.First());
|
|
}
|
|
}
|