public override void OnChangeData(AppearanceComponent component) { base.OnChangeData(component); var sprite = component.Owner.GetComponent <ISpriteComponent>(); _soundComponent ??= component.Owner.GetComponent <SoundComponent>(); if (!component.TryGetData(PowerDeviceVisuals.VisualState, out MicrowaveVisualState state)) { state = MicrowaveVisualState.Idle; } switch (state) { case MicrowaveVisualState.Idle: sprite.LayerSetState(MicrowaveVisualizerLayers.Base, "mw"); sprite.LayerSetState(MicrowaveVisualizerLayers.BaseUnlit, "mw_unlit"); _soundComponent.StopAllSounds(); break; case MicrowaveVisualState.Cooking: sprite.LayerSetState(MicrowaveVisualizerLayers.Base, "mw"); sprite.LayerSetState(MicrowaveVisualizerLayers.BaseUnlit, "mw_running_unlit"); var audioParams = AudioParams.Default; audioParams.Loop = true; var schedSound = new ScheduledSound(); schedSound.Filename = MicrowaveSoundLoop; schedSound.AudioParams = audioParams; _soundComponent.AddScheduledSound(schedSound); break; default: Logger.Debug($"Something terrible happened in {this}"); break; } var glowingPartsVisible = !(component.TryGetData(PowerDeviceVisuals.Powered, out bool powered) && !powered); sprite.LayerSetVisible(MicrowaveVisualizerLayers.BaseUnlit, glowingPartsVisible); }