Use AllEntityQuery<> In power systems (#15336)

This commit is contained in:
Leon Friedrich
2023-04-15 07:45:02 +12:00
committed by GitHub
parent 9b8b844386
commit 5b09ee3102
3 changed files with 31 additions and 15 deletions

View File

@@ -289,36 +289,44 @@ namespace Content.Server.Power.EntitySystems
private void UpdateApcPowerReceiver()
{
var appearanceQuery = GetEntityQuery<AppearanceComponent>();
var enumerator = EntityQueryEnumerator<ApcPowerReceiverComponent>();
while (enumerator.MoveNext(out var apcReceiver))
var metaQuery = GetEntityQuery<MetaDataComponent>();
var enumerator = AllEntityQuery<ApcPowerReceiverComponent>();
while (enumerator.MoveNext(out var uid, out var apcReceiver))
{
var powered = apcReceiver.Powered;
if (powered == apcReceiver.PoweredLastUpdate)
continue;
if (metaQuery.GetComponent(uid).EntityPaused)
continue;
apcReceiver.PoweredLastUpdate = powered;
var ev = new PowerChangedEvent(apcReceiver.Powered, apcReceiver.NetworkLoad.ReceivingPower);
RaiseLocalEvent(apcReceiver.Owner, ref ev);
if (appearanceQuery.TryGetComponent(apcReceiver.Owner, out var appearance))
_appearance.SetData(appearance.Owner, PowerDeviceVisuals.Powered, powered, appearance);
if (appearanceQuery.TryGetComponent(uid, out var appearance))
_appearance.SetData(uid, PowerDeviceVisuals.Powered, powered, appearance);
}
}
private void UpdatePowerConsumer()
{
var enumerator = EntityQueryEnumerator<PowerConsumerComponent>();
while (enumerator.MoveNext(out var consumer))
var metaQuery = GetEntityQuery<MetaDataComponent>();
var enumerator = AllEntityQuery<PowerConsumerComponent>();
while (enumerator.MoveNext(out var uid, out var consumer))
{
var newRecv = consumer.NetworkLoad.ReceivingPower;
ref var lastRecv = ref consumer.LastReceived;
if (MathHelper.CloseToPercent(lastRecv, newRecv))
continue;
if (metaQuery.GetComponent(uid).EntityPaused)
continue;
lastRecv = newRecv;
var msg = new PowerConsumerReceivedChanged(newRecv, consumer.DrawRate);
RaiseLocalEvent(consumer.Owner, ref msg);
RaiseLocalEvent(uid, ref msg);
}
}