Add quick save stack experimental feature. #441
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Mark the type contribution you are making:
Description
Add an experimental feature that lets you have multiple quick save states at once, up to a user-configurable limit. Creating a new quick save when already at the limit removes the oldest quick save (the first in the collection view).
In my experience using Delta, I want to create speculative save states a lot. But opening the menu, selecting save states, creating a save state, then returning to the game, takes a long time. In particular, playing Pokemon RomHacks, I want to create a save state before the battle. But in the middle of the battle, it's often convenient to create another save state, such as when using a risky move (don't judge me). Creating a quick save is extremely fast, but it would overwrite my save from before the battle. Quick save stacks change that.
Testing
Checklist
General (All PRs)
Experimental Feature-specific
ExperimentalFeatures
struct annotated with@Feature
@Option
's to persist all feature-related dataExperimentalFeatures.shared.[feature].isEnabled
runtime checkSettingsViewController
. Riley, let me know if you'd prefer this in its own file. I couldn't think of a more logical hook without creating a dedicated singleton.