using Content.Shared.APC;
-using JetBrains.Annotations;
using Robust.Client.GameObjects;
namespace Content.Client.Power.APC;
public sealed class ApcVisualizerSystem : VisualizerSystem<ApcVisualsComponent>
{
[Dependency] private readonly SharedPointLightSystem _lights = default!;
+ [Dependency] private readonly SpriteSystem _sprite = default!;
protected override void OnAppearanceChange(EntityUid uid, ApcVisualsComponent comp, ref AppearanceChangeEvent args)
{
return;
// get the mapped layer index of the first lock layer and the first channel layer
- var lockIndicatorOverlayStart = args.Sprite.LayerMapGet(ApcVisualLayers.InterfaceLock);
- var channelIndicatorOverlayStart = args.Sprite.LayerMapGet(ApcVisualLayers.Equipment);
+ var lockIndicatorOverlayStart = _sprite.LayerMapGet((uid, args.Sprite), ApcVisualLayers.InterfaceLock);
+ var channelIndicatorOverlayStart = _sprite.LayerMapGet((uid, args.Sprite), ApcVisualLayers.Equipment);
// Handle APC screen overlay:
- if(!AppearanceSystem.TryGetData<ApcChargeState>(uid, ApcVisuals.ChargeState, out var chargeState, args.Component))
+ if (!AppearanceSystem.TryGetData<ApcChargeState>(uid, ApcVisuals.ChargeState, out var chargeState, args.Component))
chargeState = ApcChargeState.Lack;
if (chargeState >= 0 && chargeState < ApcChargeState.NumStates)
{
- args.Sprite.LayerSetState(ApcVisualLayers.ChargeState, $"{comp.ScreenPrefix}-{comp.ScreenSuffixes[(sbyte)chargeState]}");
+ _sprite.LayerSetRsiState((uid, args.Sprite), ApcVisualLayers.ChargeState, $"{comp.ScreenPrefix}-{comp.ScreenSuffixes[(sbyte)chargeState]}");
// LockState does nothing currently. The backend doesn't exist.
if (AppearanceSystem.TryGetData<byte>(uid, ApcVisuals.LockState, out var lockStates, args.Component))
{
- for(var i = 0; i < comp.LockIndicators; ++i)
+ for (var i = 0; i < comp.LockIndicators; ++i)
{
- var layer = ((byte)lockIndicatorOverlayStart + i);
- sbyte lockState = (sbyte)((lockStates >> (i << (sbyte)ApcLockState.LogWidth)) & (sbyte)ApcLockState.All);
- args.Sprite.LayerSetState(layer, $"{comp.LockPrefix}{i}-{comp.LockSuffixes[lockState]}");
- args.Sprite.LayerSetVisible(layer, true);
+ var layer = (byte)lockIndicatorOverlayStart + i;
+ var lockState = (sbyte)((lockStates >> (i << (sbyte)ApcLockState.LogWidth)) & (sbyte)ApcLockState.All);
+ _sprite.LayerSetRsiState((uid, args.Sprite), layer, $"{comp.LockPrefix}{i}-{comp.LockSuffixes[lockState]}");
+ _sprite.LayerSetVisible((uid, args.Sprite), layer, true);
}
}
// ChannelState does nothing currently. The backend doesn't exist.
if (AppearanceSystem.TryGetData<byte>(uid, ApcVisuals.ChannelState, out var channelStates, args.Component))
{
- for(var i = 0; i < comp.ChannelIndicators; ++i)
+ for (var i = 0; i < comp.ChannelIndicators; ++i)
{
- var layer = ((byte)channelIndicatorOverlayStart + i);
- sbyte channelState = (sbyte)((channelStates >> (i << (sbyte)ApcChannelState.LogWidth)) & (sbyte)ApcChannelState.All);
- args.Sprite.LayerSetState(layer, $"{comp.ChannelPrefix}{i}-{comp.ChannelSuffixes[channelState]}");
- args.Sprite.LayerSetVisible(layer, true);
+ var layer = (byte)channelIndicatorOverlayStart + i;
+ var channelState = (sbyte)((channelStates >> (i << (sbyte)ApcChannelState.LogWidth)) & (sbyte)ApcChannelState.All);
+ _sprite.LayerSetRsiState((uid, args.Sprite), layer, $"{comp.ChannelPrefix}{i}-{comp.ChannelSuffixes[channelState]}");
+ _sprite.LayerSetVisible((uid, args.Sprite), layer, true);
}
}
else
{
/// Overrides all of the lock and channel indicators.
- args.Sprite.LayerSetState(ApcVisualLayers.ChargeState, comp.EmaggedScreenState);
- for(var i = 0; i < comp.LockIndicators; ++i)
+ _sprite.LayerSetRsiState((uid, args.Sprite), ApcVisualLayers.ChargeState, comp.EmaggedScreenState);
+ for (var i = 0; i < comp.LockIndicators; ++i)
{
- var layer = ((byte)lockIndicatorOverlayStart + i);
- args.Sprite.LayerSetVisible(layer, false);
+ var layer = (byte)lockIndicatorOverlayStart + i;
+ _sprite.LayerSetVisible((uid, args.Sprite), layer, false);
}
- for(var i = 0; i < comp.ChannelIndicators; ++i)
+ for (var i = 0; i < comp.ChannelIndicators; ++i)
{
- var layer = ((byte)channelIndicatorOverlayStart + i);
- args.Sprite.LayerSetVisible(layer, false);
+ var layer = (byte)channelIndicatorOverlayStart + i;
+ _sprite.LayerSetVisible((uid, args.Sprite), layer, false);
}
if (TryComp<PointLightComponent>(uid, out var light))
}
}
-enum ApcVisualLayers : byte
+public enum ApcVisualLayers : byte
{
/// <summary>
/// The sprite layer used for the interface lock indicator light overlay.