From 363bfb595f5f143fd38bdd909e3f4926e2e15440 Mon Sep 17 00:00:00 2001 From: Metal Gear Sloth Date: Thu, 3 Sep 2020 19:35:09 +1000 Subject: [PATCH] Reduce power allocations It was the 2nd and 3rd highest traffic for memory allocs. --- .../NodeContainer/NodeGroups/ApcNetNodeGroup.cs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/Content.Server/GameObjects/Components/NodeContainer/NodeGroups/ApcNetNodeGroup.cs b/Content.Server/GameObjects/Components/NodeContainer/NodeGroups/ApcNetNodeGroup.cs index 8e1d103c15..4b6a11a870 100644 --- a/Content.Server/GameObjects/Components/NodeContainer/NodeGroups/ApcNetNodeGroup.cs +++ b/Content.Server/GameObjects/Components/NodeContainer/NodeGroups/ApcNetNodeGroup.cs @@ -35,8 +35,6 @@ namespace Content.Server.GameObjects.Components.NodeContainer.NodeGroups [ViewVariables] private int TotalReceivers => _providerReceivers.SelectMany(kvp => kvp.Value).Count(); - private IEnumerable AvailableBatteries => _apcBatteries.Where(kvp => kvp.Key.MainBreakerEnabled).Select(kvp => kvp.Value); - public static readonly IApcNet NullNet = new NullApcNet(); #region IApcNet Methods @@ -88,8 +86,11 @@ namespace Content.Server.GameObjects.Components.NodeContainer.NodeGroups { var totalCharge = 0.0; var totalMaxCharge = 0; - foreach (var battery in AvailableBatteries) + foreach (var (apc, battery) in _apcBatteries) { + if (!apc.MainBreakerEnabled) + continue; + totalCharge += battery.CurrentCharge; totalMaxCharge += battery.MaxCharge; } @@ -102,8 +103,11 @@ namespace Content.Server.GameObjects.Components.NodeContainer.NodeGroups private bool TryUsePower(float neededCharge) { - foreach (var battery in AvailableBatteries) + foreach (var (apc, battery) in _apcBatteries) { + if (!apc.MainBreakerEnabled) + continue; + if (battery.TryUseCharge(neededCharge)) //simplification - all power needed must come from one battery { return true;