controllers: make process_machines more profilable

Splits process_machines() into 3 procs for its actions, trying to
figure out which is causing the lagspikes.

Signed-off-by: Mloc-Hibernia <colmohici@gmail.com>
This commit is contained in:
Mloc-Hibernia
2014-04-30 09:56:55 +00:00
parent d709c3c9c5
commit 2040c5a720

View File

@@ -254,6 +254,10 @@ datum/controller/game_controller/proc/process_diseases()
active_diseases.Cut(i,i+1) active_diseases.Cut(i,i+1)
datum/controller/game_controller/proc/process_machines() datum/controller/game_controller/proc/process_machines()
process_machines_process()
process_machines_power()
process_machines_rebuild()
datum/controller/game_controller/proc/process_machines_process()
var/i = 1 var/i = 1
while(i<=machines.len) while(i<=machines.len)
var/obj/machinery/Machine = machines[i] var/obj/machinery/Machine = machines[i]
@@ -265,7 +269,8 @@ datum/controller/game_controller/proc/process_machines()
continue continue
machines.Cut(i,i+1) machines.Cut(i,i+1)
i=1 datum/controller/game_controller/proc/process_machines_power()
var/i=1
while(i<=active_areas.len) while(i<=active_areas.len)
var/area/A = active_areas[i] var/area/A = active_areas[i]
if(A.powerupdate && A.master == A) if(A.powerupdate && A.master == A)
@@ -283,7 +288,7 @@ datum/controller/game_controller/proc/process_machines()
A.powerupdate = 0 A.powerupdate = 0
active_areas.Cut(i,i+1) active_areas.Cut(i,i+1)
datum/controller/game_controller/proc/process_machines_rebuild()
if(controller_iteration % 150 == 0 || rebuild_active_areas) //Every 300 seconds we retest every area/machine if(controller_iteration % 150 == 0 || rebuild_active_areas) //Every 300 seconds we retest every area/machine
for(var/area/A in all_areas) for(var/area/A in all_areas)
if(A == A.master) if(A == A.master)
@@ -292,8 +297,6 @@ datum/controller/game_controller/proc/process_machines()
rebuild_active_areas = 0 rebuild_active_areas = 0
datum/controller/game_controller/proc/process_objects() datum/controller/game_controller/proc/process_objects()
var/i = 1 var/i = 1
while(i<=processing_objects.len) while(i<=processing_objects.len)