I'm working on some HUGE changes to my game. These changes are going to be so big I think I'll have to include them as optional, like in a Steam Workshop item or a free DLC or something. I'm still trying to decide on what exactly I want to do. I'll release more info as development continues.
For now, check out the new menu system I'm working on. My current (old) menu system is a complete mess. When I wrote it, I really didn't know what I was doing. Basically, in the old system, I had a bunch of HUGE Flash swf files, with all the code written directly onto the timeline. Any place where you might want to access the same information (like going to options from the main menu, and options from the pause menu; or going to the character sheet from the pause menu, and character sheet from the equipment vendor) I just duplicated that part of the menu. And if I ever had to change it, I had to change multiple copies in different menus.
Also, the old system doesn't work well with controllers. I made the controllers simulate mouse input, which is definitely not the ideal approach.
This menu you see here is completely new, reusing none of the code from the old menu. You can switch from mouse to controller instantly and seamlessly: if you press a controller button, it takes effect, and the mouse disappears; likewise if you had been using the controller and then you move the mouse, the mouse cursor appears and you can use it instantly. Also, the new menu system works with a system of layers. Mouse on top, HUD on the bottom, and any possible menu screen will go somewhere in between. Because it works on a system of layers, I can open any menu from any other menu, and it will just display as a new layer. And when I close the top layer, it just takes me back to the previous layer. And I can customize it so the layer either blocks layers below, or it can not block lower layers, and you can interact with multiple layers at once.
And with how modular it is, I've already started reusing code. The menu bar on the left side of the screen uses the exact same code as a game-exit confirmation window displayed in the middle of the screen. To make a different menu, I only have to provide different button names and hook them up to different functions. The side menu can be the pause menu, or a shop, or an inn, or a tavern, or anything else, with different numbers of buttons created as needed. A menu in the middle of the screen that has a menu name and any number of buttons can just reskin the side menu.
This is far from the most exciting part of game development. But still, it feels good to go back and do something the right way, and to know why this is the right way.