37 lines
1.4 KiB
C#
37 lines
1.4 KiB
C#
using Content.Server.Botany.Components;
|
||
using Content.Shared.Botany.Components;
|
||
using Content.Shared.CartridgeLoader;
|
||
using Robust.Server.GameObjects;
|
||
|
||
namespace Content.Server.CartridgeLoader.Cartridges;
|
||
|
||
public sealed class PlantAnalyzerCartridgeSystem : EntitySystem
|
||
{
|
||
[Dependency] private readonly CartridgeLoaderSystem _cartridgeLoaderSystem = null!;
|
||
|
||
public override void Initialize()
|
||
{
|
||
base.Initialize();
|
||
SubscribeLocalEvent<PlantAnalyzerCartridgeComponent, CartridgeAddedEvent>(OnCartridgeAdded);
|
||
SubscribeLocalEvent<PlantAnalyzerCartridgeComponent, CartridgeRemovedEvent>(OnCartridgeRemoved);
|
||
}
|
||
|
||
private void OnCartridgeAdded(Entity<PlantAnalyzerCartridgeComponent> ent, ref CartridgeAddedEvent args)
|
||
{
|
||
var loader = args.Loader;
|
||
|
||
// ТОЛЬКО добавляем компонент анализатора
|
||
EnsureComp<PlantAnalyzerComponent>(loader);
|
||
}
|
||
|
||
private void OnCartridgeRemoved(Entity<PlantAnalyzerCartridgeComponent> ent, ref CartridgeRemovedEvent args)
|
||
{
|
||
var loader = args.Loader;
|
||
|
||
// Удаляем компонент только если больше нет картриджей с этим функционалом
|
||
if (!_cartridgeLoaderSystem.HasProgram<PlantAnalyzerCartridgeComponent>(loader))
|
||
{
|
||
RemComp<PlantAnalyzerComponent>(loader);
|
||
}
|
||
}
|
||
}
|