Remove 700 usages of Component.Owner (#21100)

This commit is contained in:
DrSmugleaf
2023-10-19 12:34:31 -07:00
committed by GitHub
parent 5825ffb95c
commit f560f88eb5
261 changed files with 2291 additions and 2036 deletions

View File

@@ -1,7 +1,7 @@
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using Content.Server.Power.Components;
using Robust.Shared.Map;
using Robust.Shared.Map.Components;
using Robust.Shared.Physics;
using Robust.Shared.Physics.Components;
@@ -50,9 +50,10 @@ namespace Content.Server.Power.EntitySystems
var xform = Transform(uid);
// If grid deleting no need to update power.
if (_mapManager.TryGetGrid(xform.GridUid, out var grid))
if (HasComp<MapGridComponent>(xform.GridUid) &&
MetaData(xform.GridUid.Value).EntityLifeStage > EntityLifeStage.MapInitialized)
{
if (MetaData(grid.Owner).EntityLifeStage > EntityLifeStage.MapInitialized) return;
return;
}
Disconnect(uid, provider);
@@ -72,10 +73,10 @@ namespace Content.Server.Power.EntitySystems
foreach (var receiver in FindAvailableReceivers(uid, provider.TransferRange))
{
receiver.Provider?.LinkedReceivers.Remove(receiver);
receiver.Provider = provider;
receiver.Comp.Provider?.LinkedReceivers.Remove(receiver);
receiver.Comp.Provider = provider;
provider.LinkedReceivers.Add(receiver);
RaiseLocalEvent(receiver.Owner, new ProviderConnectedEvent(provider), broadcast: false);
RaiseLocalEvent(receiver, new ProviderConnectedEvent(provider), broadcast: false);
RaiseLocalEvent(uid, new ReceiverConnectedEvent(receiver), broadcast: false);
}
}
@@ -95,34 +96,37 @@ namespace Content.Server.Power.EntitySystems
private void ResetReceivers(ExtensionCableProviderComponent provider)
{
var providerId = provider.Owner;
var receivers = provider.LinkedReceivers.ToArray();
provider.LinkedReceivers.Clear();
foreach (var receiver in receivers)
{
var receiverId = receiver.Owner;
receiver.Provider = null;
RaiseLocalEvent(receiver.Owner, new ProviderDisconnectedEvent(provider), broadcast: false);
RaiseLocalEvent(provider.Owner, new ReceiverDisconnectedEvent(receiver), broadcast: false);
RaiseLocalEvent(receiverId, new ProviderDisconnectedEvent(provider), broadcast: false);
RaiseLocalEvent(providerId, new ReceiverDisconnectedEvent((receiverId, receiver)), broadcast: false);
}
foreach (var receiver in receivers)
{
// No point resetting what the receiver is doing if it's deleting, plus significant perf savings
// in not doing needless lookups
if (!EntityManager.IsQueuedForDeletion(receiver.Owner)
&& MetaData(receiver.Owner).EntityLifeStage <= EntityLifeStage.MapInitialized)
var receiverId = receiver.Owner;
if (!EntityManager.IsQueuedForDeletion(receiverId)
&& MetaData(receiverId).EntityLifeStage <= EntityLifeStage.MapInitialized)
{
TryFindAndSetProvider(receiver);
}
}
}
private IEnumerable<ExtensionCableReceiverComponent> FindAvailableReceivers(EntityUid owner, float range)
private IEnumerable<Entity<ExtensionCableReceiverComponent>> FindAvailableReceivers(EntityUid owner, float range)
{
var xform = Transform(owner);
var coordinates = xform.Coordinates;
if (!_mapManager.TryGetGrid(xform.GridUid, out var grid))
if (!TryComp(xform.GridUid, out MapGridComponent? grid))
yield break;
var nearbyEntities = grid.GetCellsInSquareArea(coordinates, (int) Math.Ceiling(range / grid.TileSize));
@@ -142,7 +146,7 @@ namespace Content.Server.Power.EntitySystems
continue;
if ((Transform(entity).LocalPosition - xform.LocalPosition).Length() < Math.Min(range, receiver.ReceptionRange))
yield return receiver;
yield return (entity, receiver);
}
}
@@ -161,7 +165,7 @@ namespace Content.Server.Power.EntitySystems
if (provider != null)
{
RaiseLocalEvent(provider.Owner, new ReceiverDisconnectedEvent(receiver), broadcast: false);
RaiseLocalEvent(provider.Owner, new ReceiverDisconnectedEvent((uid, receiver)), broadcast: false);
provider.LinkedReceivers.Remove(receiver);
}
@@ -220,7 +224,7 @@ namespace Content.Server.Power.EntitySystems
RaiseLocalEvent(uid, new ProviderDisconnectedEvent(receiver.Provider), broadcast: false);
if (receiver.Provider != null)
{
RaiseLocalEvent(receiver.Provider.Owner, new ReceiverDisconnectedEvent(receiver), broadcast: false);
RaiseLocalEvent(receiver.Provider.Owner, new ReceiverDisconnectedEvent((uid, receiver)), broadcast: false);
receiver.Provider.LinkedReceivers.Remove(receiver);
}
@@ -229,19 +233,22 @@ namespace Content.Server.Power.EntitySystems
private void TryFindAndSetProvider(ExtensionCableReceiverComponent receiver, TransformComponent? xform = null)
{
if (!receiver.Connectable) return;
var uid = receiver.Owner;
if (!receiver.Connectable)
return;
if (!TryFindAvailableProvider(receiver.Owner, receiver.ReceptionRange, out var provider, xform)) return;
if (!TryFindAvailableProvider(uid, receiver.ReceptionRange, out var provider, xform))
return;
receiver.Provider = provider;
provider.LinkedReceivers.Add(receiver);
RaiseLocalEvent(receiver.Owner, new ProviderConnectedEvent(provider), broadcast: false);
RaiseLocalEvent(provider.Owner, new ReceiverConnectedEvent(receiver), broadcast: false);
RaiseLocalEvent(uid, new ProviderConnectedEvent(provider), broadcast: false);
RaiseLocalEvent(provider.Owner, new ReceiverConnectedEvent((uid, receiver)), broadcast: false);
}
private bool TryFindAvailableProvider(EntityUid owner, float range, [NotNullWhen(true)] out ExtensionCableProviderComponent? foundProvider, TransformComponent? xform = null)
{
if (!Resolve(owner, ref xform) || !_mapManager.TryGetGrid(xform.GridUid, out var grid))
if (!Resolve(owner, ref xform) || !TryComp(xform.GridUid, out MapGridComponent? grid))
{
foundProvider = null;
return false;
@@ -330,9 +337,9 @@ namespace Content.Server.Power.EntitySystems
/// <summary>
/// The <see cref="ExtensionCableReceiverComponent"/> that connected.
/// </summary>
public ExtensionCableReceiverComponent Receiver;
public Entity<ExtensionCableReceiverComponent> Receiver;
public ReceiverConnectedEvent(ExtensionCableReceiverComponent receiver)
public ReceiverConnectedEvent(Entity<ExtensionCableReceiverComponent> receiver)
{
Receiver = receiver;
}
@@ -345,9 +352,9 @@ namespace Content.Server.Power.EntitySystems
/// <summary>
/// The <see cref="ExtensionCableReceiverComponent"/> that disconnected.
/// </summary>
public ExtensionCableReceiverComponent Receiver;
public Entity<ExtensionCableReceiverComponent> Receiver;
public ReceiverDisconnectedEvent(ExtensionCableReceiverComponent receiver)
public ReceiverDisconnectedEvent(Entity<ExtensionCableReceiverComponent> receiver)
{
Receiver = receiver;
}