Controllers

This commit is contained in:
Poojawa
2018-09-11 02:04:10 -05:00
parent 07cb9572bd
commit 09512a6001
37 changed files with 522 additions and 447 deletions

View File

@@ -50,6 +50,11 @@ PROCESSING_SUBSYSTEM_DEF(circuit)
/obj/item/electronic_assembly/simple,
/obj/item/electronic_assembly/hook,
/obj/item/electronic_assembly/pda,
/obj/item/electronic_assembly/small/default,
/obj/item/electronic_assembly/small/cylinder,
/obj/item/electronic_assembly/small/scanner,
/obj/item/electronic_assembly/small/hook,
/obj/item/electronic_assembly/small/box,
/obj/item/electronic_assembly/medium/default,
/obj/item/electronic_assembly/medium/box,
/obj/item/electronic_assembly/medium/clam,
@@ -68,6 +73,7 @@ PROCESSING_SUBSYSTEM_DEF(circuit)
/obj/item/electronic_assembly/drone/medbot,
/obj/item/electronic_assembly/drone/genbot,
/obj/item/electronic_assembly/drone/android,
/obj/item/electronic_assembly/wallmount/tiny,
/obj/item/electronic_assembly/wallmount/light,
/obj/item/electronic_assembly/wallmount,
/obj/item/electronic_assembly/wallmount/heavy
@@ -83,3 +89,4 @@ PROCESSING_SUBSYSTEM_DEF(circuit)
/obj/item/card/data/full_color,
/obj/item/card/data/disk
)

View File

@@ -1,29 +1,5 @@
SUBSYSTEM_DEF(obj)
PROCESSING_SUBSYSTEM_DEF(obj)
name = "Objects"
priority = FIRE_PRIORITY_OBJ
flags = SS_NO_INIT
var/list/processing = list()
var/list/currentrun = list()
/datum/controller/subsystem/obj/stat_entry()
..("P:[processing.len]")
/datum/controller/subsystem/obj/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/controller/subsystem/obj/Recover()
processing = SSobj.processing
wait = 20

View File

@@ -22,12 +22,14 @@ SUBSYSTEM_DEF(processing)
while(current_run.len)
var/datum/thing = current_run[current_run.len]
current_run.len--
if(QDELETED(thing) || thing.process(wait) == PROCESS_KILL)
if(QDELETED(thing))
processing -= thing
else if(thing.process(wait) == PROCESS_KILL)
// fully stop so that a future START_PROCESSING will work
STOP_PROCESSING(src, thing)
if (MC_TICK_CHECK)
return
/datum/proc/process()
set waitfor = 0
STOP_PROCESSING(SSobj, src)
return 0
return PROCESS_KILL

View File

@@ -15,7 +15,7 @@ PROCESSING_SUBSYSTEM_DEF(quirks)
/datum/controller/subsystem/processing/quirks/Initialize(timeofday)
if(!quirks.len)
SetupQuirks()
..()
return ..()
/datum/controller/subsystem/processing/quirks/proc/SetupQuirks()
for(var/V in subtypesof(/datum/quirk))

View File

@@ -1,37 +0,0 @@
//Used to process and handle roundstart trait datums
//Trait datums are separate from trait strings:
// - Trait strings are used for faster checking in code
// - Trait datums are stored and hold different effects, as well as being a vector for applying trait string
PROCESSING_SUBSYSTEM_DEF(traits)
name = "Traits"
init_order = INIT_ORDER_TRAITS
flags = SS_BACKGROUND
wait = 10
runlevels = RUNLEVEL_GAME
var/list/traits = list() //Assoc. list of all roundstart trait datum types; "name" = /path/
var/list/trait_points = list() //Assoc. list of trait names and their "point cost"; positive numbers are good traits, and negative ones are bad
var/list/trait_objects = list() //A list of all trait objects in the game, since some may process
/datum/controller/subsystem/processing/traits/Initialize(timeofday)
if(!traits.len)
SetupTraits()
..()
/datum/controller/subsystem/processing/traits/proc/SetupTraits()
for(var/V in subtypesof(/datum/trait))
var/datum/trait/T = V
traits[initial(T.name)] = T
trait_points[initial(T.name)] = initial(T.value)
/datum/controller/subsystem/processing/traits/proc/AssignTraits(mob/living/user, client/cli, spawn_effects)
GenerateTraits(cli)
if(user && cli && cli.prefs.character_traits)
for(var/V in cli.prefs.character_traits)
user.add_trait_datum(V, spawn_effects)
/datum/controller/subsystem/processing/traits/proc/GenerateTraits(client/user)
if(user && user.prefs && user.prefs.character_traits)
if(user.prefs.character_traits.len)
return
user.prefs.character_traits = user.prefs.all_traits