private const string AnimationKey = "disposal_unit_animation";
+ private const string DefaultFlushState = "disposal-flush";
+ private const string DefaultChargeState = "disposal-charging";
+
public override void Initialize()
{
base.Initialize();
sprite.LayerSetVisible(DisposalUnitVisualLayers.Base, state == VisualState.Anchored);
sprite.LayerSetVisible(DisposalUnitVisualLayers.BaseFlush, state is VisualState.Flushing or VisualState.Charging);
+ var chargingState = sprite.LayerMapTryGet(DisposalUnitVisualLayers.BaseCharging, out var chargingLayer)
+ ? sprite.LayerGetState(chargingLayer)
+ : new RSI.StateId(DefaultChargeState);
+
// This is a transient state so not too worried about replaying in range.
if (state == VisualState.Flushing)
{
if (!_animationSystem.HasRunningAnimation(uid, AnimationKey))
{
- var flushState = new RSI.StateId("disposal-flush");
+ var flushState = sprite.LayerMapTryGet(DisposalUnitVisualLayers.BaseFlush, out var flushLayer)
+ ? sprite.LayerGetState(flushLayer)
+ : new RSI.StateId(DefaultFlushState);
// Setup the flush animation to play
var anim = new Animation
// Return to base state (though, depending on how the unit is
// configured we might get an appearance change event telling
// us to go to charging state)
- new AnimationTrackSpriteFlick.KeyFrame("disposal-charging", (float) unit.FlushDelay.TotalSeconds)
+ new AnimationTrackSpriteFlick.KeyFrame(chargingState, (float) unit.FlushDelay.TotalSeconds)
}
},
}
}
else if (state == VisualState.Charging)
{
- sprite.LayerSetState(DisposalUnitVisualLayers.BaseFlush, new RSI.StateId("disposal-charging"));
+ sprite.LayerSetState(DisposalUnitVisualLayers.BaseFlush, chargingState);
}
else
{