Four capabilities: save, load, track and overwrite.
Save allows to save the map.
Load allows to load the map.
Track allows to figure out current status of the map in a file system. Without it, status will be updated only on failed attempt to load the map - but it will still be displayed on recently opened maps list.
Overwrite allows quick save functionality.
Auto-save operating on cyclical system of three (or any other number) auto-saves - when map is auto-saved, oldest auto-save gets overwritten.
Tracking if current map is saved.
There should be a system in place tracking if we can save current map using given saving method. For example, Pastebin won't allow huge maps to be saved, and LocalStorage have size limit.
There should be warning for Pastebin and LocalStorage saves that they can be wiped at any time.
Start the program in map selection screen. You can make a new map or load existing map from there, and see list of recently opened (loaded or saved) maps.
Saving process will look different on every platform and must by asynchronous.
Make system of saving and loading providers that can vary between platforms, with providers like:
File - for all platforms except WebGL, provides saving, loading, tracking and overwriting to any file.
WebFile - for WebGL, provides saving and loading only.
Pastebin - for all platforms, provides saving and loading but not tracking or overwriting.
SteamCloud - for Steam builds only, works the same as file saving except more restricted. (no manually choosing location)
LocalStorage - for WebGL only, provides saving, loading, tracking and overwriting to any file.
Possible future changes:
Safe saving system - save map to temporary file first, then replace the old version. Will surely not be possible or make sense on all platforms. Auto-save makes data loss less of a concern but this would be even better.
New saving system concept:
Possible future changes: