All right, two great accomplishments today on the room layout engine.
Complex Patterns
A gadget in Soulcaster is any customizable element in the room: floor switch, gate, moving platform, monster spawner, item pickup. Until today, patterns ignored any gadgets in their area, and just copied the floor and wall tiles. Now I can finally add those epic shortcuts: the ones where you have to go the long way first to press the switch, but then you have a direct connection between the rooms.
Room State Storage & Restoration
It’s been possible to move among rooms in the map for a few weeks now, but each time a room loaded, it rebuilt itself from its original state. Any switches you pressed before would be reset, which kinda defeats the utility of the shortcuts. To solve this, I created a RoomHistory class that keeps track of every change, to recreate the room just as you left it. Right now it only affects the trigger/gate system, but it will be extended to keep track of destroyed spawners, picked up items, etc.
I think I have all the basic ingredients in place to make a proper (but boring) dungeon layout. Next up: populating the rooms with monsters.