mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-24 05:23:22 +01:00
Materials Repath (#22388)
Soft-ish port of https://github.com/NebulaSS13/Nebula/pull/540. Except we call them singletons. Repaths all materials as singletons instead of datums, and replaces material defines from strings to paths so that we can just run GET_SINGLETON instead of needing to use SSMaterials. This is Step One. This PR has no player-facing changes. changes: - refactor: "Repaths /material to /singleton/material." - refactor: "Replaces all material string defines to path defines, replacing SSmaterials procs w/ GET_SINGLETON instead." - refactor: "Removes all material var edited objects from all maps, adding new presets where necessary." - refactor: "Updates recipes unit test to run all recipes against all material singletons." --------- Signed-off-by: Batrachophreno <Batrochophreno@gmail.com> Co-authored-by: kano-dot <bhutanlikanoxy@gmail.com>
This commit is contained in:
co-authored by
kano-dot
parent
2e61d8fd15
commit
eebb8b971c
@@ -3,30 +3,25 @@ SUBSYSTEM_DEF(materials)
|
||||
init_order = INIT_ORDER_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()
|
||||
create_material_names_list()
|
||||
|
||||
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))
|
||||
/datum/controller/subsystem/materials/proc/create_material_names_list()
|
||||
if(LAZYLEN(materials_by_name))
|
||||
return
|
||||
|
||||
materials = list()
|
||||
materials_by_name = list()
|
||||
|
||||
for(var/M in subtypesof(/material))
|
||||
var/material/material = new M
|
||||
for(var/M in subtypesof(/singleton/material))
|
||||
var/singleton/material/material = new M
|
||||
if(material.name)
|
||||
materials += material
|
||||
materials_by_name[lowertext(material.name)] = material
|
||||
|
||||
/**
|
||||
@@ -36,7 +31,7 @@ SUBSYSTEM_DEF(materials)
|
||||
*/
|
||||
/datum/controller/subsystem/materials/proc/get_material_by_name(var/material_name)
|
||||
if(!materials_by_name)
|
||||
create_material_lists()
|
||||
create_material_names_list()
|
||||
. = materials_by_name[material_name]
|
||||
if(!.)
|
||||
stack_trace("SSmaterials received a request for a material that was not found: [material_name].")
|
||||
@@ -47,6 +42,6 @@ SUBSYSTEM_DEF(materials)
|
||||
* * 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)
|
||||
var/singleton/material/material = get_material_by_name(material_name)
|
||||
if(material)
|
||||
return material.display_name
|
||||
return material
|
||||
|
||||
Reference in New Issue
Block a user