if (args.Sprite == null)
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);
+
// Handle APC screen overlay:
if(!AppearanceSystem.TryGetData<ApcChargeState>(uid, ApcVisuals.ChargeState, out var chargeState, args.Component))
chargeState = ApcChargeState.Lack;
{
for(var i = 0; i < comp.LockIndicators; ++i)
{
- var layer = ((byte)ApcVisualLayers.LockIndicatorOverlayStart + 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);
{
for(var i = 0; i < comp.ChannelIndicators; ++i)
{
- var layer = ((byte)ApcVisualLayers.ChannelIndicatorOverlayStart + 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);
args.Sprite.LayerSetState(ApcVisualLayers.ChargeState, comp.EmaggedScreenState);
for(var i = 0; i < comp.LockIndicators; ++i)
{
- var layer = ((byte)ApcVisualLayers.LockIndicatorOverlayStart + i);
+ var layer = ((byte)lockIndicatorOverlayStart + i);
args.Sprite.LayerSetVisible(layer, false);
}
for(var i = 0; i < comp.ChannelIndicators; ++i)
{
- var layer = ((byte)ApcVisualLayers.ChannelIndicatorOverlayStart + i);
+ var layer = ((byte)channelIndicatorOverlayStart + i);
args.Sprite.LayerSetVisible(layer, false);
}
/// <summary>
/// The sprite layer used for the interface lock indicator light overlay.
/// </summary>
- InterfaceLock = 0,
+ InterfaceLock,
/// <summary>
/// The sprite layer used for the panel lock indicator light overlay.
/// </summary>
- PanelLock = 1,
- /// <summary>
- /// The first of the lock indicator light layers.
- /// </summary>
- LockIndicatorOverlayStart = InterfaceLock,
+ PanelLock,
/// <summary>
/// The sprite layer used for the equipment channel indicator light overlay.
/// </summary>
- Equipment = 2,
+ Equipment,
/// <summary>
/// The sprite layer used for the lighting channel indicator light overlay.
/// </summary>
- Lighting = 3,
+ Lighting,
/// <summary>
/// The sprite layer used for the environment channel indicator light overlay.
/// </summary>
- Environment = 4,
- /// <summary>
- /// The first of the channel status indicator light layers.
- /// </summary>
- ChannelIndicatorOverlayStart = Equipment,
+ Environment,
/// <summary>
/// The sprite layer used for the APC screen overlay.
/// </summary>
- ChargeState = 5,
+ ChargeState,
}