fix: don't retroactively drain disabled batteries (#37364)
* fix: don't retroactively drain disabled batteries If something that used PowerCellDraw temporarily disabled said draw, once it became re-enabled the system would play catch-up trying to drain the battery for all the time since the component was disabled. * fixup! fix: don't retroactively drain disabled batteries
This commit is contained in:
@@ -26,7 +26,7 @@ public abstract class SharedPowerCellSystem : EntitySystem
|
||||
|
||||
private void OnMapInit(Entity<PowerCellDrawComponent> ent, ref MapInitEvent args)
|
||||
{
|
||||
QueueUpdate((ent, ent.Comp));
|
||||
ent.Comp.NextUpdateTime = Timing.CurTime + ent.Comp.Delay;
|
||||
}
|
||||
|
||||
private void OnRejuvenate(EntityUid uid, PowerCellSlotComponent component, RejuvenateEvent args)
|
||||
@@ -71,20 +71,14 @@ public abstract class SharedPowerCellSystem : EntitySystem
|
||||
RaiseLocalEvent(uid, new PowerCellChangedEvent(true), false);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Makes the draw logic update in the next tick.
|
||||
/// </summary>
|
||||
public void QueueUpdate(Entity<PowerCellDrawComponent?> ent)
|
||||
{
|
||||
if (Resolve(ent, ref ent.Comp))
|
||||
ent.Comp.NextUpdateTime = Timing.CurTime;
|
||||
}
|
||||
|
||||
public void SetDrawEnabled(Entity<PowerCellDrawComponent?> ent, bool enabled)
|
||||
{
|
||||
if (!Resolve(ent, ref ent.Comp, false) || ent.Comp.Enabled == enabled)
|
||||
return;
|
||||
|
||||
if (enabled)
|
||||
ent.Comp.NextUpdateTime = Timing.CurTime;
|
||||
|
||||
ent.Comp.Enabled = enabled;
|
||||
Dirty(ent, ent.Comp);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user