ID:2761691
 
Applies to:Dream Maker
Status: Open

Issue hasn't been assigned a status value.
As it stands managing filters is very annoying to do, as the filters variable is a special list that cannot be keyed, and list procs don't work on it at all.
"
Something like having filter.key as a string or something like that could work.

example:
filters += filter("outline", color = "#00cc00", size = 2, tag= "healing_glow")

so that we could

for(var/filter/F in filters)
if(filter.key = "healing_glow") //If this variable was untyped, that could be cool because hexadecimals evaluate faster :)
animate(F, size = 5, time = 30, looping = 1) //Make the outline pulse slowly


Perhaps being able to locate() via the key could work too?

This would make working with large amounts of filters a lot easier, as currently you need to code a system to add or remove specific filters or keep track of the explicit order of the filters that have been added if you want to do things like animate them.
I've added this to my short list for 516 refinements.

Since filters are not true objects, locate() won't work with this; it wouldn't be a "true" tag. In fact to clarify the distinction I might go with "name" as the attribute instead of "tag".

But I do think this would be feasible in the following forms:

1) Reading filter.name
2) Grabbing a filter reference via filter[name]
3) Subtracting a name from a filter list to remove it

The #2 option also means there's a potentially different way to handle instantiated filter references that I should look into, that would be superior to the current method used for unnamed filters.