From 809be52c98212078d2f8ccf7a7ffa6d91d613419 Mon Sep 17 00:00:00 2001 From: DZD Date: Fri, 31 Jul 2015 18:46:32 -0400 Subject: [PATCH] Adds subtypesof helper proc It returns a list containing all subtypes of the object path given to it, but not the object path itself. This only exists because typesof(/obj/item/thing) - /obj/item/thing is used quite often. Also adds a "/" to the start of a lot of the list helper procs that did not start with one. --- code/__HELPERS/lists.dm | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/code/__HELPERS/lists.dm b/code/__HELPERS/lists.dm index a8e29885ec9..9eb815138cf 100644 --- a/code/__HELPERS/lists.dm +++ b/code/__HELPERS/lists.dm @@ -31,7 +31,7 @@ return "[output][and_text][input[index]]" //Returns list element or null. Should prevent "index out of bounds" error. -proc/listgetindex(var/list/list,index) +/proc/listgetindex(var/list/list,index) if(istype(list) && list.len) if(isnum(index)) if(InRange(index,1,list.len)) @@ -40,19 +40,19 @@ proc/listgetindex(var/list/list,index) return list[index] return -proc/islist(list/list) +/proc/islist(list/list) if(istype(list)) return 1 return 0 //Return either pick(list) or null if list is not of type /list or is empty -proc/safepick(list/list) +/proc/safepick(list/list) if(!islist(list) || !list.len) return return pick(list) //Checks if the list is empty -proc/isemptylist(list/list) +/proc/isemptylist(list/list) if(!list.len) return 1 return 0 @@ -65,13 +65,13 @@ proc/isemptylist(list/list) return 0 //Empties the list by setting the length to 0. Hopefully the elements get garbage collected -proc/clearlist(list/list) +/proc/clearlist(list/list) if(istype(list)) list.len = 0 return //Removes any null entries from the list -proc/listclearnulls(list/list) +/proc/listclearnulls(list/list) if(istype(list)) while(null in list) list -= null @@ -504,7 +504,7 @@ proc/dd_sortedObjectList(list/incoming) return sorted_list */ -proc/dd_sortedtextlist(list/incoming, case_sensitive = 0) +/proc/dd_sortedtextlist(list/incoming, case_sensitive = 0) // Returns a new list with the text values sorted. // Use binary search to order by sortValue. // This works by going to the half-point of the list, seeing if the node in question is higher or lower cost, @@ -563,16 +563,20 @@ proc/dd_sortedtextlist(list/incoming, case_sensitive = 0) return sorted_text -proc/dd_sortedTextList(list/incoming) +/proc/dd_sortedTextList(list/incoming) var/case_sensitive = 1 return dd_sortedtextlist(incoming, case_sensitive) +/proc/subtypesof(var/path) //Returns a list containing all subtypes of the given path, but not the given path itself. + if(!path || !ispath(path)) + return + return (typesof(path) - path) -datum/proc/dd_SortValue() +/datum/proc/dd_SortValue() return "[src]" /obj/machinery/dd_SortValue() return "[sanitize(name)]" /obj/machinery/camera/dd_SortValue() - return "[c_tag]" \ No newline at end of file + return "[c_tag]"