Um... While Ren'Py doesn't take a layer parameter on the ui calls, it does have the ui.layer
Yeah, I'd completely failed to notice that. I'd presumed that the ui.* stuff all went onto the Transient layer because that's the only one which gets cleared down after every interaction, and if I changed the layer I'd become responsible for removing everything anyway...
Nevertheless, the ones which gave me more trouble were actually the ones where I was using renpy.display_menu rather than any of the UI functions anyway... and switching to use UI functions means I can also apply a custom style to each of the parts (the Window, the VBox and the Buttons) instead of just the one part which passing a 'style' parameter to the method allows.
(Which is useful since I don't believe Ren'Py allows for CSS-style "style any button which is within a VBox of this style like this" specifications.
I'm assuming with a top-down view the tree will still block LoS even though it won't block the grid itself?
I'm guessing at what you mean, but... the grid itself doesn't have any understanding of whether it's top-down or isometric or whatever; as far as the code is concerned, what looks like an iso grid to you and I is just a tesselation of wider-than-they-are diamonds... each sprite has an anchor property you can use to set (basically) where their feet are, and thus how far from the grid they'll be drawn, so you can set them to be standing higher than the grid to look like it's an isometric setup.
Scenery blocks LoS based on grid squares rather than visual representation, so it works the same way regardless of whether you've set it up as a top-down or an iso grid... and it'll draw the sprite where you tell it to, with a z-order corresponding to its distance down the screen (this was the best generic solution I came up with to having sprite order not look stupid as much as possible), so if you give it a big enough sprite or position it as such, it'll still cover up grid lines in top-down view as well.
I think some games show LoS with a yellow dotted line... it would be interested to allow for that possibility especially in battlefields with a lot of clutter.
Nothing like that is done in the default implementation, 'cause I was going for the simplest option which worked sufficiently well in a lot of cases, but it's plausible someone could write a UI provider, a Battlefield or an Extra which did that.