From e30e461843feeb9616e5fa3c9a335ac8531b034b Mon Sep 17 00:00:00 2001 From: Atlantis Date: Thu, 20 Aug 2015 22:23:45 +0200 Subject: [PATCH] Corrects supermatter fluctuations v2 - Better implementation of #10714 - This fix corrects the issue by merging pipenet process to machinery process to ensure order of execution doesn't change randomly. This shouldn't have any performance effect as pipenet process doesn't have much work anyway (not to be confused with air process that runs ZAS, this one only called process() on each pipenet). Screenshot of profiler (pipenet process highlighted, idle server with one player, engine set up) http://i.imgur.com/ecCg6rS.png - Unlike previous fix, this does not come with various game-affecting side effects, players shouldn't see a change (except for the fact that odd fluctuations introduced by devmerge disappear). Previous fix buffed engine output as side effect, and caused one TEG to generate considerably more than second TEG, which caused TEGs to begin sparking despite overall output being below 1MW. --- baystation12.dme | 1 - code/controllers/Processes/machinery.dm | 9 +++++++++ code/controllers/Processes/pipenet.dm | 15 --------------- 3 files changed, 9 insertions(+), 16 deletions(-) delete mode 100644 code/controllers/Processes/pipenet.dm diff --git a/baystation12.dme b/baystation12.dme index e0333a2e08..d151796b68 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -108,7 +108,6 @@ #include "code\controllers\Processes\mob.dm" #include "code\controllers\Processes\nanoui.dm" #include "code\controllers\Processes\obj.dm" -#include "code\controllers\Processes\pipenet.dm" #include "code\controllers\Processes\Shuttle.dm" #include "code\controllers\Processes\sun.dm" #include "code\controllers\Processes\supply.dm" diff --git a/code/controllers/Processes/machinery.dm b/code/controllers/Processes/machinery.dm index b84dfaf943..b7b7923c8f 100644 --- a/code/controllers/Processes/machinery.dm +++ b/code/controllers/Processes/machinery.dm @@ -6,6 +6,7 @@ /datum/controller/process/machinery/doWork() internal_sort() + internal_process_pipenets() internal_process_machinery() internal_process_power() internal_process_power_drain() @@ -57,6 +58,14 @@ processing_power_items.Remove(I) scheck() +/datum/controller/process/machinery/proc/internal_process_pipenets() + for(var/datum/pipe_network/pipeNetwork in pipe_networks) + if(istype(pipeNetwork) && !pipeNetwork.disposed) + pipeNetwork.process() + scheck() + continue + + pipe_networks.Remove(pipeNetwork) /datum/controller/process/machinery/getStatName() return ..()+"([machines.len])" diff --git a/code/controllers/Processes/pipenet.dm b/code/controllers/Processes/pipenet.dm deleted file mode 100644 index 8a5d6a22ca..0000000000 --- a/code/controllers/Processes/pipenet.dm +++ /dev/null @@ -1,15 +0,0 @@ -/datum/controller/process/pipenet/setup() - name = "pipenet" - schedule_interval = 20 // every 2 seconds - -/datum/controller/process/pipenet/doWork() - for(var/datum/pipe_network/pipeNetwork in pipe_networks) - if(istype(pipeNetwork) && !pipeNetwork.disposed) - pipeNetwork.process() - scheck() - continue - - pipe_networks.Remove(pipeNetwork) - -/datum/controller/process/pipenet/getStatName() - return ..()+"([pipe_networks.len])" \ No newline at end of file