Disable unlit layers on unpowered airlocks.

Fixes #389
This commit is contained in:
Pieter-Jan Briers
2019-10-13 16:39:21 +02:00
parent 8896f46ef3
commit be9dc90738
3 changed files with 23 additions and 5 deletions

View File

@@ -90,22 +90,20 @@ namespace Content.Client.GameObjects.Components.Doors
state = DoorVisualState.Closed;
}
var unlitVisible = true;
switch (state)
{
case DoorVisualState.Closed:
sprite.LayerSetState(DoorVisualLayers.Base, "closed");
sprite.LayerSetState(DoorVisualLayers.BaseUnlit, "closed_unlit");
sprite.LayerSetVisible(DoorVisualLayers.BaseUnlit, true);
break;
case DoorVisualState.Closing:
sprite.LayerSetVisible(DoorVisualLayers.BaseUnlit, true);
if (!animPlayer.HasRunningAnimation(AnimationKey))
{
animPlayer.Play(CloseAnimation, AnimationKey);
}
break;
case DoorVisualState.Opening:
sprite.LayerSetVisible(DoorVisualLayers.BaseUnlit, true);
if (!animPlayer.HasRunningAnimation(AnimationKey))
{
animPlayer.Play(OpenAnimation, AnimationKey);
@@ -114,10 +112,10 @@ namespace Content.Client.GameObjects.Components.Doors
break;
case DoorVisualState.Open:
sprite.LayerSetState(DoorVisualLayers.Base, "open");
sprite.LayerSetVisible(DoorVisualLayers.BaseUnlit, false);
unlitVisible = false;
break;
case DoorVisualState.Deny:
sprite.LayerSetVisible(DoorVisualLayers.BaseUnlit, false);
unlitVisible = false;
if (!animPlayer.HasRunningAnimation(AnimationKey))
{
animPlayer.Play(DenyAnimation, AnimationKey);
@@ -126,6 +124,13 @@ namespace Content.Client.GameObjects.Components.Doors
default:
throw new ArgumentOutOfRangeException();
}
if (component.TryGetData(DoorVisuals.Powered, out bool powered) && !powered)
{
unlitVisible = false;
}
sprite.LayerSetVisible(DoorVisualLayers.BaseUnlit, unlitVisible);
}
}