CatStation/Content.Server/Radiation/Systems/RadiationSystem.cs
TemporalOroboros 84b2f07157
The IMapManager is dead (#44002)
* Axes the easy IMapManager references

* Axes the references to unported (obsolete) IMapManager methods

* Converts salvageruler command to a LocalizedEntityCommand so it can use SharedMapSystem

* Removes IMapManager from GameTicker
This required axing the map nuke during restart, but that should be fine?
Maps are entities so EntityManager.FlushEntities should delete them all and that's the preceding line

* submodule update(?)

---------

Co-authored-by: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com>
2026-07-01 20:44:54 -07:00

75 lines
2.3 KiB
C#

using Content.Server.Radiation.Components;
using Content.Shared.Radiation.Components;
using Content.Shared.Radiation.Events;
using Content.Shared.Radiation.Systems;
using Content.Shared.Stacks;
using Robust.Shared.Configuration;
using Robust.Shared.Map;
using Robust.Shared.Map.Components;
namespace Content.Server.Radiation.Systems;
public sealed partial class RadiationSystem : SharedRadiationSystem
{
[Dependency] private IConfigurationManager _cfg = default!;
[Dependency] private SharedTransformSystem _transform = default!;
[Dependency] private SharedStackSystem _stack = default!;
[Dependency] private SharedMapSystem _maps = default!;
[Dependency] private EntityQuery<RadiationReceiverComponent> _receiverQuery = default!;
[Dependency] private EntityQuery<RadiationBlockingContainerComponent> _blockerQuery = default!;
[Dependency] private EntityQuery<RadiationGridResistanceComponent> _resistanceQuery = default!;
[Dependency] private EntityQuery<MapGridComponent> _gridQuery = default!;
private float _accumulator;
private List<SourceData> _sources = new();
public override void Initialize()
{
base.Initialize();
SubscribeCvars();
InitRadBlocking();
}
public override void Update(float frameTime)
{
base.Update(frameTime);
_accumulator += frameTime;
if (_accumulator < GridcastUpdateRate)
return;
UpdateGridcast();
UpdateResistanceDebugOverlay();
_accumulator = 0f;
}
public void IrradiateEntity(EntityUid uid, float radsPerSecond, float time, EntityUid? origin = null)
{
var msg = new OnIrradiatedEvent(time, radsPerSecond, origin);
RaiseLocalEvent(uid, msg);
}
public void SetSourceEnabled(Entity<RadiationSourceComponent?> entity, bool val)
{
if (!Resolve(entity, ref entity.Comp, false))
return;
entity.Comp.Enabled = val;
}
/// <summary>
/// Marks entity to receive/ignore radiation rays.
/// </summary>
public void SetCanReceive(EntityUid uid, bool canReceive)
{
if (canReceive)
{
EnsureComp<RadiationReceiverComponent>(uid);
}
else
{
RemComp<RadiationReceiverComponent>(uid);
}
}
}