Defers pipenet and powernet rebuilds upon destruction of pipes and cables so explosions are faster

This commit is contained in:
Tastyfish
2016-04-29 19:21:47 -04:00
parent b8d9108c9c
commit 3b59d2cd15
35 changed files with 199 additions and 163 deletions
+17 -4
View File
@@ -8,7 +8,7 @@
/datum/controller/process/machinery/statProcess()
..()
stat(null, "[machines.len] machines")
stat(null, "[powernets.len] powernets")
stat(null, "[powernets.len] powernets, [deferred_powernet_rebuilds.len] deferred")
/datum/controller/process/machinery/doWork()
process_sort()
@@ -41,6 +41,19 @@
SCHECK_EVERY(100)
/datum/controller/process/machinery/proc/process_power()
for(last_object in deferred_powernet_rebuilds)
var/obj/O = last_object
if(istype(O) && isnull(O.gcDestroyed))
try
var/datum/powernet/newPN = new()// creates a new powernet...
propagate_network(O, newPN)//... and propagates it to the other side of the cable
catch(var/exception/e)
catchException(e, O)
SCHECK
else
catchBadType(O)
deferred_powernet_rebuilds -= O
for(last_object in powernets)
var/datum/powernet/powerNetwork = last_object
if(istype(powerNetwork) && isnull(powerNetwork.gcDestroyed))
@@ -49,9 +62,9 @@
catch(var/exception/e)
catchException(e, powerNetwork)
SCHECK
continue
powernets.Remove(powerNetwork)
else
catchBadType(powerNetwork)
powernets -= powerNetwork
/datum/controller/process/machinery/proc/process_power_drain()
// Currently only used by powersinks. These items get priority processed before machinery
+13 -2
View File
@@ -5,9 +5,21 @@
/datum/controller/process/pipenet/statProcess()
..()
stat(null, "[pipe_networks.len] pipe nets")
stat(null, "[pipe_networks.len] pipe nets, [deferred_pipenet_rebuilds.len] deferred")
/datum/controller/process/pipenet/doWork()
for(last_object in deferred_pipenet_rebuilds)
var/obj/machinery/atmospherics/M = last_object
if(istype(M) && isnull(M.gcDestroyed))
try
M.build_network()
catch(var/exception/e)
catchException(e, M)
SCHECK
else
catchBadType(M)
deferred_pipenet_rebuilds -= M
for(last_object in pipe_networks)
var/datum/pipeline/pipeNetwork = last_object
if(istype(pipeNetwork) && isnull(pipeNetwork.gcDestroyed))
@@ -16,7 +28,6 @@
catch(var/exception/e)
catchException(e, pipeNetwork)
SCHECK
continue
else
catchBadType(pipeNetwork)
pipe_networks -= pipeNetwork