Using Panels and Windows for every tile will get *way* to slow by time, I guess.
It also prevents using cool effects and stuff.
As you want those, I suggest that you write a system based on draw_quad and then use bmap_process for the shader effects.
About particles, I am not sure, but I think the function effect_layer might help you.
(oh and for filling: floodfill)