using Content.Server.Nutrition.Components; using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.Components.SolutionManager; using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Tag; namespace Content.Server.Nutrition.EntitySystems { public sealed class TrashOnSolutionEmptySystem : EntitySystem { [Dependency] private readonly SharedSolutionContainerSystem _solutionContainerSystem = default!; [Dependency] private readonly TagSystem _tagSystem = default!; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnMapInit); SubscribeLocalEvent(OnSolutionChange); } public void OnMapInit(Entity entity, ref MapInitEvent args) { CheckSolutions(entity); } public void OnSolutionChange(Entity entity, ref SolutionContainerChangedEvent args) { CheckSolutions(entity); } public void CheckSolutions(Entity entity) { if (!EntityManager.HasComponent(entity)) return; if (_solutionContainerSystem.TryGetSolution(entity.Owner, entity.Comp.Solution, out _, out var solution)) UpdateTags(entity, solution); } public void UpdateTags(Entity entity, Solution solution) { if (solution.Volume <= 0) { _tagSystem.AddTag(entity.Owner, "Trash"); return; } if (_tagSystem.HasTag(entity.Owner, "Trash")) _tagSystem.RemoveTag(entity.Owner, "Trash"); } } }