mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2025-12-24 00:51:26 +00:00
58 lines
1.6 KiB
Plaintext
58 lines
1.6 KiB
Plaintext
var/datum/controller/subsystem/materials/SSmaterials
|
|
|
|
/datum/controller/subsystem/materials
|
|
name = "Materials"
|
|
init_order = SS_INIT_MISC_FIRST
|
|
flags = SS_NO_FIRE
|
|
|
|
var/list/materials
|
|
var/list/materials_by_name
|
|
|
|
var/list/autolathe_recipes
|
|
var/list/autolathe_categories
|
|
|
|
/datum/controller/subsystem/materials/New()
|
|
NEW_SS_GLOBAL(SSmaterials)
|
|
|
|
/datum/controller/subsystem/materials/Initialize()
|
|
create_material_lists()
|
|
. = ..()
|
|
|
|
/**
|
|
* 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
|