From e87c5919272a5bc56e8fda723ad9349b5ee374a6 Mon Sep 17 00:00:00 2001 From: Tad Hardesty Date: Tue, 26 Dec 2017 22:04:52 -0800 Subject: [PATCH 1/2] Maybe make R&D console icons load faster (#33749) * Maybe make design icons load faster * Move design icon generation to asset_cache file --- code/modules/client/asset_cache.dm | 36 ++++++++++++++++++++++++++++++ code/modules/research/designs.dm | 36 ++---------------------------- 2 files changed, 38 insertions(+), 34 deletions(-) diff --git a/code/modules/client/asset_cache.dm b/code/modules/client/asset_cache.dm index 3704494050..28875e3dc2 100644 --- a/code/modules/client/asset_cache.dm +++ b/code/modules/client/asset_cache.dm @@ -372,3 +372,39 @@ GLOBAL_LIST_EMPTY(asset_datums) var/meter = icon('icons/obj/atmospherics/pipes/simple.dmi', "meterX", SOUTH, frame, movement_states) if(meter) register_asset(sanitize_filename("[prefix].south.meterX.png"), fcopy_rsc(meter)) + +// Representative icons for each research design +/datum/asset/simple/research_designs/register() + for (var/path in subtypesof(/datum/design)) + var/datum/design/D = path + + // construct the icon and slap it into the resource cache + var/atom/item = initial(D.build_path) + if (!ispath(item, /atom)) + // biogenerator outputs to beakers by default + if (initial(D.build_type) & BIOGENERATOR) + item = /obj/item/reagent_containers/glass/beaker/large + else + continue // shouldn't happen, but just in case + + // circuit boards become their resulting machines or computers + if (ispath(item, /obj/item/circuitboard)) + var/obj/item/circuitboard/C = item + var/machine = initial(C.build_path) + if (machine) + item = machine + var/icon_file = initial(item.icon) + var/icon/I = icon(icon_file, initial(item.icon_state), SOUTH) + + // computers (and snowflakes) get their screen and keyboard sprites + if (ispath(item, /obj/machinery/computer) || ispath(item, /obj/machinery/power/solar_control)) + var/obj/machinery/computer/C = item + var/screen = initial(C.icon_screen) + var/keyboard = initial(C.icon_keyboard) + if (screen) + I.Blend(icon(icon_file, screen, SOUTH), ICON_OVERLAY) + if (keyboard) + I.Blend(icon(icon_file, keyboard, SOUTH), ICON_OVERLAY) + + assets["design_[initial(D.id)].png"] = I + return ..() diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index 0af1650d42..b3b0f8df99 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -51,40 +51,8 @@ other types of metals and chemistry for reagents). return ..() /datum/design/proc/icon_html(client/user) - if (!icon_cache) - // construct the icon and slap it into the resource cache - var/atom/item = build_path - if (!ispath(item, /atom)) - // biogenerator outputs to beakers by default - if (build_type & BIOGENERATOR) - item = /obj/item/reagent_containers/glass/beaker/large - else - return // shouldn't happen, but just in case - - // circuit boards become their resulting machines or computers - if (ispath(item, /obj/item/circuitboard)) - var/obj/item/circuitboard/C = item - var/machine = initial(C.build_path) - if (machine) - item = machine - var/icon_file = initial(item.icon) - var/icon/I = icon(icon_file, initial(item.icon_state), SOUTH) - - // computers (and snowflakes) get their screen and keyboard sprites - if (ispath(item, /obj/machinery/computer) || ispath(item, /obj/machinery/power/solar_control)) - var/obj/machinery/computer/C = item - var/screen = initial(C.icon_screen) - var/keyboard = initial(C.icon_keyboard) - if (screen) - I.Blend(icon(icon_file, screen, SOUTH), ICON_OVERLAY) - if (keyboard) - I.Blend(icon(icon_file, keyboard, SOUTH), ICON_OVERLAY) - - // based on icon2html - icon_cache = "[generate_asset_name(I)].png" - register_asset(icon_cache, I) - send_asset(user, icon_cache, FALSE) - return "" + send_asset(user, "design_[id].png", FALSE) + return "" //////////////////////////////////////// //Disks for transporting design datums//