From 71461201ca4b29e94131deffe882776016c2290e Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Thu, 14 Aug 2025 16:57:28 +0200 Subject: [PATCH] move the spoiler (#18245) * move the spoiler * snrrrk * keep track of generations --- code/controllers/subsystems/asset_loading.dm | 3 ++- code/game/atom/_atom.dm | 3 +-- code/modules/asset_cache/asset_list.dm | 2 +- .../asset_cache/iconforge/batched_spritesheet.dm | 4 +++- code/modules/examine/examine.dm | 15 ++++++++++++--- 5 files changed, 19 insertions(+), 8 deletions(-) diff --git a/code/controllers/subsystems/asset_loading.dm b/code/controllers/subsystems/asset_loading.dm index b949afff746..a4a539ccf20 100644 --- a/code/controllers/subsystems/asset_loading.dm +++ b/code/controllers/subsystems/asset_loading.dm @@ -7,6 +7,7 @@ SUBSYSTEM_DEF(asset_loading) flags = SS_NO_INIT runlevels = RUNLEVEL_LOBBY|RUNLEVELS_DEFAULT var/list/datum/asset/generate_queue = list() + var/assets_generating = 0 var/last_queue_len = 0 /datum/controller/subsystem/asset_loading/fire(resumed) @@ -23,7 +24,7 @@ SUBSYSTEM_DEF(asset_loading) return // We just emptied the queue - if(last_queue_len && !length(generate_queue)) + if(last_queue_len && !length(generate_queue) && !assets_generating) // Clean up cached icons, freeing memory. rustg_iconforge_cleanup() diff --git a/code/game/atom/_atom.dm b/code/game/atom/_atom.dm index 2a43441713b..acdc9fca3b5 100644 --- a/code/game/atom/_atom.dm +++ b/code/game/atom/_atom.dm @@ -209,8 +209,7 @@ borg = span_boldnotice("\The [G]") + span_notice(" can hold this.") break - var/examine_text = replacetext(get_examine_desc(), "||", "") - var/list/output = list("[icon2html(src,user.client)] That's [f_name] [suffix] [borg]", examine_text) + var/list/output = list("[icon2html(src,user.client)] That's [f_name] [suffix] [borg]", get_examine_desc()) SEND_SIGNAL(src, COMSIG_PARENT_EXAMINE, user, output) return output diff --git a/code/modules/asset_cache/asset_list.dm b/code/modules/asset_cache/asset_list.dm index e5ede4a4052..6ae86ac3db4 100644 --- a/code/modules/asset_cache/asset_list.dm +++ b/code/modules/asset_cache/asset_list.dm @@ -271,7 +271,7 @@ GLOBAL_LIST_EMPTY(asset_datums) SSasset_loading.dequeue_asset(src) /datum/asset/spritesheet/queued_generation() - INVOKE_ASYNC(src, PROC_REF(realize_spritesheets), TRUE) + realize_spritesheets(yield = TRUE) /datum/asset/spritesheet/ensure_ready() if(!fully_generated) diff --git a/code/modules/asset_cache/iconforge/batched_spritesheet.dm b/code/modules/asset_cache/iconforge/batched_spritesheet.dm index f50370fb22c..58d815b7820 100644 --- a/code/modules/asset_cache/iconforge/batched_spritesheet.dm +++ b/code/modules/asset_cache/iconforge/batched_spritesheet.dm @@ -193,9 +193,11 @@ if(yield || !isnull(job_id)) if(isnull(job_id)) getting_genned = TRUE + SSasset_loading.assets_generating++ job_id = rustg_iconforge_generate_async("data/spritesheets/", name, entries_json, do_cache, FALSE, TRUE) UNTIL((data_out = rustg_iconforge_check(job_id)) != RUSTG_JOB_NO_RESULTS_YET) getting_genned = FALSE + SSasset_loading.assets_generating-- else data_out = rustg_iconforge_generate("data/spritesheets/", name, entries_json, do_cache, FALSE, TRUE) if (data_out == RUSTG_JOB_ERROR) @@ -237,7 +239,7 @@ CRASH("Error during spritesheet generation for [name]: [data["error"]]") /datum/asset/spritesheet_batched/queued_generation() - realize_spritesheets(yield = TRUE) + INVOKE_ASYNC(src, PROC_REF(realize_spritesheets), TRUE) // The proc is called inside a subsystem and waits with an UNTIL /datum/asset/spritesheet_batched/ensure_ready() if(!fully_generated) diff --git a/code/modules/examine/examine.dm b/code/modules/examine/examine.dm index d9fc06a94e3..def3dc2d82d 100644 --- a/code/modules/examine/examine.dm +++ b/code/modules/examine/examine.dm @@ -96,20 +96,29 @@ //do pref check here var/desc_info_temp = A.get_description_info() if(desc_info_temp) - . += span_details("â„šī¸ | Information",desc_info_temp) + . += span_details("â„šī¸ | Information", desc_info_temp) var/fluff_info_temp = A.get_description_fluff() if(fluff_info_temp && fluff_info_temp != "") var/title = "đŸĒ | Flavor Information" + var/examine_text = splittext(fluff_info_temp, "||") + var/index = 0 + var/rendered_text = "" + for(var/part in examine_text) + if(index % 2) + rendered_text += span_spoiler("[part]") + else + rendered_text += "[part]" + index++ if(isliving(A)) //ehhh var/mob/living/B = A if(B.flavor_text) title = "🔍 | Flavor Text" - . += span_details(title,fluff_info_temp) + . += span_details(title, rendered_text) var/is_antagish = antag_check() var/antag_info_temp = A.get_description_antag() if(is_antagish && antag_info_temp) - . += span_details("đŸ´â€â˜ ī¸ | Antag Information",antag_info_temp) + . += span_details("đŸ´â€â˜ ī¸ | Antag Information", antag_info_temp) var/list/interaction_info = A.get_description_interaction() if(interaction_info.len > 0) var/temp = ""