using Content.Shared.CartridgeLoader; using Content.Shared.CartridgeLoader.Cartridges; using Content.Shared.GPS.Components; namespace Content.Server.CartridgeLoader.Cartridges; public sealed class AstroNavCartridgeSystem : EntitySystem { [Dependency] private readonly CartridgeLoaderSystem _cartridgeLoaderSystem = default!; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnCartridgeAdded); SubscribeLocalEvent(OnCartridgeRemoved); } private void OnCartridgeAdded(Entity ent, ref CartridgeAddedEvent args) { EnsureComp(args.Loader); } private void OnCartridgeRemoved(Entity ent, ref CartridgeRemovedEvent args) { // only remove when the program itself is removed if (!_cartridgeLoaderSystem.HasProgram(args.Loader)) { RemComp(args.Loader); } } }