CatStation/Content.Server/Power/EntitySystems/PowerStateSystem.cs
Whatstone 06812eed97
Rate limit emitters, only raise PowerStateChanged on a change in state. (#45514)
* rate limit the emitter

* Reset AlertRadioIfWasWorking to void
2026-08-21 08:20:36 +00:00

30 lines
1 KiB
C#

using Content.Server.Power.Components;
using Content.Shared.Power.Components;
using Content.Shared.Power.EntitySystems;
namespace Content.Server.Power.EntitySystems;
/// <inheritdoc/>>
public sealed partial class PowerStateSystem : SharedPowerStateSystem
{
[Dependency] EntityQuery<PowerConsumerComponent> _powerConsumerQuery = default!;
/// <summary> Init IsWorking and power values on startup. </summary>
[SubscribeLocalEvent]
private void OnComponentStartup(Entity<PowerStateComponent> ent, ref ComponentStartup args)
{
if (ent.Comp.EnsureApc)
EnsureComp<ApcPowerReceiverComponent>(ent);
SetPowerLoad(ent, ent.Comp.IsWorking);
}
/// <inheritdoc/>>
protected override void SetPowerLoad(Entity<PowerStateComponent> ent, bool isWorking)
{
base.SetPowerLoad(ent, isWorking);
if (_powerConsumerQuery.TryComp(ent, out var powerConsumer))
powerConsumer.DrawRate = isWorking ? ent.Comp.WorkingPowerDraw : ent.Comp.IdlePowerDraw;
}
}