6
StarHorizon_Public/Content.Server/_Horizon/Cytology/CytologyGrowingVatSystem.cs
2026-01-24 12:49:55 +03:00

52 lines
1.7 KiB
C#

using Content.Shared._Horizon.Cytology.Systems;
using Content.Shared.Verbs;
using Content.Shared._Horizon.Cytology.Components;
using Content.Shared._Horizon.Cytology;
using Content.Server.Fluids.EntitySystems;
namespace Content.Server._Horizon.Cytology;
public sealed class CytologyGrowingVatSystem : SharedCytologyGrowingVatSystem
{
[Dependency] private readonly SmokeSystem _smokeSystem = default!;
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<CytologyGrowingVatComponent, GetVerbsEvent<InteractionVerb>>(OnGetVerb);
}
private void OnGetVerb(Entity<CytologyGrowingVatComponent> growingVat, ref GetVerbsEvent<InteractionVerb> args)
{
if (!args.CanAccess || !args.CanInteract || !args.CanComplexInteract || args.Hands == null)
return;
InteractionVerb verb = new()
{
Act = growingVat.Comp.IsActive
? () => ToggleOff(growingVat)
: () => ToggleOn(growingVat),
Text = Loc.GetString("verb-toggle-growing-vat")
};
args.Verbs.Add(verb);
}
private void ToggleOn(Entity<CytologyGrowingVatComponent> growingVat)
{
growingVat.Comp.IsActive = true;
DirtyField(growingVat.Owner, growingVat.Comp, nameof(growingVat.Comp.IsActive));
Appearance.SetData(growingVat.Owner, CytologyGrowingVatVisualStates.Working, true);
}
private void ToggleOff(Entity<CytologyGrowingVatComponent> growingVat)
{
growingVat.Comp.IsActive = false;
DirtyField(growingVat.Owner, growingVat.Comp, nameof(growingVat.Comp.IsActive));
Appearance.SetData(growingVat.Owner, CytologyGrowingVatVisualStates.Working, false);
}
}