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

@@ -23,10 +23,14 @@ public sealed class ItemToggleSystem : EntitySystem
[Dependency] private readonly SharedPointLightSystem _light = default!;
[Dependency] private readonly SharedPopupSystem _popup = default!;
private EntityQuery<ItemToggleComponent> _query;
public override void Initialize()
{
base.Initialize();
_query = GetEntityQuery<ItemToggleComponent>();
SubscribeLocalEvent<ItemToggleComponent, ComponentStartup>(OnStartup);
SubscribeLocalEvent<ItemToggleComponent, MapInitEvent>(OnMapInit);
SubscribeLocalEvent<ItemToggleComponent, ItemUnwieldedEvent>(TurnOffOnUnwielded);
@@ -69,7 +73,7 @@ public sealed class ItemToggleSystem : EntitySystem
/// <returns>Same as <see cref="TrySetActive"/></returns>
public bool Toggle(Entity<ItemToggleComponent?> ent, EntityUid? user = null, bool predicted = true)
{
if (!Resolve(ent, ref ent.Comp))
if (!_query.Resolve(ent, ref ent.Comp, false))
return false;
return TrySetActive(ent, !ent.Comp.Activated, user, predicted);
@@ -92,7 +96,7 @@ public sealed class ItemToggleSystem : EntitySystem
/// </summary>
public bool TryActivate(Entity<ItemToggleComponent?> ent, EntityUid? user = null, bool predicted = true)
{
if (!Resolve(ent, ref ent.Comp))
if (!_query.Resolve(ent, ref ent.Comp, false))
return false;
var uid = ent.Owner;
@@ -135,7 +139,7 @@ public sealed class ItemToggleSystem : EntitySystem
/// </summary>
public bool TryDeactivate(Entity<ItemToggleComponent?> ent, EntityUid? user = null, bool predicted = true)
{
if (!Resolve(ent, ref ent.Comp))
if (!_query.Resolve(ent, ref ent.Comp, false))
return false;
var uid = ent.Owner;
@@ -230,7 +234,7 @@ public sealed class ItemToggleSystem : EntitySystem
public bool IsActivated(Entity<ItemToggleComponent?> ent)
{
if (!Resolve(ent, ref ent.Comp, false))
if (!_query.Resolve(ent, ref ent.Comp, false))
return true; // assume always activated if no component
return ent.Comp.Activated;