Files
tbd-station-14/Content.Client/Radiation/Systems/RadiationSystem.cs
Leon Friedrich 9d4e60068b Optimize & clean up RadiationSystem (#34459)
* Optimize & clean up RadiationSystem

* comments

* Update Content.Server/Radiation/Systems/RadiationSystem.GridCast.cs

Co-authored-by: Thomas <87614336+Aeshus@users.noreply.github.com>

---------

Co-authored-by: Thomas <87614336+Aeshus@users.noreply.github.com>
2025-01-18 12:07:20 +11:00

53 lines
1.6 KiB
C#

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<DebugRadiationRay>? Rays;
public Dictionary<NetEntity, Dictionary<Vector2i, float>>? ResistanceGrids;
public override void Initialize()
{
SubscribeNetworkEvent<OnRadiationOverlayToggledEvent>(OnOverlayToggled);
SubscribeNetworkEvent<OnRadiationOverlayUpdateEvent>(OnOverlayUpdate);
SubscribeNetworkEvent<OnRadiationOverlayResistanceUpdateEvent>(OnResistanceUpdate);
}
public override void Shutdown()
{
base.Shutdown();
_overlayMan.RemoveOverlay<RadiationDebugOverlay>();
}
private void OnOverlayToggled(OnRadiationOverlayToggledEvent ev)
{
if (ev.IsEnabled)
_overlayMan.AddOverlay(new RadiationDebugOverlay());
else
_overlayMan.RemoveOverlay<RadiationDebugOverlay>();
}
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;
}
}