Parallelize BatteryRampPegSolver (#12351)

This commit is contained in:
Leon Friedrich
2022-11-09 14:43:45 +13:00
committed by GitHub
parent 4a68db4eb2
commit eebb31493c
11 changed files with 546 additions and 250 deletions

View File

@@ -1,10 +1,11 @@
using System.Linq;
using Content.Server.NodeContainer.NodeGroups;
using Content.Server.NodeContainer.Nodes;
using Content.Server.Power.Components;
using Content.Server.Power.EntitySystems;
using Content.Server.Power.Pow3r;
using JetBrains.Annotations;
using Robust.Shared.Utility;
using System.Linq;
namespace Content.Server.Power.NodeGroups
{
@@ -59,6 +60,7 @@ namespace Content.Server.Power.NodeGroups
public void AddSupplier(PowerSupplierComponent supplier)
{
DebugTools.Assert(supplier.NetworkSupply.LinkedNetwork == default);
supplier.NetworkSupply.LinkedNetwork = default;
Suppliers.Add(supplier);
_powerNetSystem?.QueueReconnectPowerNet(this);
@@ -66,6 +68,7 @@ namespace Content.Server.Power.NodeGroups
public void RemoveSupplier(PowerSupplierComponent supplier)
{
DebugTools.Assert(supplier.NetworkSupply.LinkedNetwork == NetworkNode.Id);
supplier.NetworkSupply.LinkedNetwork = default;
Suppliers.Remove(supplier);
_powerNetSystem?.QueueReconnectPowerNet(this);
@@ -73,6 +76,7 @@ namespace Content.Server.Power.NodeGroups
public void AddConsumer(PowerConsumerComponent consumer)
{
DebugTools.Assert(consumer.NetworkLoad.LinkedNetwork == default);
consumer.NetworkLoad.LinkedNetwork = default;
Consumers.Add(consumer);
_powerNetSystem?.QueueReconnectPowerNet(this);
@@ -80,6 +84,7 @@ namespace Content.Server.Power.NodeGroups
public void RemoveConsumer(PowerConsumerComponent consumer)
{
DebugTools.Assert(consumer.NetworkLoad.LinkedNetwork == NetworkNode.Id);
consumer.NetworkLoad.LinkedNetwork = default;
Consumers.Remove(consumer);
_powerNetSystem?.QueueReconnectPowerNet(this);
@@ -88,7 +93,8 @@ namespace Content.Server.Power.NodeGroups
public void AddDischarger(BatteryDischargerComponent discharger)
{
var battery = IoCManager.Resolve<IEntityManager>().GetComponent<PowerNetworkBatteryComponent>(discharger.Owner);
battery.NetworkBattery.LinkedNetworkCharging = default;
DebugTools.Assert(battery.NetworkBattery.LinkedNetworkDischarging == default);
battery.NetworkBattery.LinkedNetworkDischarging = default;
Dischargers.Add(discharger);
_powerNetSystem?.QueueReconnectPowerNet(this);
}
@@ -97,7 +103,10 @@ namespace Content.Server.Power.NodeGroups
{
// Can be missing if the entity is being deleted, not a big deal.
if (IoCManager.Resolve<IEntityManager>().TryGetComponent(discharger.Owner, out PowerNetworkBatteryComponent? battery))
battery.NetworkBattery.LinkedNetworkCharging = default;
{
DebugTools.Assert(battery.NetworkBattery.LinkedNetworkDischarging == NetworkNode.Id);
battery.NetworkBattery.LinkedNetworkDischarging = default;
}
Dischargers.Remove(discharger);
_powerNetSystem?.QueueReconnectPowerNet(this);
@@ -106,6 +115,7 @@ namespace Content.Server.Power.NodeGroups
public void AddCharger(BatteryChargerComponent charger)
{
var battery = IoCManager.Resolve<IEntityManager>().GetComponent<PowerNetworkBatteryComponent>(charger.Owner);
DebugTools.Assert(battery.NetworkBattery.LinkedNetworkCharging == default);
battery.NetworkBattery.LinkedNetworkCharging = default;
Chargers.Add(charger);
_powerNetSystem?.QueueReconnectPowerNet(this);
@@ -115,7 +125,10 @@ namespace Content.Server.Power.NodeGroups
{
// Can be missing if the entity is being deleted, not a big deal.
if (IoCManager.Resolve<IEntityManager>().TryGetComponent(charger.Owner, out PowerNetworkBatteryComponent? battery))
{
DebugTools.Assert(battery.NetworkBattery.LinkedNetworkCharging == NetworkNode.Id);
battery.NetworkBattery.LinkedNetworkCharging = default;
}
Chargers.Remove(charger);
_powerNetSystem?.QueueReconnectPowerNet(this);