Power is now frame time aware and actually works correctly.

This commit is contained in:
Pieter-Jan Briers
2018-05-27 19:33:27 +02:00
parent 147aad5064
commit ab91d358ef
4 changed files with 167 additions and 157 deletions

View File

@@ -72,18 +72,20 @@ namespace Content.Server.GameObjects.Components.Power
return;
}
if (storage.CanDeductCharge(Load))
if (storage.CanDeductCharge(Load * frametime))
{
PowerAllDevices();
storage.DeductCharge(Load);
storage.DeductCharge(Load * frametime);
return;
}
var remainingLoad = storage.AvailableCharge();
var usedLoad = 0f;
var remainingEnergy = storage.AvailableCharge(frametime);
var usedEnergy = 0f;
foreach (var device in DeviceLoadList)
{
if (device.Load > remainingLoad)
var deviceLoad = device.Load * frametime;
if (deviceLoad > remainingEnergy)
{
device.ExternalPowered = false;
DepoweredDevices.Add(device);
@@ -92,15 +94,15 @@ namespace Content.Server.GameObjects.Components.Power
{
if (!device.ExternalPowered)
{
device.ExternalPowered = true;
DepoweredDevices.Remove(device);
device.ExternalPowered = true;
}
usedLoad += device.Load;
remainingLoad -= device.Load;
usedEnergy += deviceLoad;
remainingEnergy -= deviceLoad;
}
}
storage.DeductCharge(usedLoad);
storage.DeductCharge(usedEnergy);
}
private void PowerAllDevices()
{