Horrendously makes PowerDevice connect to the closest Provider (#326)
* Somewhat decently makes PowerDevice connect to the closest Provider * Fix NullRef on server shutdown * Fix null reference * piss * revert bad fix
This commit is contained in:
committed by
Pieter-Jan Briers
parent
36078382e4
commit
0815050b2a
@@ -3,7 +3,10 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Content.Server.GameObjects.EntitySystems;
|
||||
using Robust.Shared.GameObjects;
|
||||
using Robust.Shared.Interfaces.GameObjects;
|
||||
using Robust.Shared.Interfaces.GameObjects.Components;
|
||||
using Robust.Shared.IoC;
|
||||
using Robust.Shared.Log;
|
||||
using Robust.Shared.Serialization;
|
||||
using Robust.Shared.Utility;
|
||||
using Robust.Shared.ViewVariables;
|
||||
@@ -18,6 +21,17 @@ namespace Content.Server.GameObjects.Components.Power
|
||||
{
|
||||
public override string Name => "PowerDevice";
|
||||
|
||||
public override void Startup()
|
||||
{
|
||||
base.Startup();
|
||||
if (_drawType != DrawTypes.Node)
|
||||
{
|
||||
var componentMgr = IoCManager.Resolve<IComponentManager>();
|
||||
AvailableProviders = componentMgr.GetAllComponents<PowerProviderComponent>().Where(x => x.CanServiceDevice(this)).ToList();
|
||||
ConnectToBestProvider();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The method of draw we will try to use to place our load set via component parameter, defaults to using power providers
|
||||
/// </summary>
|
||||
@@ -161,6 +175,8 @@ namespace Content.Server.GameObjects.Components.Power
|
||||
node.OnPowernetRegenerate -= PowernetRegenerate;
|
||||
}
|
||||
|
||||
Connected = DrawTypes.None;
|
||||
|
||||
if (Provider != null)
|
||||
{
|
||||
Provider = null;
|
||||
|
||||
@@ -269,5 +269,13 @@ namespace Content.Server.GameObjects.Components.Power
|
||||
device.Owner, Owner);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Whether the device can be serviced by this provider.
|
||||
/// </summary>
|
||||
public bool CanServiceDevice(PowerDeviceComponent device)
|
||||
{
|
||||
return (device.Owner.Transform.WorldPosition - Owner.Transform.WorldPosition).LengthSquared <= _range;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user