AstroNavCartridgeSystem.cs 1.1 KB

1234567891011121314151617181920212223242526272829303132
  1. using Content.Shared.CartridgeLoader;
  2. using Content.Shared.CartridgeLoader.Cartridges;
  3. using Content.Shared.GPS.Components;
  4. namespace Content.Server.CartridgeLoader.Cartridges;
  5. public sealed class AstroNavCartridgeSystem : EntitySystem
  6. {
  7. [Dependency] private readonly CartridgeLoaderSystem _cartridgeLoaderSystem = default!;
  8. public override void Initialize()
  9. {
  10. base.Initialize();
  11. SubscribeLocalEvent<AstroNavCartridgeComponent, CartridgeAddedEvent>(OnCartridgeAdded);
  12. SubscribeLocalEvent<AstroNavCartridgeComponent, CartridgeRemovedEvent>(OnCartridgeRemoved);
  13. }
  14. private void OnCartridgeAdded(Entity<AstroNavCartridgeComponent> ent, ref CartridgeAddedEvent args)
  15. {
  16. EnsureComp<HandheldGPSComponent>(args.Loader);
  17. }
  18. private void OnCartridgeRemoved(Entity<AstroNavCartridgeComponent> ent, ref CartridgeRemovedEvent args)
  19. {
  20. // only remove when the program itself is removed
  21. if (!_cartridgeLoaderSystem.HasProgram<AstroNavCartridgeComponent>(args.Loader))
  22. {
  23. RemComp<HandheldGPSComponent>(args.Loader);
  24. }
  25. }
  26. }