Files
Bubberstation/code/controllers/subsystem/processing/objects.dm
2017-01-26 11:47:28 +01:00

83 lines
2.0 KiB
Plaintext

var/datum/subsystem/objects/SSobj
/datum/var/isprocessing = 0
/datum/proc/process()
set waitfor = 0
STOP_PROCESSING(SSobj, src)
return 0
/datum/subsystem/objects
name = "Objects"
init_order = 12
priority = 40
var/initialized = FALSE
var/old_initialized
var/list/atom_spawners = list()
var/list/processing = list()
var/list/currentrun = list()
/datum/subsystem/objects/New()
NEW_SS_GLOBAL(SSobj)
/datum/subsystem/objects/Initialize(timeofdayl)
fire_overlay.appearance_flags = RESET_COLOR
setupGenetics() //to set the mutations' place in structural enzymes, so monkey.initialize() knows where to put the monkey mutation.
trigger_atom_spawners()
for(var/thing in world)
var/atom/A = thing
A.Initialize(TRUE)
CHECK_TICK
initialized = TRUE
. = ..()
/datum/subsystem/objects/proc/map_loader_begin()
old_initialized = initialized
initialized = FALSE
/datum/subsystem/objects/proc/map_loader_stop()
initialized = old_initialized
/datum/subsystem/objects/proc/trigger_atom_spawners(zlevel, ignore_z=FALSE)
for(var/V in atom_spawners)
var/atom/A = V
if (!ignore_z && (zlevel && A.z != zlevel))
continue
A.spawn_atom_to_world()
/datum/subsystem/objects/stat_entry()
..("P:[processing.len]")
/datum/subsystem/objects/fire(resumed = 0)
if (!resumed)
src.currentrun = processing.Copy()
//cache for sanic speed (lists are references anyways)
var/list/currentrun = src.currentrun
while(currentrun.len)
var/datum/thing = currentrun[currentrun.len]
currentrun.len--
if(thing)
thing.process(wait)
else
SSobj.processing -= thing
if (MC_TICK_CHECK)
return
/datum/subsystem/objects/proc/setup_template_objects(list/objects)
trigger_atom_spawners(0, ignore_z=TRUE)
if(initialized)
for(var/A in objects)
var/atom/B = A
B.Initialize(TRUE)
/datum/subsystem/objects/Recover()
initialized = SSobj.initialized
old_initialized = SSobj.old_initialized
if (istype(SSobj.atom_spawners))
atom_spawners = SSobj.atom_spawners
if (istype(SSobj.processing))
processing = SSobj.processing