using Content.Client.Radiation.Overlays; using Content.Shared.Radiation.Events; using Content.Shared.Radiation.Systems; using Robust.Client.Graphics; namespace Content.Client.Radiation.Systems; public sealed class RadiationSystem : EntitySystem { [Dependency] private readonly IOverlayManager _overlayMan = default!; public List? Rays; public Dictionary>? ResistanceGrids; public override void Initialize() { SubscribeNetworkEvent(OnOverlayToggled); SubscribeNetworkEvent(OnOverlayUpdate); SubscribeNetworkEvent(OnResistanceUpdate); } public override void Shutdown() { base.Shutdown(); _overlayMan.RemoveOverlay(); } private void OnOverlayToggled(OnRadiationOverlayToggledEvent ev) { if (ev.IsEnabled) _overlayMan.AddOverlay(new RadiationDebugOverlay()); else _overlayMan.RemoveOverlay(); } private void OnOverlayUpdate(OnRadiationOverlayUpdateEvent ev) { if (!_overlayMan.TryGetOverlay(out RadiationDebugOverlay? overlay)) return; var str = $"Radiation update: {ev.ElapsedTimeMs}ms with. Receivers: {ev.ReceiversCount}, " + $"Sources: {ev.SourcesCount}, Rays: {ev.Rays.Count}"; Log.Info(str); Rays = ev.Rays; } private void OnResistanceUpdate(OnRadiationOverlayResistanceUpdateEvent ev) { ResistanceGrids = ev.Grids; } }