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:
Perry Fraser
2025-05-12 17:24:00 -04:00
committed by GitHub
parent cec13166a8
commit e8c8cae31e
2 changed files with 4 additions and 11 deletions

View File

@@ -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);
}