Hellooo!
I want to make myself an editor tool and I've reached the limit of my understanding with programming and Godot. To explain what sort of help I'm looking for, I'll explain what it is I want to make.
I have a top-down TileMap with a layer for the ground itself and a layer for objects on top of the ground. This is so that I can have y-sorted objects and ground decoration in the same TileMap. Currently, I have both a wall autotile, and an autotile for the walls' shadows. These go in different layers.

I want to make an editor script that will find wall tiles and place their respective shadow tiles on the layer below. I want to generalise this tool script so that I can specify which tile atlases on which layers correspond to whatever other tileset atlases on other layers. I want to specify the layer (int) and source_id (int) of each and map them to each other like a dictionary. How do I do this? I tried to make a resource using a script extending Resource
that has a dictionary.
class_name TileMapProxies
extends Resource
@export var Mappings: Dictionary

It works, but it's soooo sloowwww to fill in. When I add a key-value pair, I then have to specify that the keys/values are Vector2i
for each pair, then fill them in. This is also very inflexible. Here it happens that Vector2i
is sufficient, but what if I wanna map 5 integers to a list of strings? (random example) I'd have to specify so many layers -> Key: Array( 5 integers), Value: Array(String) for each pair. Very tedious, prone to mistakes, hard to hand to someone else and expect them to follow it exactly.
I can't declare typed Dictionaries like with Arrays. I also don't know how to make it so that two integers act as a key for two other integers. Is there some other method to make specific data structures? Surely this is a fairly common thing to want to do when it comes to making custom tools.
Thanks for your help! 😃