using Content.Server.Administration.Systems; using Content.Server.Chemistry.Containers.EntitySystems; using Content.Server.EUI; using Content.Shared.Administration; using Content.Shared.Chemistry.Components.SolutionManager; using Content.Shared.Eui; using JetBrains.Annotations; namespace Content.Server.Administration.UI { /// /// Admin Eui for displaying and editing the reagents in a solution. /// [UsedImplicitly] public sealed class EditSolutionsEui : BaseEui { [Dependency] private readonly IEntityManager _entityManager = default!; private readonly SolutionContainerSystem _solutionContainerSystem = default!; public readonly EntityUid Target; public EditSolutionsEui(EntityUid entity) { IoCManager.InjectDependencies(this); _solutionContainerSystem = _entityManager.System(); Target = entity; } public override void Opened() { base.Opened(); StateDirty(); } public override void Closed() { base.Closed(); _entityManager.System().OnEditSolutionsEuiClosed(Player); } public override EuiStateBase GetNewState() { List<(string Name, NetEntity Solution)>? netSolutions; if (_entityManager.TryGetComponent(Target, out SolutionContainerManagerComponent? container) && container.Containers.Count > 0) { netSolutions = new(); foreach (var (name, solution) in _solutionContainerSystem.EnumerateSolutions((Target, container))) { if (name is null || !_entityManager.TryGetNetEntity(solution, out var netSolution)) continue; netSolutions.Add((name, netSolution.Value)); } } else netSolutions = null; return new EditSolutionsEuiState(_entityManager.GetNetEntity(Target), netSolutions); } } }