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)