mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-20 03:25:49 +01:00
Defers pipenet and powernet rebuilds upon destruction of pipes and cables so explosions are faster
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user