From 1c86f0ac682e69ff2b615640f0116df286f8bb56 Mon Sep 17 00:00:00 2001 From: GDN <96800819+GDNgit@users.noreply.github.com> Date: Sat, 13 Apr 2024 13:25:50 -0500 Subject: [PATCH] severely reduces lag on some uis (#25116) * severely reduces lag on some uis * SHIP IT * Update code/modules/hydroponics/seed_extractor.dm --- code/_globalvars/lists/misc_lists.dm | 3 +++ code/game/objects/items/weapons/bio_chips/bio_chip_pad.dm | 5 +++++ code/modules/hydroponics/gene_modder.dm | 6 +++++- code/modules/hydroponics/seed_extractor.dm | 6 +++++- 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/code/_globalvars/lists/misc_lists.dm b/code/_globalvars/lists/misc_lists.dm index b4ac32d640c..f12c6a8271f 100644 --- a/code/_globalvars/lists/misc_lists.dm +++ b/code/_globalvars/lists/misc_lists.dm @@ -67,3 +67,6 @@ GLOBAL_LIST_EMPTY(looping_sounds) /// List of possible crits from things tipping over GLOBAL_LIST_EMPTY(tilt_crits) + +/// Stores a list of the cached seed icons. Used in the seed extractor and the gene modder +GLOBAL_LIST_EMPTY(seeds_cached_base64_icons) diff --git a/code/game/objects/items/weapons/bio_chips/bio_chip_pad.dm b/code/game/objects/items/weapons/bio_chips/bio_chip_pad.dm index e0867c56652..8ddc1d8cfb3 100644 --- a/code/game/objects/items/weapons/bio_chips/bio_chip_pad.dm +++ b/code/game/objects/items/weapons/bio_chips/bio_chip_pad.dm @@ -9,6 +9,7 @@ w_class = WEIGHT_CLASS_SMALL var/obj/item/bio_chip_case/case + var/static/list/cached_base64_icons = list() /obj/item/bio_chip_pad/Destroy() if(case) @@ -80,6 +81,10 @@ data["contains_case"] = case ? TRUE : FALSE if(case && case.imp) var/datum/implant_fluff/implant_data = case.imp.implant_data + var/icon/base64icon = cached_base64_icons["[initial(case.imp.icon)][initial(case.imp.icon_state)]"] + if(!base64icon) + base64icon = "[icon2base64(icon(initial(case.imp.icon), initial(case.imp.icon_state), SOUTH, 1))]" + cached_base64_icons["[initial(case.imp.icon)][initial(case.imp.icon_state)]"] = base64icon data["implant"] = list( "name" = implant_data.name, "life" = implant_data.life, diff --git a/code/modules/hydroponics/gene_modder.dm b/code/modules/hydroponics/gene_modder.dm index 7d10426d9ed..cf66b5f57f8 100644 --- a/code/modules/hydroponics/gene_modder.dm +++ b/code/modules/hydroponics/gene_modder.dm @@ -167,8 +167,12 @@ data["seed"] = list() if(seed) + var/icon/base64icon = GLOB.seeds_cached_base64_icons["[initial(seed.icon)][initial(seed.icon_state)]"] + if(!base64icon) + base64icon = icon2base64(icon(initial(seed.icon), initial(seed.icon_state), SOUTH, 1)) + GLOB.seeds_cached_base64_icons["[initial(seed.icon)][initial(seed.icon_state)]"] = base64icon data["seed"] = list( - "image" = "[icon2base64(icon(initial(seed.icon), initial(seed.icon_state), SOUTH, 1))]", + "image" = "[base64icon]", "name" = seed.name, "variant" = seed.variant ) diff --git a/code/modules/hydroponics/seed_extractor.dm b/code/modules/hydroponics/seed_extractor.dm index 07616d4ae69..285882c39f9 100644 --- a/code/modules/hydroponics/seed_extractor.dm +++ b/code/modules/hydroponics/seed_extractor.dm @@ -136,8 +136,12 @@ for(var/datum/seed_pile/O in piles) var/obj/item/I = O.path + var/icon/base64icon = GLOB.seeds_cached_base64_icons["[initial(I.icon)][initial(I.icon_state)]"] + if(!base64icon) + base64icon = icon2base64(icon(initial(I.icon), initial(I.icon_state), SOUTH, 1)) + GLOB.seeds_cached_base64_icons["[initial(I.icon)][initial(I.icon_state)]"] = base64icon var/list/seed_info = list( - "image" = "[icon2base64(icon(initial(I.icon), initial(I.icon_state), SOUTH, 1))]", + "image" = "[base64icon]", "id" = O.id, "name" = O.name, "variant" = O.variant,