mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-21 03:55:05 +01:00
Global DatumRefLists cleanup x1
Changelog: - Switched surgeries to use init_subtypes() - Updated init_subtypes() - Made the species race_key handling a bit less line-taking (uses pre-increment now) - Added new proc, init_datum_subtypes, which takes 4 arguments- init_datum_subtypes(prototype, list/L, list/pexempt, assocvar) prototype is a path which will be run through subtypesof list/L is the list that new datums will be added to pexempt is subtracted from the 'subtypesof(prototype)' (exempting them) assocvar is the var to associate by in the list- uses vars[] lookup Jobs, superheroes, and languages now use this proc.
This commit is contained in:
@@ -15,32 +15,12 @@
|
||||
//socks
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/socks, socks_list, socks_m, socks_f)
|
||||
|
||||
|
||||
|
||||
var/list/paths
|
||||
//Surgery Steps - Initialize all /datum/surgery_step into a list
|
||||
paths = subtypesof(/datum/surgery_step)
|
||||
for(var/T in paths)
|
||||
var/datum/surgery_step/S = new T
|
||||
surgery_steps += S
|
||||
init_subtypes(/datum/surgery_step, surgery_steps)
|
||||
sort_surgeries()
|
||||
|
||||
//List of job. I can't believe this was calculated multiple times per tick!
|
||||
paths = subtypesof(/datum/job) -list(/datum/job/ai,/datum/job/cyborg)
|
||||
for(var/T in paths)
|
||||
var/datum/job/J = new T
|
||||
joblist[J.title] = J
|
||||
|
||||
paths = subtypesof(/datum/superheroes)
|
||||
for(var/T in paths)
|
||||
var/datum/superheroes/S = new T
|
||||
all_superheroes[S.name] = S
|
||||
|
||||
//Languages and species.
|
||||
paths = subtypesof(/datum/language)
|
||||
for(var/T in paths)
|
||||
var/datum/language/L = new T
|
||||
all_languages[L.name] = L
|
||||
init_datum_subtypes(/datum/job, joblist, list(/datum/job/ai, /datum/job/cyborg), "title")
|
||||
init_datum_subtypes(/datum/superheroes, all_superheroes, null, "name")
|
||||
init_datum_subtypes(/datum/language, all_languages, null, "name")
|
||||
|
||||
for (var/language_name in all_languages)
|
||||
var/datum/language/L = all_languages[language_name]
|
||||
@@ -49,19 +29,17 @@
|
||||
language_keys[".[lowertext(L.key)]"] = L
|
||||
language_keys["#[lowertext(L.key)]"] = L
|
||||
|
||||
var/list/paths = subtypesof(/datum/species)
|
||||
var/rkey = 0
|
||||
paths = subtypesof(/datum/species)
|
||||
for(var/T in paths)
|
||||
rkey++
|
||||
var/datum/species/S = new T
|
||||
S.race_key = rkey //Used in mob icon caching.
|
||||
S.race_key = ++rkey //Used in mob icon caching.
|
||||
all_species[S.name] = S
|
||||
|
||||
if(S.flags & IS_WHITELISTED)
|
||||
whitelisted_species += S.name
|
||||
|
||||
init_subtypes(/datum/table_recipe, table_recipes)
|
||||
|
||||
return 1
|
||||
|
||||
/* // Uncomment to debug chemical reaction list.
|
||||
@@ -80,8 +58,19 @@
|
||||
//creates every subtype of prototype (excluding prototype) and adds it to list L.
|
||||
//if no list/L is provided, one is created.
|
||||
/proc/init_subtypes(prototype, list/L)
|
||||
if(!istype(L)) L = list()
|
||||
for(var/path in typesof(prototype))
|
||||
if(path == prototype) continue
|
||||
L += new path()
|
||||
return L
|
||||
if(!istype(L)) L = list()
|
||||
for(var/path in subtypesof(prototype))
|
||||
L += new path()
|
||||
return L
|
||||
|
||||
/proc/init_datum_subtypes(prototype, list/L, list/pexempt, assocvar)
|
||||
if(!istype(L)) L = list()
|
||||
for(var/path in subtypesof(prototype) - pexempt)
|
||||
var/datum/D = new path()
|
||||
if(istype(D))
|
||||
var/assoc
|
||||
if(D.vars["[assocvar]"]) //has the var
|
||||
assoc = D.vars["[assocvar]"] //access value of var
|
||||
if(assoc) //value gotten
|
||||
L["[assoc]"] = D //put in association
|
||||
return L
|
||||
Reference in New Issue
Block a user