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