diff --git a/code/modules/research/rdconsole_tgui.dm b/code/modules/research/rdconsole_tgui.dm index 7a6d540b8d..6d7d0fb8bf 100644 --- a/code/modules/research/rdconsole_tgui.dm +++ b/code/modules/research/rdconsole_tgui.dm @@ -42,6 +42,9 @@ data["busy_msg"] = busy_msg data["search"] = search + data["builder_page"] = builder_page + data["design_page"] = design_page + data["info"] = null if(!locked && !busy_msg) data["info"] = list( diff --git a/code/modules/research/research.dm b/code/modules/research/research.dm index bb0937378d..c338fba128 100644 --- a/code/modules/research/research.dm +++ b/code/modules/research/research.dm @@ -43,6 +43,8 @@ research holder datum. ** Master Types ** ** Includes all the helper procs and basic tech processing. ** ***************************************************************/ +GLOBAL_LIST_INIT(tech_levels, list()) +GLOBAL_LIST_INIT(design_datums, list()) /datum/research //Holder for all the existing, archived, and known tech. Individual to console. var/list/known_tech = list() //List of locally known tech. Datum/tech go here. @@ -50,19 +52,26 @@ research holder datum. var/list/known_designs = list() //List of available designs. /datum/research/New() //Insert techs into possible_tech here. Known_tech automatically updated. - for(var/T in typesof(/datum/tech) - /datum/tech) - known_tech += new T(src) - for(var/D in typesof(/datum/design) - /datum/design) - possible_designs += new D(src) -// generate_integrated_circuit_designs() + if(!LAZYLEN(GLOB.tech_levels)) + for(var/T in typesof(/datum/tech) - /datum/tech) + GLOB.tech_levels += new T + if(!LAZYLEN(GLOB.design_datums)) + for(var/T in typesof(/datum/design) - /datum/design) + GLOB.design_datums += new T + + known_tech = GLOB.tech_levels + possible_designs = GLOB.design_datums RefreshResearch() /datum/research/techonly - /datum/research/techonly/New() - for(var/T in typesof(/datum/tech) - /datum/tech) - known_tech += new T(src) - RefreshResearch() + . = ..() + possible_designs = list() + known_designs = list() + +/datum/research/techonly/RefreshResearch() + . = ..() + known_designs = list() // Just in case //Checks to see if design has all the required pre-reqs. //Input: datum/design; Output: 0/1 (false/true) @@ -117,21 +126,6 @@ research holder datum. var/datum/tech/check_tech = T if(initial(check_tech.id) == ID) return initial(check_tech.name) -/* -/datum/research/proc/generate_integrated_circuit_designs() - spawn(2 SECONDS) // So the list has time to initialize. - for(var/obj/item/integrated_circuit/IC in all_integrated_circuits) - if(IC.spawn_flags & IC_SPAWN_RESEARCH) - var/datum/design/D = new /datum/design/circuit(src) - D.name = "Custom circuitry \[[IC.category_text]\] ([IC.name])" - D.id = "ic-[lowertext(IC.name)]" - if(IC.origin_tech && IC.origin_tech.len) - D.req_tech = IC.origin_tech.Copy() - else - D.req_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2) - D.build_path = IC.type - possible_designs += D -*/ /*************************************************************** ** Technology Datums ** diff --git a/tgui/packages/tgui/interfaces/ResearchConsole.js b/tgui/packages/tgui/interfaces/ResearchConsole.js index 6d797c8d47..7a7e2c021b 100644 --- a/tgui/packages/tgui/interfaces/ResearchConsole.js +++ b/tgui/packages/tgui/interfaces/ResearchConsole.js @@ -36,11 +36,26 @@ const ResearchConsoleViewResearch = (props, context) => { ); }; +const PaginationTitle = (props, context) => { + const { data } = useBackend(context); + + const { + title, + target, + } = props; + + let page = data[target]; + if (typeof page === "number") { + return title + " - Page " + (page + 1); + } + + return title; +}; + const PaginationChevrons = (props, context) => { const { act } = useBackend(context); const { - length, target, } = props; @@ -67,14 +82,14 @@ const ResearchConsoleViewDesigns = (props, context) => { } = data; return ( -
} buttons={ - { || null} + { || null} }> { if (saveDialog) { return ( -
-