* 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>
53 lines
1.6 KiB
C#
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;
|
|
}
|
|
}
|