From 20c5dea5fb3821686901ac77acf31a56336e3609 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Sat, 4 Nov 2023 05:15:35 +0100 Subject: [PATCH] [MIRROR] [NO GBP] Retain filtering capabilities for paintings [MDB IGNORE] (#24776) * [NO GBP] Retain filtering capabilities for paintings (#79504) ## About The Pull Request Fixes a little whoopsie from #79495 which got rid of the ability to filter paintings ## Why It's Good For The Game Filtering good ## Changelog :cl:Tattle fix: paintings can once again be filtered /:cl: Co-authored-by: tattle * [NO GBP] Retain filtering capabilities for paintings --------- Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com> Co-authored-by: tattle --- .../subsystem/persistent_paintings.dm | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/code/controllers/subsystem/persistent_paintings.dm b/code/controllers/subsystem/persistent_paintings.dm index 02889d07db7..35656e2a56d 100644 --- a/code/controllers/subsystem/persistent_paintings.dm +++ b/code/controllers/subsystem/persistent_paintings.dm @@ -161,6 +161,8 @@ SUBSYSTEM_DEF(persistent_paintings) "creator" = painting.creator_name, "md5" = painting.md5, "ref" = REF(painting), + "width" = painting.width, + "height" = painting.height, "ratio" = painting.width/painting.height, )) @@ -177,18 +179,26 @@ SUBSYSTEM_DEF(persistent_paintings) */ /datum/controller/subsystem/persistent_paintings/proc/painting_ui_data(filter=NONE, admin=FALSE, search_text) var/searching = filter & (PAINTINGS_FILTER_SEARCH_TITLE|PAINTINGS_FILTER_SEARCH_CREATOR) && search_text - for(var/datum/painting/painting as anything in paintings) - if(filter & PAINTINGS_FILTER_AI_PORTRAIT && ((painting.width != 24 && painting.width != 23) || (painting.height != 24 && painting.height != 23))) + + if(!searching) + return admin ? admin_painting_data : cached_painting_data + + var/list/filtered_paintings = list() + var/list/searched_paintings = admin ? admin_painting_data : cached_painting_data + + for(var/painting as anything in searched_paintings) + if(filter & PAINTINGS_FILTER_AI_PORTRAIT && ((painting["width"] != 24 && painting["width"] != 23) || (painting["height"] != 24 && painting["height"] != 23))) continue if(searching) var/haystack_text = "" if(filter & PAINTINGS_FILTER_SEARCH_TITLE) - haystack_text = painting.title + haystack_text = painting["title"] else if(filter & PAINTINGS_FILTER_SEARCH_CREATOR) - haystack_text = painting.creator_name + haystack_text = painting["creator"] if(!findtext(haystack_text, search_text)) continue - return admin ? admin_painting_data : cached_painting_data + filtered_paintings += painting + return filtered_paintings /// Returns paintings with given tag. /datum/controller/subsystem/persistent_paintings/proc/get_paintings_with_tag(tag_name)