Update 3
I gave up on getting blocks to rotate for now, and started working on other things.
I think I want the player to collect things in each puzzle. So I've been drawing gemstones this morning. Here's a quick puzzle room I threw together to show off how the game is looking.
(I don't know why ShareX thinks the mouse cursor is that far to the left. I'm clicking on the blocks, I swear.)
The big red gemstone is the goal of each puzzle. For now, collecting it just resets the room. I've also added little green square gems that essentially act as keys - collect them all to open the doors marked with a square. The doors lose their collision mask when opened, so that you can put blocks where they used to be.
I also added the beginnings of a sidebar menu. Only the reset button does anything, and it just restarts the room for now.
The Save State and Load State buttons are for an idea I've had. I want the player to be able to save the state of a puzzle anywhere while solving it. To do this, I think I'm going to have the game save the coordinates of each item in the room, and restore them when the state is loaded. This means keeping all the objects in play somehow, so that when you restore a state the game doesn't crash trying to find the coordinates of an item which has been destroyed. To avoid this when I try to implement this, when you collect gems, they're not actually collected - they just get moved way offscreen where the player can't get them. This feels dumb, but it seems to work!
I've spent most of my time since this doing programming grunt work. I want to get a control object which can keep track of every significant object in a room, so that I can have it run most of the scripts in the game. Right now, keys and doors are completely separate, and the door has to keep checking every frame to see if it should open. I want the control object to keep track of both keys and doors, making it easier to run the door opening script only when needed. So I started on that this afternoon, also setting it up to save object data for the save-state thing I want to do. It'll probably be another day or two until this is all up and running!
I've also done some work on sprites and music whenever I got bored of the coding, but none of that's ready to show off yet.