The various parts of the Apply Settings button should be pretty familiar by now:
Unlike the other buttons though, Apply is unclickable in its Idle Unselected state, unable to do anything until the Changes event is sent from one of the other buttons.
Once Changes have occurred, the button checks every frame for a Click, and then an Apply Settings IO event is broadcast, any button FSM currently in its Idle Selected state will send its local values to Settings IO. Finally, Apply Settings IO then triggers an event on the Settings IO saving the currently set values to the playerSettings file. If only some of the settings have been changed the previously set ones will simply persist, buttons in an Unselected state don’t send any new values.
At this stage the menu is working pretty much how I want it, as I said I’ll probably be changing some of the text for icons, I might reduce the number of options as well depending on their actual usefulness, this was mostly an exercise to see if I could get them all functioning! The next step is a similar setup for user created Save Games and possibly for customizing input, both of which I’m imagining will be more complex…
As always, comments, crits and corrections are all welcome.