using Content.Server.EUI; using Content.Server.Explosion.EntitySystems; using Content.Shared.Administration; using Content.Shared.Eui; using JetBrains.Annotations; namespace Content.Server.Administration.UI; /// /// Admin Eui for spawning and preview-ing explosions /// [UsedImplicitly] public sealed class SpawnExplosionEui : BaseEui { private readonly ExplosionSystem _explosionSystem; private readonly ISawmill _sawmill; public SpawnExplosionEui() { _explosionSystem = IoCManager.Resolve().GetEntitySystem(); _sawmill = IoCManager.Resolve().GetSawmill("explosion"); } public override void HandleMessage(EuiMessageBase msg) { base.HandleMessage(msg); if (msg is not SpawnExplosionEuiMsg.PreviewRequest request) return; if (request.TotalIntensity <= 0 || request.IntensitySlope <= 0) return; var explosion = _explosionSystem.GenerateExplosionPreview(request); if (explosion == null) { _sawmill.Error("Failed to generate explosion preview."); return; } SendMessage(new SpawnExplosionEuiMsg.PreviewData(explosion, request.IntensitySlope, request.TotalIntensity)); } }