Raise power events by ref and not broadcast (#11923)
Also some other minor stuff.
This commit is contained in:
@@ -47,7 +47,7 @@ namespace Content.Server.AME
|
||||
}
|
||||
}
|
||||
|
||||
private static void OnAMEPowerChange(EntityUid uid, AMEControllerComponent component, PowerChangedEvent args)
|
||||
private static void OnAMEPowerChange(EntityUid uid, AMEControllerComponent component, ref PowerChangedEvent args)
|
||||
{
|
||||
component.UpdateUserInterface();
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ namespace Content.Server.Advertise
|
||||
RefreshTimer(uid, true, advertise);
|
||||
}
|
||||
|
||||
private void OnPowerChanged(EntityUid uid, AdvertiseComponent advertise, PowerChangedEvent args)
|
||||
private void OnPowerChanged(EntityUid uid, AdvertiseComponent advertise, ref PowerChangedEvent args)
|
||||
{
|
||||
SetEnabled(uid, args.Powered, advertise);
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ public sealed partial class ArcadeSystem
|
||||
SubscribeLocalEvent<BlockGameArcadeComponent, PowerChangedEvent>(OnBlockPowerChanged);
|
||||
}
|
||||
|
||||
private static void OnBlockPowerChanged(EntityUid uid, BlockGameArcadeComponent component, PowerChangedEvent args)
|
||||
private static void OnBlockPowerChanged(EntityUid uid, BlockGameArcadeComponent component, ref PowerChangedEvent args)
|
||||
{
|
||||
component.OnPowerStateChanged(args);
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ public sealed partial class ArcadeSystem
|
||||
SubscribeLocalEvent<SpaceVillainArcadeComponent, PowerChangedEvent>(OnSVillainPower);
|
||||
}
|
||||
|
||||
private void OnSVillainPower(EntityUid uid, SpaceVillainArcadeComponent component, PowerChangedEvent args)
|
||||
private void OnSVillainPower(EntityUid uid, SpaceVillainArcadeComponent component, ref PowerChangedEvent args)
|
||||
{
|
||||
component.OnPowerStateChanged(args);
|
||||
}
|
||||
|
||||
@@ -195,7 +195,7 @@ public sealed class AirAlarmSystem : EntitySystem
|
||||
UpdateUI(uid, component);
|
||||
}
|
||||
|
||||
private void OnPowerChanged(EntityUid uid, AirAlarmComponent component, PowerChangedEvent args)
|
||||
private void OnPowerChanged(EntityUid uid, AirAlarmComponent component, ref PowerChangedEvent args)
|
||||
{
|
||||
if (args.Powered)
|
||||
{
|
||||
|
||||
@@ -56,7 +56,7 @@ public sealed class AtmosAlarmableSystem : EntitySystem
|
||||
false);
|
||||
}
|
||||
|
||||
private void OnPowerChange(EntityUid uid, AtmosAlarmableComponent component, PowerChangedEvent args)
|
||||
private void OnPowerChange(EntityUid uid, AtmosAlarmableComponent component, ref PowerChangedEvent args)
|
||||
{
|
||||
if (!args.Powered)
|
||||
{
|
||||
|
||||
@@ -142,7 +142,7 @@ public sealed class AtmosMonitorSystem : EntitySystem
|
||||
}
|
||||
}
|
||||
|
||||
private void OnPowerChangedEvent(EntityUid uid, AtmosMonitorComponent component, PowerChangedEvent args)
|
||||
private void OnPowerChangedEvent(EntityUid uid, AtmosMonitorComponent component, ref PowerChangedEvent args)
|
||||
{
|
||||
if (TryComp<AtmosDeviceComponent>(uid, out var atmosDeviceComponent))
|
||||
{
|
||||
|
||||
@@ -173,7 +173,7 @@ namespace Content.Server.Atmos.Piping.Unary.EntitySystems
|
||||
UpdateState(uid, component);
|
||||
}
|
||||
|
||||
private void OnPowerChanged(EntityUid uid, GasVentPumpComponent component, PowerChangedEvent args)
|
||||
private void OnPowerChanged(EntityUid uid, GasVentPumpComponent component, ref PowerChangedEvent args)
|
||||
{
|
||||
component.Enabled = args.Powered;
|
||||
UpdateState(uid, component);
|
||||
|
||||
@@ -138,7 +138,7 @@ namespace Content.Server.Atmos.Piping.Unary.EntitySystems
|
||||
UpdateState(uid, component);
|
||||
}
|
||||
|
||||
private void OnPowerChanged(EntityUid uid, GasVentScrubberComponent component, PowerChangedEvent args)
|
||||
private void OnPowerChanged(EntityUid uid, GasVentScrubberComponent component, ref PowerChangedEvent args)
|
||||
{
|
||||
component.Enabled = args.Powered;
|
||||
UpdateState(uid, component);
|
||||
|
||||
@@ -104,7 +104,7 @@ namespace Content.Server.Atmos.Portable
|
||||
|
||||
UpdateDrainingAppearance(uid, portableNode.ConnectionsEnabled);
|
||||
}
|
||||
private void OnPowerChanged(EntityUid uid, PortableScrubberComponent component, PowerChangedEvent args)
|
||||
private void OnPowerChanged(EntityUid uid, PortableScrubberComponent component, ref PowerChangedEvent args)
|
||||
{
|
||||
UpdateAppearance(uid, component.Full, args.Powered);
|
||||
component.Enabled = args.Powered;
|
||||
|
||||
@@ -13,7 +13,7 @@ namespace Content.Server.Audio
|
||||
SubscribeLocalEvent<AmbientOnPoweredComponent, PowerNetBatterySupplyEvent>(HandlePowerSupply);
|
||||
}
|
||||
|
||||
private void HandlePowerSupply(EntityUid uid, AmbientOnPoweredComponent component, PowerNetBatterySupplyEvent args)
|
||||
private void HandlePowerSupply(EntityUid uid, AmbientOnPoweredComponent component, ref PowerNetBatterySupplyEvent args)
|
||||
{
|
||||
if (!EntityManager.TryGetComponent<AmbientSoundComponent>(uid, out var ambientSound)) return;
|
||||
if (ambientSound.Enabled == args.Supply) return;
|
||||
@@ -21,7 +21,7 @@ namespace Content.Server.Audio
|
||||
Dirty(ambientSound);
|
||||
}
|
||||
|
||||
private void HandlePowerChange(EntityUid uid, AmbientOnPoweredComponent component, PowerChangedEvent args)
|
||||
private void HandlePowerChange(EntityUid uid, AmbientOnPoweredComponent component, ref PowerChangedEvent args)
|
||||
{
|
||||
if (!EntityManager.TryGetComponent<AmbientSoundComponent>(uid, out var ambientSound)) return;
|
||||
if (ambientSound.Enabled == args.Powered) return;
|
||||
|
||||
@@ -106,7 +106,7 @@ namespace Content.Server.Bed
|
||||
RaiseLocalEvent(args.BuckledEntity, metabolicEvent, false);
|
||||
}
|
||||
|
||||
private void OnPowerChanged(EntityUid uid, StasisBedComponent component, PowerChangedEvent args)
|
||||
private void OnPowerChanged(EntityUid uid, StasisBedComponent component, ref PowerChangedEvent args)
|
||||
{
|
||||
UpdateAppearance(uid, args.Powered);
|
||||
UpdateMetabolisms(uid, component, args.Powered);
|
||||
|
||||
@@ -109,7 +109,7 @@ public sealed partial class CargoSystem
|
||||
appearance?.SetData(CargoTelepadVisuals.State, CargoTelepadState.Unpowered);
|
||||
}
|
||||
|
||||
private void OnTelepadPowerChange(EntityUid uid, CargoTelepadComponent component, PowerChangedEvent args)
|
||||
private void OnTelepadPowerChange(EntityUid uid, CargoTelepadComponent component, ref PowerChangedEvent args)
|
||||
{
|
||||
SetEnabled(component);
|
||||
}
|
||||
|
||||
@@ -59,7 +59,7 @@ namespace Content.Server.Cloning.Systems
|
||||
UpdateUserInterface(consoleComponent);
|
||||
}
|
||||
|
||||
private void OnPowerChanged(EntityUid uid, CloningConsoleComponent component, PowerChangedEvent args)
|
||||
private void OnPowerChanged(EntityUid uid, CloningConsoleComponent component, ref PowerChangedEvent args)
|
||||
{
|
||||
UpdateUserInterface(component);
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ public sealed partial class ConstructionSystem
|
||||
CreateComputerBoard(component);
|
||||
}
|
||||
|
||||
private void OnCompPowerChange(EntityUid uid, ComputerComponent component, PowerChangedEvent args)
|
||||
private void OnCompPowerChange(EntityUid uid, ComputerComponent component, ref PowerChangedEvent args)
|
||||
{
|
||||
if (TryComp<AppearanceComponent>(uid, out var appearance))
|
||||
{
|
||||
|
||||
@@ -303,7 +303,7 @@ namespace Content.Server.Disease
|
||||
/// <summary>
|
||||
/// Makes sure the machine is visually off/on.
|
||||
/// </summary>
|
||||
private void OnPowerChanged(EntityUid uid, DiseaseMachineComponent component, PowerChangedEvent args)
|
||||
private void OnPowerChanged(EntityUid uid, DiseaseMachineComponent component, ref PowerChangedEvent args)
|
||||
{
|
||||
UpdateAppearance(uid, args.Powered, false);
|
||||
}
|
||||
|
||||
@@ -319,7 +319,7 @@ namespace Content.Server.Disposal.Unit.EntitySystems
|
||||
RemComp<ActiveDisposalUnitComponent>(uid);
|
||||
}
|
||||
|
||||
private void HandlePowerChange(EntityUid uid, DisposalUnitComponent component, PowerChangedEvent args)
|
||||
private void HandlePowerChange(EntityUid uid, DisposalUnitComponent component, ref PowerChangedEvent args)
|
||||
{
|
||||
if (!component.Running)
|
||||
return;
|
||||
|
||||
@@ -30,7 +30,7 @@ namespace Content.Server.Doors.Systems
|
||||
SubscribeLocalEvent<AirlockComponent, BeforeDoorPryEvent>(OnDoorPry);
|
||||
}
|
||||
|
||||
private void OnPowerChanged(EntityUid uid, AirlockComponent component, PowerChangedEvent args)
|
||||
private void OnPowerChanged(EntityUid uid, AirlockComponent component, ref PowerChangedEvent args)
|
||||
{
|
||||
if (TryComp<AppearanceComponent>(uid, out var appearanceComponent))
|
||||
{
|
||||
|
||||
@@ -266,7 +266,7 @@ namespace Content.Server.Kitchen.EntitySystems
|
||||
UpdateUserInterfaceState(uid, component);
|
||||
}
|
||||
|
||||
private void OnPowerChanged(EntityUid uid, MicrowaveComponent component, PowerChangedEvent args)
|
||||
private void OnPowerChanged(EntityUid uid, MicrowaveComponent component, ref PowerChangedEvent args)
|
||||
{
|
||||
if (!args.Powered)
|
||||
{
|
||||
|
||||
@@ -34,7 +34,7 @@ namespace Content.Server.Kitchen.EntitySystems
|
||||
SubscribeLocalEvent<ReagentGrinderComponent, ComponentInit>(OnComponentInit);
|
||||
SubscribeLocalEvent<ReagentGrinderComponent, ComponentRemove>(OnComponentRemove);
|
||||
|
||||
SubscribeLocalEvent<ReagentGrinderComponent, PowerChangedEvent>((_, component, _) => EnqueueUiUpdate(component));
|
||||
SubscribeLocalEvent<ReagentGrinderComponent, PowerChangedEvent>(OnPowerChange);
|
||||
SubscribeLocalEvent<ReagentGrinderComponent, InteractUsingEvent>(OnInteractUsing);
|
||||
SubscribeLocalEvent<StackComponent, ExtractableScalingEvent>(ExtractableScaling);
|
||||
|
||||
@@ -43,6 +43,11 @@ namespace Content.Server.Kitchen.EntitySystems
|
||||
SubscribeLocalEvent<ReagentGrinderComponent, ContainerIsRemovingAttemptEvent>(OnEntRemoveAttempt);
|
||||
}
|
||||
|
||||
private void OnPowerChange(EntityUid uid, ReagentGrinderComponent component, ref PowerChangedEvent args)
|
||||
{
|
||||
EnqueueUiUpdate(component);
|
||||
}
|
||||
|
||||
private void OnEntRemoveAttempt(EntityUid uid, ReagentGrinderComponent component, ContainerIsRemovingAttemptEvent args)
|
||||
{
|
||||
if (component.Busy)
|
||||
|
||||
@@ -243,7 +243,7 @@ namespace Content.Server.Lathe
|
||||
_appearance.SetData(uid, LatheVisuals.InsertingColor, color);
|
||||
}
|
||||
|
||||
private void OnPowerChanged(EntityUid uid, LatheComponent component, PowerChangedEvent args)
|
||||
private void OnPowerChanged(EntityUid uid, LatheComponent component, ref PowerChangedEvent args)
|
||||
{
|
||||
if (!args.Powered)
|
||||
{
|
||||
|
||||
@@ -34,7 +34,7 @@ namespace Content.Server.Light.EntitySystems
|
||||
SubscribeLocalEvent<EmergencyLightComponent, PowerChangedEvent>(OnEmergencyPower);
|
||||
}
|
||||
|
||||
private void OnEmergencyPower(EntityUid uid, EmergencyLightComponent component, PowerChangedEvent args)
|
||||
private void OnEmergencyPower(EntityUid uid, EmergencyLightComponent component, ref PowerChangedEvent args)
|
||||
{
|
||||
UpdateState(component);
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ namespace Content.Server.Light.EntitySystems
|
||||
SubscribeLocalEvent<LitOnPoweredComponent, PowerNetBatterySupplyEvent>(OnPowerSupply);
|
||||
}
|
||||
|
||||
private void OnPowerChanged(EntityUid uid, LitOnPoweredComponent component, PowerChangedEvent args)
|
||||
private void OnPowerChanged(EntityUid uid, LitOnPoweredComponent component, ref PowerChangedEvent args)
|
||||
{
|
||||
if (EntityManager.TryGetComponent<PointLightComponent>(uid, out var light))
|
||||
{
|
||||
@@ -22,7 +22,7 @@ namespace Content.Server.Light.EntitySystems
|
||||
}
|
||||
}
|
||||
|
||||
private void OnPowerSupply(EntityUid uid, LitOnPoweredComponent component, PowerNetBatterySupplyEvent args)
|
||||
private void OnPowerSupply(EntityUid uid, LitOnPoweredComponent component, ref PowerNetBatterySupplyEvent args)
|
||||
{
|
||||
if (EntityManager.TryGetComponent<PointLightComponent>(uid, out var light))
|
||||
{
|
||||
|
||||
@@ -347,7 +347,7 @@ namespace Content.Server.Light.EntitySystems
|
||||
args.Handled = true;
|
||||
}
|
||||
|
||||
private void OnPowerChanged(EntityUid uid, PoweredLightComponent component, PowerChangedEvent args)
|
||||
private void OnPowerChanged(EntityUid uid, PoweredLightComponent component, ref PowerChangedEvent args)
|
||||
{
|
||||
UpdateLight(uid, component);
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ public sealed partial class ParticleAcceleratorSystem
|
||||
SubscribeLocalEvent<ParticleAcceleratorControlBoxComponent, PowerChangedEvent>(OnControlBoxPowerChange);
|
||||
}
|
||||
|
||||
private static void OnControlBoxPowerChange(EntityUid uid, ParticleAcceleratorControlBoxComponent component, PowerChangedEvent args)
|
||||
private static void OnControlBoxPowerChange(EntityUid uid, ParticleAcceleratorControlBoxComponent component, ref PowerChangedEvent args)
|
||||
{
|
||||
component.OnPowerStateChanged(args);
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ namespace Content.Server.ParticleAccelerator.EntitySystems
|
||||
private static void PowerBoxReceivedChanged(
|
||||
EntityUid uid,
|
||||
ParticleAcceleratorPowerBoxComponent component,
|
||||
PowerConsumerReceivedChanged args)
|
||||
ref PowerConsumerReceivedChanged args)
|
||||
{
|
||||
component.Master?.PowerBoxReceivedChanged(args);
|
||||
}
|
||||
|
||||
@@ -87,7 +87,7 @@ namespace Content.Server.Physics.Controllers
|
||||
}
|
||||
}
|
||||
|
||||
private void OnPowerChanged(EntityUid uid, ConveyorComponent component, PowerChangedEvent args)
|
||||
private void OnPowerChanged(EntityUid uid, ConveyorComponent component, ref PowerChangedEvent args)
|
||||
{
|
||||
UpdateAppearance(component);
|
||||
}
|
||||
|
||||
@@ -71,15 +71,10 @@ namespace Content.Server.Power.Components
|
||||
/// <summary>
|
||||
/// Raised whenever an ApcPowerReceiver becomes powered / unpowered.
|
||||
/// </summary>
|
||||
public sealed class PowerChangedEvent : EntityEventArgs
|
||||
[ByRefEvent]
|
||||
public readonly record struct PowerChangedEvent(bool Powered, float ReceivingPower)
|
||||
{
|
||||
public readonly bool Powered;
|
||||
public readonly float ReceivingPower;
|
||||
|
||||
public PowerChangedEvent(bool powered, float receivingPower)
|
||||
{
|
||||
Powered = powered;
|
||||
ReceivingPower = receivingPower;
|
||||
}
|
||||
public readonly bool Powered = Powered;
|
||||
public readonly float ReceivingPower = ReceivingPower;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ namespace Content.Server.Power.EntitySystems
|
||||
args.Cancel();
|
||||
}
|
||||
|
||||
private void OnPowerChanged(EntityUid uid, ActivatableUIRequiresPowerComponent component, PowerChangedEvent args)
|
||||
private void OnPowerChanged(EntityUid uid, ActivatableUIRequiresPowerComponent component, ref PowerChangedEvent args)
|
||||
{
|
||||
if (!args.Powered)
|
||||
_activatableUISystem.CloseAll(uid);
|
||||
|
||||
@@ -47,7 +47,7 @@ internal sealed class ChargerSystem : EntitySystem
|
||||
_itemSlotsSystem.RemoveItemSlot(uid, component.ChargerSlot);
|
||||
}
|
||||
|
||||
private void OnPowerChanged(EntityUid uid, ChargerComponent component, PowerChangedEvent args)
|
||||
private void OnPowerChanged(EntityUid uid, ChargerComponent component, ref PowerChangedEvent args)
|
||||
{
|
||||
component.UpdateStatus();
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ using Content.Server.Power.NodeGroups;
|
||||
using Content.Server.Power.Pow3r;
|
||||
using JetBrains.Annotations;
|
||||
using Content.Shared.Power;
|
||||
using Robust.Server.GameObjects;
|
||||
|
||||
namespace Content.Server.Power.EntitySystems
|
||||
{
|
||||
@@ -14,6 +15,8 @@ namespace Content.Server.Power.EntitySystems
|
||||
[UsedImplicitly]
|
||||
public sealed class PowerNetSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly AppearanceSystem _appearance = default!;
|
||||
|
||||
private readonly PowerState _powerState = new();
|
||||
private readonly HashSet<PowerNet> _powerNetReconnectQueue = new();
|
||||
private readonly HashSet<ApcNet> _apcNetReconnectQueue = new();
|
||||
@@ -247,23 +250,24 @@ namespace Content.Server.Power.EntitySystems
|
||||
continue;
|
||||
|
||||
apcReceiver.PoweredLastUpdate = powered;
|
||||
var ev = new PowerChangedEvent(apcReceiver.Powered, apcReceiver.NetworkLoad.ReceivingPower);
|
||||
|
||||
RaiseLocalEvent(apcReceiver.Owner, new PowerChangedEvent(apcReceiver.Powered, apcReceiver.NetworkLoad.ReceivingPower), true);
|
||||
RaiseLocalEvent(apcReceiver.Owner, ref ev);
|
||||
|
||||
if (appearanceQuery.TryGetComponent(apcReceiver.Owner, out var appearance))
|
||||
appearance.SetData(PowerDeviceVisuals.Powered, powered);
|
||||
_appearance.SetData(appearance.Owner, PowerDeviceVisuals.Powered, powered, appearance);
|
||||
}
|
||||
|
||||
foreach (var consumer in EntityManager.EntityQuery<PowerConsumerComponent>())
|
||||
{
|
||||
var newRecv = consumer.NetworkLoad.ReceivingPower;
|
||||
ref var lastRecv = ref consumer.LastReceived;
|
||||
if (!MathHelper.CloseToPercent(lastRecv, newRecv))
|
||||
{
|
||||
if (MathHelper.CloseToPercent(lastRecv, newRecv))
|
||||
continue;
|
||||
|
||||
lastRecv = newRecv;
|
||||
var msg = new PowerConsumerReceivedChanged(newRecv, consumer.DrawRate);
|
||||
RaiseLocalEvent(consumer.Owner, msg, true);
|
||||
}
|
||||
RaiseLocalEvent(consumer.Owner, ref msg);
|
||||
}
|
||||
|
||||
foreach (var powerNetBattery in EntityManager.EntityQuery<PowerNetworkBatteryComponent>())
|
||||
@@ -273,11 +277,13 @@ namespace Content.Server.Power.EntitySystems
|
||||
|
||||
if (lastSupply == 0f && currentSupply != 0f)
|
||||
{
|
||||
RaiseLocalEvent(powerNetBattery.Owner, new PowerNetBatterySupplyEvent {Supply = true}, true);
|
||||
var ev = new PowerNetBatterySupplyEvent(true);
|
||||
RaiseLocalEvent(powerNetBattery.Owner, ref ev);
|
||||
}
|
||||
else if (lastSupply > 0f && currentSupply == 0f)
|
||||
{
|
||||
RaiseLocalEvent(powerNetBattery.Owner, new PowerNetBatterySupplyEvent {Supply = false}, true);
|
||||
var ev = new PowerNetBatterySupplyEvent(false);
|
||||
RaiseLocalEvent(powerNetBattery.Owner, ref ev);
|
||||
}
|
||||
|
||||
powerNetBattery.LastSupply = currentSupply;
|
||||
@@ -329,9 +335,11 @@ namespace Content.Server.Power.EntitySystems
|
||||
consumer.NetworkLoad.LinkedNetwork = netNode.Id;
|
||||
}
|
||||
|
||||
var batteryQuery = GetEntityQuery<PowerNetworkBatteryComponent>();
|
||||
|
||||
foreach (var apc in net.Apcs)
|
||||
{
|
||||
var netBattery = EntityManager.GetComponent<PowerNetworkBatteryComponent>(apc.Owner);
|
||||
var netBattery = batteryQuery.GetComponent(apc.Owner);
|
||||
netNode.BatteriesDischarging.Add(netBattery.NetworkBattery.Id);
|
||||
netBattery.NetworkBattery.LinkedNetworkDischarging = netNode.Id;
|
||||
}
|
||||
@@ -358,16 +366,18 @@ namespace Content.Server.Power.EntitySystems
|
||||
supplier.NetworkSupply.LinkedNetwork = netNode.Id;
|
||||
}
|
||||
|
||||
var batteryQuery = GetEntityQuery<PowerNetworkBatteryComponent>();
|
||||
|
||||
foreach (var charger in net.Chargers)
|
||||
{
|
||||
var battery = EntityManager.GetComponent<PowerNetworkBatteryComponent>(charger.Owner);
|
||||
var battery = batteryQuery.GetComponent(charger.Owner);
|
||||
netNode.BatteriesCharging.Add(battery.NetworkBattery.Id);
|
||||
battery.NetworkBattery.LinkedNetworkCharging = netNode.Id;
|
||||
}
|
||||
|
||||
foreach (var discharger in net.Dischargers)
|
||||
{
|
||||
var battery = EntityManager.GetComponent<PowerNetworkBatteryComponent>(discharger.Owner);
|
||||
var battery = batteryQuery.GetComponent(discharger.Owner);
|
||||
netNode.BatteriesDischarging.Add(battery.NetworkBattery.Id);
|
||||
battery.NetworkBattery.LinkedNetworkDischarging = netNode.Id;
|
||||
}
|
||||
@@ -378,7 +388,7 @@ namespace Content.Server.Power.EntitySystems
|
||||
/// Raised before power network simulation happens, to synchronize battery state from
|
||||
/// components like <see cref="BatteryComponent"/> into <see cref="PowerNetworkBatteryComponent"/>.
|
||||
/// </summary>
|
||||
public struct NetworkBatteryPreSync
|
||||
public readonly struct NetworkBatteryPreSync
|
||||
{
|
||||
}
|
||||
|
||||
@@ -386,31 +396,27 @@ namespace Content.Server.Power.EntitySystems
|
||||
/// Raised after power network simulation happens, to synchronize battery charge changes from
|
||||
/// <see cref="PowerNetworkBatteryComponent"/> to components like <see cref="BatteryComponent"/>.
|
||||
/// </summary>
|
||||
public struct NetworkBatteryPostSync
|
||||
public readonly struct NetworkBatteryPostSync
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Raised when the amount of receiving power on a <see cref="PowerConsumerComponent"/> changes.
|
||||
/// </summary>
|
||||
public sealed class PowerConsumerReceivedChanged : EntityEventArgs
|
||||
[ByRefEvent]
|
||||
public readonly record struct PowerConsumerReceivedChanged(float ReceivedPower, float DrawRate)
|
||||
{
|
||||
public float ReceivedPower { get; }
|
||||
public float DrawRate { get; }
|
||||
|
||||
public PowerConsumerReceivedChanged(float receivedPower, float drawRate)
|
||||
{
|
||||
ReceivedPower = receivedPower;
|
||||
DrawRate = drawRate;
|
||||
}
|
||||
public readonly float ReceivedPower = ReceivedPower;
|
||||
public readonly float DrawRate = DrawRate;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Raised whenever a <see cref="PowerNetworkBatteryComponent"/> changes from / to 0 CurrentSupply.
|
||||
/// </summary>
|
||||
public sealed class PowerNetBatterySupplyEvent : EntityEventArgs
|
||||
[ByRefEvent]
|
||||
public readonly record struct PowerNetBatterySupplyEvent(bool Supply)
|
||||
{
|
||||
public bool Supply { get; init; }
|
||||
public readonly bool Supply = Supply;
|
||||
}
|
||||
|
||||
public struct PowerStatistics
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
using Content.Server.Power.Components;
|
||||
using Content.Shared.Examine;
|
||||
using Content.Shared.Power;
|
||||
using Robust.Server.GameObjects;
|
||||
|
||||
namespace Content.Server.Power.EntitySystems
|
||||
{
|
||||
public sealed class PowerReceiverSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly AppearanceSystem _appearance = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
@@ -25,8 +28,9 @@ namespace Content.Server.Power.EntitySystems
|
||||
private void OnExamined(EntityUid uid, ApcPowerReceiverComponent component, ExaminedEvent args)
|
||||
{
|
||||
args.PushMarkup(Loc.GetString("power-receiver-component-on-examine-main",
|
||||
("stateText", Loc.GetString( component.Powered ? "power-receiver-component-on-examine-powered" :
|
||||
"power-receiver-component-on-examine-unpowered"))));
|
||||
("stateText", Loc.GetString( component.Powered
|
||||
? "power-receiver-component-on-examine-powered"
|
||||
: "power-receiver-component-on-examine-unpowered"))));
|
||||
}
|
||||
|
||||
private void OnProviderShutdown(EntityUid uid, ApcPowerProviderComponent component, ComponentShutdown args)
|
||||
@@ -77,11 +81,10 @@ namespace Content.Server.Power.EntitySystems
|
||||
private void ProviderChanged(ApcPowerReceiverComponent receiver)
|
||||
{
|
||||
receiver.NetworkLoad.LinkedNetwork = default;
|
||||
var ev = new PowerChangedEvent(receiver.Powered, receiver.NetworkLoad.ReceivingPower);
|
||||
|
||||
RaiseLocalEvent(receiver.Owner, new PowerChangedEvent(receiver.Powered, receiver.NetworkLoad.ReceivingPower), true);
|
||||
|
||||
if (TryComp(receiver.Owner, out AppearanceComponent? appearance))
|
||||
appearance.SetData(PowerDeviceVisuals.Powered, receiver.Powered);
|
||||
RaiseLocalEvent(receiver.Owner, ref ev);
|
||||
_appearance.SetData(receiver.Owner, PowerDeviceVisuals.Powered, receiver.Powered);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -145,7 +145,7 @@ namespace Content.Server.Shuttles.Systems
|
||||
UpdateState(component);
|
||||
}
|
||||
|
||||
private void OnConsolePowerChange(EntityUid uid, ShuttleConsoleComponent component, PowerChangedEvent args)
|
||||
private void OnConsolePowerChange(EntityUid uid, ShuttleConsoleComponent component, ref PowerChangedEvent args)
|
||||
{
|
||||
UpdateState(component);
|
||||
}
|
||||
|
||||
@@ -223,7 +223,7 @@ namespace Content.Server.Shuttles.Systems
|
||||
DisableThruster(uid, component);
|
||||
}
|
||||
|
||||
private void OnPowerChange(EntityUid uid, ThrusterComponent component, PowerChangedEvent args)
|
||||
private void OnPowerChange(EntityUid uid, ThrusterComponent component, ref PowerChangedEvent args)
|
||||
{
|
||||
if (args.Powered && CanEnable(uid, component))
|
||||
{
|
||||
|
||||
@@ -71,7 +71,7 @@ namespace Content.Server.Singularity.EntitySystems
|
||||
private void ReceivedChanged(
|
||||
EntityUid uid,
|
||||
EmitterComponent component,
|
||||
PowerConsumerReceivedChanged args)
|
||||
ref PowerConsumerReceivedChanged args)
|
||||
{
|
||||
if (!component.IsOn)
|
||||
{
|
||||
|
||||
@@ -181,7 +181,7 @@ public sealed class SurveillanceCameraMonitorSystem : EntitySystem
|
||||
TrySwitchCameraByAddress(uid, message.Address, component);
|
||||
}
|
||||
|
||||
private void OnPowerChanged(EntityUid uid, SurveillanceCameraMonitorComponent component, PowerChangedEvent args)
|
||||
private void OnPowerChanged(EntityUid uid, SurveillanceCameraMonitorComponent component, ref PowerChangedEvent args)
|
||||
{
|
||||
if (!args.Powered)
|
||||
{
|
||||
|
||||
@@ -86,7 +86,7 @@ public sealed class SurveillanceCameraRouterSystem : EntitySystem
|
||||
}
|
||||
}
|
||||
|
||||
private void OnPowerChanged(EntityUid uid, SurveillanceCameraRouterComponent component, PowerChangedEvent args)
|
||||
private void OnPowerChanged(EntityUid uid, SurveillanceCameraRouterComponent component, ref PowerChangedEvent args)
|
||||
{
|
||||
component.MonitorRoutes.Clear();
|
||||
component.Active = args.Powered;
|
||||
|
||||
@@ -143,7 +143,7 @@ public sealed class SurveillanceCameraSystem : EntitySystem
|
||||
|
||||
|
||||
|
||||
private void OnPowerChanged(EntityUid camera, SurveillanceCameraComponent component, PowerChangedEvent args)
|
||||
private void OnPowerChanged(EntityUid camera, SurveillanceCameraComponent component, ref PowerChangedEvent args)
|
||||
{
|
||||
SetActive(camera, args.Powered, component);
|
||||
}
|
||||
|
||||
@@ -119,7 +119,7 @@ namespace Content.Server.VendingMachines
|
||||
AuthorizedVend(uid, entity, args.Type, args.ID, component);
|
||||
}
|
||||
|
||||
private void OnPowerChanged(EntityUid uid, VendingMachineComponent component, PowerChangedEvent args)
|
||||
private void OnPowerChanged(EntityUid uid, VendingMachineComponent component, ref PowerChangedEvent args)
|
||||
{
|
||||
TryUpdateVisualState(uid, component);
|
||||
}
|
||||
|
||||
@@ -391,7 +391,7 @@ public sealed class WiresSystem : EntitySystem
|
||||
#endregion
|
||||
|
||||
#region Event Handling
|
||||
private void OnWiresPowered(EntityUid uid, WiresComponent component, PowerChangedEvent args)
|
||||
private void OnWiresPowered(EntityUid uid, WiresComponent component, ref PowerChangedEvent args)
|
||||
{
|
||||
UpdateUserInterface(uid);
|
||||
foreach (var wire in component.WiresList)
|
||||
|
||||
Reference in New Issue
Block a user