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 System.Linq;
|
||||||
using Content.Server.GameObjects.EntitySystems;
|
using Content.Server.GameObjects.EntitySystems;
|
||||||
using Robust.Shared.GameObjects;
|
using Robust.Shared.GameObjects;
|
||||||
|
using Robust.Shared.Interfaces.GameObjects;
|
||||||
using Robust.Shared.Interfaces.GameObjects.Components;
|
using Robust.Shared.Interfaces.GameObjects.Components;
|
||||||
|
using Robust.Shared.IoC;
|
||||||
|
using Robust.Shared.Log;
|
||||||
using Robust.Shared.Serialization;
|
using Robust.Shared.Serialization;
|
||||||
using Robust.Shared.Utility;
|
using Robust.Shared.Utility;
|
||||||
using Robust.Shared.ViewVariables;
|
using Robust.Shared.ViewVariables;
|
||||||
@@ -18,6 +21,17 @@ namespace Content.Server.GameObjects.Components.Power
|
|||||||
{
|
{
|
||||||
public override string Name => "PowerDevice";
|
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>
|
/// <summary>
|
||||||
/// The method of draw we will try to use to place our load set via component parameter, defaults to using power providers
|
/// The method of draw we will try to use to place our load set via component parameter, defaults to using power providers
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -161,6 +175,8 @@ namespace Content.Server.GameObjects.Components.Power
|
|||||||
node.OnPowernetRegenerate -= PowernetRegenerate;
|
node.OnPowernetRegenerate -= PowernetRegenerate;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Connected = DrawTypes.None;
|
||||||
|
|
||||||
if (Provider != null)
|
if (Provider != null)
|
||||||
{
|
{
|
||||||
Provider = null;
|
Provider = null;
|
||||||
|
|||||||
@@ -269,5 +269,13 @@ namespace Content.Server.GameObjects.Components.Power
|
|||||||
device.Owner, Owner);
|
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