1
0

PortableScrubberVisualsSystem.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. using Robust.Client.GameObjects;
  2. using Content.Shared.Atmos.Visuals;
  3. using Content.Client.Power;
  4. namespace Content.Client.Atmos.Visualizers
  5. {
  6. /// <summary>
  7. /// Controls client-side visuals for portable scrubbers.
  8. /// </summary>
  9. public sealed class PortableScrubberSystem : VisualizerSystem<PortableScrubberVisualsComponent>
  10. {
  11. protected override void OnAppearanceChange(EntityUid uid, PortableScrubberVisualsComponent component, ref AppearanceChangeEvent args)
  12. {
  13. if (args.Sprite == null)
  14. return;
  15. if (AppearanceSystem.TryGetData<bool>(uid, PortableScrubberVisuals.IsFull, out var isFull, args.Component)
  16. && AppearanceSystem.TryGetData<bool>(uid, PortableScrubberVisuals.IsRunning, out var isRunning, args.Component))
  17. {
  18. var runningState = isRunning ? component.RunningState : component.IdleState;
  19. args.Sprite.LayerSetState(PortableScrubberVisualLayers.IsRunning, runningState);
  20. var fullState = isFull ? component.FullState : component.ReadyState;
  21. args.Sprite.LayerSetState(PowerDeviceVisualLayers.Powered, fullState);
  22. }
  23. if (AppearanceSystem.TryGetData<bool>(uid, PortableScrubberVisuals.IsDraining, out var isDraining, args.Component))
  24. {
  25. args.Sprite.LayerSetVisible(PortableScrubberVisualLayers.IsDraining, isDraining);
  26. }
  27. }
  28. }
  29. }
  30. public enum PortableScrubberVisualLayers : byte
  31. {
  32. IsRunning,
  33. IsDraining
  34. }