I figured out a much more elegant way to save game data than what was in the previous GM version.
Each object defines its own behavior for how it saves itself to a file. This allows me to make a file that JUST stores data for a single actor, or a single tile. I can also store data for more abstract objects, like the game world itself, or the player’s current session. As well as calling functions to write its own data to a file, it will call the save functions of the objects it “owns”. It creates a convenient, modular chain that’s easy to change as I go.
I finished up a quick and dirty implementation of this today, and it works! Hopefully, it stays that way.
The next task is to take care of the message log. In the GM version, whole lines could be colored. In this version I will attempt to allow per-character coloring using formatted strings of text.
The text shaping options in Allegro 5 are quite limited, so this is going to be frustrating getting it to fit the dynamically-sized UI. To alleviate some of the pain, I’ll be using a monospaced font for the message log.