using Content.Server.Atmos.EntitySystems; using Content.Server.Body.Components; using Content.Server.Body.Systems; using Content.Server.Popups; using Content.Server.Shuttles.Systems; using Content.Shared.Alert; using Content.Shared.Shuttles.Components; using JetBrains.Annotations; using Robust.Shared.Player; namespace Content.Server.Alert.Click; /// /// Attempts to toggle the internals for a particular entity /// [UsedImplicitly] [DataDefinition] public sealed class ToggleInternals : IAlertClick { public void AlertClicked(EntityUid player) { var entManager = IoCManager.Resolve(); if (!entManager.TryGetComponent(player, out var internals)) return; var popups = entManager.EntitySysManager.GetEntitySystem(); var internalsSystem = entManager.EntitySysManager.GetEntitySystem(); // Toggle off if they're on if (internalsSystem.AreInternalsWorking(internals)) { internalsSystem.DisconnectTank(internals); return; } // If they're not on then check if we have a mask to use if (internals.BreathToolEntity == null) { popups.PopupEntity(Loc.GetString("internals-no-breath-tool"), player, Filter.Entities(player)); return; } var tank = internalsSystem.FindBestGasTank(internals); if (tank == null) { popups.PopupEntity(Loc.GetString("internals-no-tank"), player, Filter.Entities(player)); return; } entManager.EntitySysManager.GetEntitySystem().ConnectToInternals(tank); } }