I then added code to allow only one instance of the S3Engine to run, this will take care of the unfortunet accident of an un-savvy user double clicking a single click icon and getting two instances of the game (causing performance issues).
I also took off the CS_NOCLOSE style and handle WM_CLOSE, which now makes the 'confirm quit' radial menu pop up when you try to close.
Also, for any of you who've ever been angered by a game that continues to chomp your CPU even after you've tasked away you'll be happy to know that we handle this, and when the window becomes inactive we drop the CPU consumption down to about zero, where the application pauses and queries the state at once a second. Perfect if you need to answer an Instant Message while playing :D
The next big fish to fry is getting the save and load interface to work, while at face value it's not a very complex problem, our target audience (via polls has decided they want the best feature we offered, that is:
Save game using Time and Date, allow a name input, and save a screen capture.
They also want an erase function. This is all going to be handled within the radial menu system, though I may find it needs a separate system.
the structure will go somthing like this:
Main Save Choose Everyone or Me(say user name?) Choose empty save slot Type save name [date-time is sampled, screen is captured, name is applied] [save is attempted and validated, potentially returning an error with details] Choose existing Save Game Overwrite Type save name[original name entered] Confirm overwrite [date-time is sampled, screen is captured, name is applied] [save is attempted and validated, potentially returning an error with details] Erase Confirm [file is erased and slot is freed] Load Choose Everyone or Me(say user name?) Choose existing save Confirm [discard current state and load game]
This process will be boiled down to a single function which does the work of saving and loading (and validating) the save games, so that it can be used programmatically. This will be used for the quicksave system where by pressing F5 it will save to the reserved 'quicksave' slot and F9 will reload that slot (if filled)