decouple ItemToggle from PowerCellDraw (#31392)

* remove ItemToggle from PowerCellDraw query

* add EntityQuery for resolves, make them all optional

* move integration to ToggleCellDraw

* add ToggleCellDraw to almost every PowerCellDraw prototype

* :trollface:

* :trollface:

* :trollface:

* let it disable on mapinit

* set update time on mapinit, make borg power logic consistent now

* :trollface:

---------

Co-authored-by: deltanedas <@deltanedas:kde.org>
This commit is contained in:
deltanedas
2024-08-25 12:17:03 +00:00
committed by GitHub
parent 42865ae705
commit e1df251cbc
15 changed files with 99 additions and 28 deletions

View File

@@ -1,5 +1,4 @@
using Content.Server.Power.Components;
using Content.Shared.Item.ItemToggle.Components;
using Content.Shared.PowerCell;
using Content.Shared.PowerCell.Components;
@@ -14,11 +13,11 @@ public sealed partial class PowerCellSystem
public override void Update(float frameTime)
{
base.Update(frameTime);
var query = EntityQueryEnumerator<PowerCellDrawComponent, PowerCellSlotComponent, ItemToggleComponent>();
var query = EntityQueryEnumerator<PowerCellDrawComponent, PowerCellSlotComponent>();
while (query.MoveNext(out var uid, out var comp, out var slot, out var toggle))
while (query.MoveNext(out var uid, out var comp, out var slot))
{
if (!comp.Enabled || !toggle.Activated)
if (!comp.Enabled)
continue;
if (Timing.CurTime < comp.NextUpdateTime)
@@ -32,8 +31,6 @@ public sealed partial class PowerCellSystem
if (_battery.TryUseCharge(batteryEnt.Value, comp.DrawRate, battery))
continue;
Toggle.TryDeactivate((uid, toggle));
var ev = new PowerCellSlotEmptyEvent();
RaiseLocalEvent(uid, ref ev);
}
@@ -60,7 +57,10 @@ public sealed partial class PowerCellSystem
var canUse = !args.Ejected && HasActivatableCharge(uid, component);
if (!canDraw)
Toggle.TryDeactivate(uid);
{
var ev = new PowerCellSlotEmptyEvent();
RaiseLocalEvent(uid, ref ev);
}
if (canUse != component.CanUse || canDraw != component.CanDraw)
{