Predict gasthermomachines (#33837)

* Predict gasthermomachines

* despawn

* smellby
This commit is contained in:
metalgearsloth
2025-05-13 21:49:43 +10:00
committed by GitHub
parent 24141aa1e9
commit df2257cd92
16 changed files with 236 additions and 135 deletions

View File

@@ -31,7 +31,6 @@ namespace Content.Server.Power.EntitySystems
private readonly HashSet<ApcNet> _apcNetReconnectQueue = new();
private EntityQuery<ApcPowerReceiverBatteryComponent> _apcBatteryQuery;
private EntityQuery<AppearanceComponent> _appearanceQuery;
private EntityQuery<BatteryComponent> _batteryQuery;
private BatteryRampPegSolver _solver = new();
@@ -41,7 +40,6 @@ namespace Content.Server.Power.EntitySystems
base.Initialize();
_apcBatteryQuery = GetEntityQuery<ApcPowerReceiverBatteryComponent>();
_appearanceQuery = GetEntityQuery<AppearanceComponent>();
_batteryQuery = GetEntityQuery<BatteryComponent>();
UpdatesAfter.Add(typeof(NodeGroupSystem));
@@ -317,15 +315,25 @@ namespace Content.Server.Power.EntitySystems
_powerNetReconnectQueue.Clear();
}
private bool IsPoweredCalculate(ApcPowerReceiverComponent comp)
{
return !comp.PowerDisabled
&& (!comp.NeedsPower
|| MathHelper.CloseToPercent(comp.NetworkLoad.ReceivingPower,
comp.Load));
}
public override bool IsPoweredCalculate(SharedApcPowerReceiverComponent comp)
{
return IsPoweredCalculate((ApcPowerReceiverComponent)comp);
}
private void UpdateApcPowerReceiver(float frameTime)
{
var enumerator = AllEntityQuery<ApcPowerReceiverComponent>();
while (enumerator.MoveNext(out var uid, out var apcReceiver))
{
var powered = !apcReceiver.PowerDisabled
&& (!apcReceiver.NeedsPower
|| MathHelper.CloseToPercent(apcReceiver.NetworkLoad.ReceivingPower,
apcReceiver.Load));
var powered = IsPoweredCalculate(apcReceiver);
MetaDataComponent? metadata = null;
@@ -381,9 +389,6 @@ namespace Content.Server.Power.EntitySystems
var ev = new PowerChangedEvent(powered, apcReceiver.NetworkLoad.ReceivingPower);
RaiseLocalEvent(uid, ref ev);
if (_appearanceQuery.TryComp(uid, out var appearance))
_appearance.SetData(uid, PowerDeviceVisuals.Powered, powered, appearance);
}
}