Use AllEntityQuery<> In power systems (#15336)
This commit is contained in:
@@ -57,7 +57,9 @@ namespace Content.Server.Power.EntitySystems
|
|||||||
|
|
||||||
private void PreSync(NetworkBatteryPreSync ev)
|
private void PreSync(NetworkBatteryPreSync ev)
|
||||||
{
|
{
|
||||||
foreach (var (netBat, bat) in EntityManager.EntityQuery<PowerNetworkBatteryComponent, BatteryComponent>())
|
// Ignoring entity pausing. If the entity was paused, neither component's data should have been changed.
|
||||||
|
var enumerator = AllEntityQuery<PowerNetworkBatteryComponent, BatteryComponent>();
|
||||||
|
while (enumerator.MoveNext(out var netBat, out var bat))
|
||||||
{
|
{
|
||||||
netBat.NetworkBattery.Capacity = bat.MaxCharge;
|
netBat.NetworkBattery.Capacity = bat.MaxCharge;
|
||||||
netBat.NetworkBattery.CurrentStorage = bat.CurrentCharge;
|
netBat.NetworkBattery.CurrentStorage = bat.CurrentCharge;
|
||||||
@@ -66,9 +68,15 @@ namespace Content.Server.Power.EntitySystems
|
|||||||
|
|
||||||
private void PostSync(NetworkBatteryPostSync ev)
|
private void PostSync(NetworkBatteryPostSync ev)
|
||||||
{
|
{
|
||||||
foreach (var (netBat, bat) in EntityManager.EntityQuery<PowerNetworkBatteryComponent, BatteryComponent>())
|
// Ignoring entity pausing. If the entity was paused, neither component's data should have been changed.
|
||||||
|
var enumerator = AllEntityQuery<PowerNetworkBatteryComponent, BatteryComponent>();
|
||||||
|
while (enumerator.MoveNext(out var uid, out var netBat, out var bat))
|
||||||
{
|
{
|
||||||
bat.CurrentCharge = netBat.NetworkBattery.CurrentStorage;
|
var netCharge = netBat.NetworkBattery.CurrentStorage;
|
||||||
|
if (MathHelper.CloseTo(bat.CurrentCharge, netCharge))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
bat.CurrentCharge = netCharge;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -289,36 +289,44 @@ namespace Content.Server.Power.EntitySystems
|
|||||||
private void UpdateApcPowerReceiver()
|
private void UpdateApcPowerReceiver()
|
||||||
{
|
{
|
||||||
var appearanceQuery = GetEntityQuery<AppearanceComponent>();
|
var appearanceQuery = GetEntityQuery<AppearanceComponent>();
|
||||||
var enumerator = EntityQueryEnumerator<ApcPowerReceiverComponent>();
|
var metaQuery = GetEntityQuery<MetaDataComponent>();
|
||||||
while (enumerator.MoveNext(out var apcReceiver))
|
var enumerator = AllEntityQuery<ApcPowerReceiverComponent>();
|
||||||
|
while (enumerator.MoveNext(out var uid, out var apcReceiver))
|
||||||
{
|
{
|
||||||
var powered = apcReceiver.Powered;
|
var powered = apcReceiver.Powered;
|
||||||
if (powered == apcReceiver.PoweredLastUpdate)
|
if (powered == apcReceiver.PoweredLastUpdate)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
if (metaQuery.GetComponent(uid).EntityPaused)
|
||||||
|
continue;
|
||||||
|
|
||||||
apcReceiver.PoweredLastUpdate = powered;
|
apcReceiver.PoweredLastUpdate = powered;
|
||||||
var ev = new PowerChangedEvent(apcReceiver.Powered, apcReceiver.NetworkLoad.ReceivingPower);
|
var ev = new PowerChangedEvent(apcReceiver.Powered, apcReceiver.NetworkLoad.ReceivingPower);
|
||||||
|
|
||||||
RaiseLocalEvent(apcReceiver.Owner, ref ev);
|
RaiseLocalEvent(apcReceiver.Owner, ref ev);
|
||||||
|
|
||||||
if (appearanceQuery.TryGetComponent(apcReceiver.Owner, out var appearance))
|
if (appearanceQuery.TryGetComponent(uid, out var appearance))
|
||||||
_appearance.SetData(appearance.Owner, PowerDeviceVisuals.Powered, powered, appearance);
|
_appearance.SetData(uid, PowerDeviceVisuals.Powered, powered, appearance);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UpdatePowerConsumer()
|
private void UpdatePowerConsumer()
|
||||||
{
|
{
|
||||||
var enumerator = EntityQueryEnumerator<PowerConsumerComponent>();
|
var metaQuery = GetEntityQuery<MetaDataComponent>();
|
||||||
while (enumerator.MoveNext(out var consumer))
|
var enumerator = AllEntityQuery<PowerConsumerComponent>();
|
||||||
|
while (enumerator.MoveNext(out var uid, out var consumer))
|
||||||
{
|
{
|
||||||
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;
|
continue;
|
||||||
|
|
||||||
|
if (metaQuery.GetComponent(uid).EntityPaused)
|
||||||
|
continue;
|
||||||
|
|
||||||
lastRecv = newRecv;
|
lastRecv = newRecv;
|
||||||
var msg = new PowerConsumerReceivedChanged(newRecv, consumer.DrawRate);
|
var msg = new PowerConsumerReceivedChanged(newRecv, consumer.DrawRate);
|
||||||
RaiseLocalEvent(consumer.Owner, ref msg);
|
RaiseLocalEvent(uid, ref msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ namespace Content.Server.Power.Pow3r
|
|||||||
foreach (var group in state.GroupedNets)
|
foreach (var group in state.GroupedNets)
|
||||||
{
|
{
|
||||||
// Note that many net-layers only have a handful of networks.
|
// Note that many net-layers only have a handful of networks.
|
||||||
// E.g., the number of nets from lowest to heights for box and saltern are:
|
// E.g., the number of nets from lowest to highest for box and saltern are:
|
||||||
// Saltern: 1477, 11, 2, 2, 3.
|
// Saltern: 1477, 11, 2, 2, 3.
|
||||||
// Box: 3308, 20, 1, 5.
|
// Box: 3308, 20, 1, 5.
|
||||||
//
|
//
|
||||||
|
|||||||
Reference in New Issue
Block a user