Files
Aurora.3/code/controllers/subsystems/materials.dm
Fluffy e867030c2e Update MC (#18112)
* sdf

* fsda

* fuck

* fuck2

* toolz

* sdaf

* sdfa

* saf

* sdfa

* sdfa

* sdf

* sdfa

* temp rename

* temp rename

* temp rename

* sdaf

* the pain is immensurable in the land of byond

* the curse of rah

* safd

* sadf

* sadf

* gf

* asf

* fssdfa

* sfd

* sadf

* sfda

* brah

* brah

* it's easier for you to fix this

* ffs

* brah

* brah
2024-01-06 17:03:57 +01:00

53 lines
1.4 KiB
Plaintext

SUBSYSTEM_DEF(materials)
name = "Materials"
init_order = SS_INIT_MISC_FIRST
flags = SS_NO_FIRE
var/list/materials
var/list/materials_by_name
var/list/autolathe_categories
/datum/controller/subsystem/materials/Initialize()
create_material_lists()
return SS_INIT_SUCCESS
/**
* Initialize the lists of materials, if they are not initialized already
*/
/datum/controller/subsystem/materials/proc/create_material_lists()
if(LAZYLEN(materials))
return
materials = list()
materials_by_name = list()
for(var/M in subtypesof(/material))
var/material/material = new M
if(material.name)
materials += material
materials_by_name[lowertext(material.name)] = material
/**
* Returns a `/material` based on its name, or null if the material does not exists
*
* * material_name - A string, lowercase, representing the name of the material
*/
/datum/controller/subsystem/materials/proc/get_material_by_name(var/material_name)
if(!materials_by_name)
create_material_lists()
. = materials_by_name[material_name]
if(!.)
stack_trace("SSmaterials received a request for a material that was not found: [material_name].")
/**
* Returns a `/material` based on its display name
*
* * material_name - A string, lowercase, representing the display name of the material
*/
/datum/controller/subsystem/materials/proc/material_display_name(var/material_name)
var/material/material = get_material_by_name(material_name)
if(material)
return material.display_name