AtmosPipeColorSystem.cs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. using Content.Server.Atmos.Piping.Components;
  2. using Content.Shared.Atmos.Piping;
  3. using Robust.Server.GameObjects;
  4. namespace Content.Server.Atmos.Piping.EntitySystems
  5. {
  6. public sealed class AtmosPipeColorSystem : EntitySystem
  7. {
  8. [Dependency] private readonly SharedAppearanceSystem _appearance = default!;
  9. public override void Initialize()
  10. {
  11. base.Initialize();
  12. SubscribeLocalEvent<AtmosPipeColorComponent, ComponentStartup>(OnStartup);
  13. SubscribeLocalEvent<AtmosPipeColorComponent, ComponentShutdown>(OnShutdown);
  14. }
  15. private void OnStartup(EntityUid uid, AtmosPipeColorComponent component, ComponentStartup args)
  16. {
  17. if (!EntityManager.TryGetComponent(uid, out AppearanceComponent? appearance))
  18. return;
  19. _appearance.SetData(uid, PipeColorVisuals.Color, component.Color, appearance);
  20. }
  21. private void OnShutdown(EntityUid uid, AtmosPipeColorComponent component, ComponentShutdown args)
  22. {
  23. if (!EntityManager.TryGetComponent(uid, out AppearanceComponent? appearance))
  24. return;
  25. _appearance.SetData(uid, PipeColorVisuals.Color, Color.White, appearance);
  26. }
  27. public void SetColor(EntityUid uid, AtmosPipeColorComponent component, Color color)
  28. {
  29. component.Color = color;
  30. if (!EntityManager.TryGetComponent(uid, out AppearanceComponent? appearance))
  31. return;
  32. _appearance.SetData(uid, PipeColorVisuals.Color, color, appearance);
  33. var ev = new AtmosPipeColorChangedEvent(color);
  34. RaiseLocalEvent(uid, ref ev);
  35. }
  36. }
  37. }