//Used to process objects. Fires once every second. SUBSYSTEM_DEF(processing) name = "Processing" priority = FIRE_PRIORITY_PROCESS flags = SS_BACKGROUND|SS_POST_FIRE_TIMING|SS_NO_INIT wait = 10 var/stat_tag = "P" //Used for logging var/list/processing = list() var/list/currentrun = list() /datum/controller/subsystem/processing/stat_entry() ..("[stat_tag]:[processing.len]") /datum/controller/subsystem/processing/fire(resumed = 0) if (!resumed) currentrun = processing.Copy() //cache for sanic speed (lists are references anyways) var/list/current_run = currentrun while(current_run.len) var/datum/thing = current_run[current_run.len] current_run.len-- if(QDELETED(thing) || thing.process(wait) == PROCESS_KILL) processing -= thing if (MC_TICK_CHECK) return /datum/var/isprocessing = FALSE /datum/proc/process() set waitfor = 0 STOP_PROCESSING(SSobj, src) return 0