PowerChargerVisualizerSystem.cs 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. using Content.Shared.Power;
  2. using Robust.Client.GameObjects;
  3. namespace Content.Client.PowerCell;
  4. public sealed class PowerChargerVisualizerSystem : VisualizerSystem<PowerChargerVisualsComponent>
  5. {
  6. protected override void OnAppearanceChange(EntityUid uid, PowerChargerVisualsComponent comp, ref AppearanceChangeEvent args)
  7. {
  8. if (args.Sprite == null)
  9. return;
  10. // Update base item
  11. if (AppearanceSystem.TryGetData<bool>(uid, CellVisual.Occupied, out var occupied, args.Component) && occupied)
  12. {
  13. // TODO: don't throw if it doesn't have a full state
  14. args.Sprite.LayerSetState(PowerChargerVisualLayers.Base, comp.OccupiedState);
  15. }
  16. else
  17. {
  18. args.Sprite.LayerSetState(PowerChargerVisualLayers.Base, comp.EmptyState);
  19. }
  20. // Update lighting
  21. if (AppearanceSystem.TryGetData<CellChargerStatus>(uid, CellVisual.Light, out var status, args.Component)
  22. && comp.LightStates.TryGetValue(status, out var lightState))
  23. {
  24. args.Sprite.LayerSetState(PowerChargerVisualLayers.Light, lightState);
  25. args.Sprite.LayerSetVisible(PowerChargerVisualLayers.Light, true);
  26. }
  27. else
  28. //
  29. args.Sprite.LayerSetVisible(PowerChargerVisualLayers.Light, false);
  30. }
  31. }
  32. enum PowerChargerVisualLayers : byte
  33. {
  34. Base,
  35. Light,
  36. }