v0.8.1
I thought this step was going to be simple… Not at all!
It’s been a nightmare of an ordeal. The save selection menu’s code (its logic) was basically one flat, tangled plate of spaghetti.
The base game used a bunch of dictionaries to store data and look it back up. The functions tied to the buttons used the Rect object handed to the class to look up the data they needed. Why hand over an object to look up data through a dictionary when you can just pass the function what it needs directly…
I completely rewrote the menu’s behavior from scratch, cleanly, to support displaying and loading saves in their new archive form.
What’s changed:
- Rewrote the save selection menu so it lists both classic save folders and the new .msa archives side by side.
- Added a proper confirmation popup (reused for save deletion, and reusable for anything else later) instead of the base game’s tangled state.
- Rebuilt the difficulty settings screen flow so it works the same way whether the save is a folder or an archive.
- Deleting a save now works for both save folders and .msa archives.
- Fixed thumbnails not showing for saves without a screenshot.
- Hooked up unloading the virtual file system when leaving a world, so you can load another world without restarting the game.
- Squashed a good number of bugs along the way (mixed up path separators, wrong field types, missing state resets) that only showed up once real saves were being loaded and listed.
Progress so far:
- ✅ VFS (Virtual File System).
- ✅ Write the fake
System.IOfunctions. - ✅ Write/Read the
.msa(Mechanica Save Archive) file. - ✅ Intercepting the system functions.
- ✅ Write the triggers that will fire the capture/emission of virtual files.
- ✅ Add display/support for the new save format in the world selection menu.
- ❌ Add a config file, [deinitialize the VFS on world exit - Early Done], and other minor details/improvements (new)
- ❌ [Optional] Fix non-blocking base-game load/save errors that clutter the console.
Comments 0
No comments yet. Be the first!
Sign in to join the conversation.