- replace swapvalues with std::swap globally.
- added some additions to utility code from Raze, mainly to reduce file content differences.
- reduced some unused utilities
This may look as a workaround, it is not.
nosave cvars are meant to be used as a storage for statistical data that doesn't
affect gameplay. That's why this data isn't saved to the savefile in the first
place. Therefore, there is no point in sending this data over network. It would
have no meaning on machines other than local.
The old method using a single string with a backslash as separator is unable to handle anything with actual backslashes in the data.
It now uses a JSON object with each CVAR being a separate key.
Also simplified the sound init decision making. With FMod gone there is no reason to be pedantic here. Even the check of snd_backend for the Null device could be omitted here, its only realistic use is '-nosound'.
- it disables most 2D drawing in order to favor a fullscreen output view for screenshot taking
- enabling the console or any menu should cancel it
- it does use several CVARs but their state should be restored when this mode is canceled
The main exits are initiated from code that cannot filter this back to D_DoomMain easily so the exception is the only way to get there.
The 3 main points of exit are:
* quit/exit CCMD
* quitting the menu through ST_Endoom
* receiving a quit message on the main window.
The main catch is now in D_DoomMain, only calling platform specific functions to handle the output for the error.
As a nice side effect, -norun can now be done without an exception, just by exiting D_DoomMain with a special exit code.
Many had leftover non-default constructors/ assignment operators, and some were initialized, even though the initialized data was never used.
In case of FCycler this even caused a default setting to be overwritten when used inside FDynamicLight.