Consoles: Save option changes immediately

This commit is contained in:
UnknownShadow200 2023-11-25 15:22:50 +11:00
parent bc9b97aeba
commit 52c3450e32
7 changed files with 62 additions and 56 deletions

View File

@ -126,18 +126,18 @@ typedef cc_uint8 cc_bool;
#define CC_BUILD_XBOX
#define CC_BUILD_NOMUSIC
#define CC_BUILD_NOSOUNDS
#define CC_BUILD_LOWMEM
#define CC_BUILD_HTTPCLIENT
#define CC_BUILD_BEARSSL
#undef CC_BUILD_FREETYPE
#define CC_BUILD_LOWMEM
#define CC_BUILD_CONSOLE
#elif defined XENON
/* libxenon also defines __linux__ (yes, really) */
#define CC_BUILD_XBOX360
#define CC_BUILD_NOMUSIC
#define CC_BUILD_NOSOUNDS
#define CC_BUILD_LOWMEM
#define CC_BUILD_HTTPCLIENT
#undef CC_BUILD_FREETYPE
#define CC_BUILD_LOWMEM
#define CC_BUILD_CONSOLE
#elif defined _WIN32
#define CC_BUILD_WIN
#define CC_BUILD_D3D9
@ -265,62 +265,61 @@ typedef cc_uint8 cc_bool;
#define CC_BUILD_COOPTHREADED
#undef CC_BUILD_FREETYPE
#elif defined __psp__
#define CC_BUILD_HTTPCLIENT
#define CC_BUILD_OPENAL
#define CC_BUILD_PSP
#define CC_BUILD_LOWMEM
#define CC_BUILD_OPENAL
#define CC_BUILD_HTTPCLIENT
#define CC_BUILD_BEARSSL
#undef CC_BUILD_FREETYPE
#define CC_BUILD_LOWMEM
#define CC_BUILD_CONSOLE
#elif defined __3DS__
#define CC_BUILD_HTTPCLIENT
#define CC_BUILD_OPENAL
#define CC_BUILD_3DS
#define CC_BUILD_LOWMEM
#define CC_BUILD_OPENAL
#define CC_BUILD_HTTPCLIENT
#define CC_BUILD_BEARSSL
#undef CC_BUILD_FREETYPE
#define CC_BUILD_LOWMEM
#define CC_BUILD_CONSOLE
#elif defined GEKKO
#define CC_BUILD_HTTPCLIENT
#define CC_BUILD_OPENAL
#define CC_BUILD_GCWII
#define CC_BUILD_LOWMEM
#define CC_BUILD_OPENAL
#define CC_BUILD_HTTPCLIENT
#define CC_BUILD_BEARSSL
#define CC_BUILD_COOPTHREADED
#undef CC_BUILD_FREETYPE
#define CC_BUILD_LOWMEM
#define CC_BUILD_CONSOLE
#elif defined __vita__
#define CC_BUILD_HTTPCLIENT
#define CC_BUILD_OPENAL
#define CC_BUILD_PSVITA
#define CC_BUILD_LOWMEM
#define CC_BUILD_OPENAL
#define CC_BUILD_HTTPCLIENT
#define CC_BUILD_BEARSSL
#undef CC_BUILD_FREETYPE
#define CC_BUILD_LOWMEM
#define CC_BUILD_CONSOLE
#elif defined _arch_dreamcast
#define CC_BUILD_HTTPCLIENT
#define CC_BUILD_OPENAL
#define CC_BUILD_DREAMCAST
#define CC_BUILD_OPENAL
#define CC_BUILD_HTTPCLIENT
#define CC_BUILD_LOWMEM
#undef CC_BUILD_FREETYPE
#define CC_BUILD_CONSOLE
#elif defined PLAT_PS3
#define CC_BUILD_PS3
#define CC_BUILD_HTTPCLIENT
#define CC_BUILD_OPENAL
#define CC_BUILD_PS3
#define CC_BUILD_LOWMEM
#define CC_BUILD_BEARSSL
#undef CC_BUILD_FREETYPE
#define CC_BUILD_CONSOLE
#elif defined N64
#define CC_BUILD_HTTPCLIENT
#define CC_BUILD_OPENAL
#define CC_BUILD_N64
#define CC_BUILD_LOWMEM
#define CC_BUILD_COOPTHREADED
#define CC_BIG_ENDIAN
#undef CC_BUILD_FREETYPE
#elif defined PLAT_PS2
#define CC_BUILD_N64
#define CC_BUILD_HTTPCLIENT
#define CC_BUILD_OPENAL
#define CC_BUILD_PS2
#define CC_BUILD_LOWMEM
#define CC_BUILD_COOPTHREADED
#undef CC_BUILD_FREETYPE
#define CC_BUILD_LOWMEM
#define CC_BUILD_CONSOLE
#elif defined PLAT_PS2
#define CC_BUILD_PS2
#define CC_BUILD_HTTPCLIENT
#define CC_BUILD_OPENAL
#define CC_BUILD_COOPTHREADED
#define CC_BUILD_LOWMEM
#define CC_BUILD_CONSOLE
#endif
#endif

View File

@ -521,10 +521,11 @@ static void DirectConnectScreen_StartClient(void* w) {
if (!mppass->length) mppass = &defMppass;
Options_PauseSaving();
Options_Set("launcher-dc-username", user);
Options_Set("launcher-dc-ip", &ip);
Options_Set("launcher-dc-port", &port);
Options_SetSecure("launcher-dc-mppass", mppass);
Options_Set("launcher-dc-username", user);
Options_Set("launcher-dc-ip", &ip);
Options_Set("launcher-dc-port", &port);
Options_SetSecure("launcher-dc-mppass", mppass);
Options_ResumeSaving();
LLabel_SetConst(status, "");
Launcher_StartGame(user, mppass, &ip, &port, &String_Empty);

View File

@ -90,11 +90,12 @@ cc_bool Launcher_StartGame(const cc_string* user, const cc_string* mppass, const
/* Save resume info */
if (server->length) {
Options_PauseSaving();
Options_Set(ROPT_SERVER, server);
Options_Set(ROPT_USER, user);
Options_Set(ROPT_IP, ip);
Options_Set(ROPT_PORT, port);
Options_SetSecure(ROPT_MPPASS, mppass);
Options_Set(ROPT_SERVER, server);
Options_Set(ROPT_USER, user);
Options_Set(ROPT_IP, ip);
Options_Set(ROPT_PORT, port);
Options_SetSecure(ROPT_MPPASS, mppass);
Options_ResumeSaving();
}
/* Save options BEFORE starting new game process */
/* Otherwise can get 'file already in use' errors on startup */
@ -359,12 +360,14 @@ CC_NOINLINE static void SaveColor(const char* key, BitmapCol color) {
}
void Launcher_SaveTheme(void) {
SaveColor("launcher-back-col", Launcher_Theme.BackgroundColor);
SaveColor("launcher-btn-border-col", Launcher_Theme.ButtonBorderColor);
SaveColor("launcher-btn-fore-active-col", Launcher_Theme.ButtonForeActiveColor);
SaveColor("launcher-btn-fore-inactive-col", Launcher_Theme.ButtonForeColor);
SaveColor("launcher-btn-highlight-inactive-col", Launcher_Theme.ButtonHighlightColor);
Options_SetBool("nostalgia-classicbg", Launcher_Theme.ClassicBackground);
Options_PauseSaving();
SaveColor("launcher-back-col", Launcher_Theme.BackgroundColor);
SaveColor("launcher-btn-border-col", Launcher_Theme.ButtonBorderColor);
SaveColor("launcher-btn-fore-active-col", Launcher_Theme.ButtonForeActiveColor);
SaveColor("launcher-btn-fore-inactive-col", Launcher_Theme.ButtonForeColor);
SaveColor("launcher-btn-highlight-inactive-col", Launcher_Theme.ButtonHighlightColor);
Options_SetBool("nostalgia-classicbg", Launcher_Theme.ClassicBackground);
Options_ResumeSaving();
}

View File

@ -176,7 +176,7 @@ void Options_SetString(const cc_string* key, const cc_string* value) {
EntryList_Set(&Options, key, value, '=');
}
#if defined CC_BUILD_WEB || defined CC_BUILD_ANDROID || defined CC_BUILD_IOS
#if defined CC_BUILD_WEB || defined CC_BUILD_MOBILE || defined CC_BUILD_CONSOLE
if (!savingPaused) SaveOptions();
#endif

View File

@ -109,9 +109,12 @@ void Options_Load(void);
CC_API void Options_Reload(void);
/* Saves options to disc, if any were changed via Options_SetXYZ since last save. */
CC_API void Options_SaveIfChanged(void);
/* Temporarily prevents saving options until Options_SaveIfChanged is called */
/* NOTE: Only makes a difference for web/Android/iOS versions */
/* Temporarily prevents saving options */
/* NOTE: Only makes a difference on some platforms */
void Options_PauseSaving(void);
/* Enables saving options again */
/* NOTE: Only makes a difference on some platforms */
void Options_ResumeSaving(void);
/* Sets value to value of option directly in Options.Buffer if found, String_Empty if not. */
/* Returns whether the option was actually found. */

View File

@ -138,7 +138,7 @@ void android_main(void) {
SetupProgram(0, NULL);
for (;;) { RunProgram(0, NULL); }
}
#elif defined CC_BUILD_3DS || defined CC_BUILD_PSP || defined CC_BUILD_GCWII || defined CC_BUILD_DREAMCAST || defined CC_BUILD_XBOX || defined CC_BUILD_PSVITA || defined CC_BUILD_PS3 || defined CC_BUILD_N64 || defined CC_BUILD_PS2
#elif defined CC_BUILD_CONSOLE
int main(int argc, char** argv) {
SetupProgram(argc, argv);
while (WindowInfo.Exists) {

View File

@ -34,7 +34,7 @@ struct IGameComponent SystemFonts_Component = {
/*########################################################################################################################*
*--------------------------------------------------------Freetype---------------------------------------------------------*
*#########################################################################################################################*/
#if defined CC_BUILD_FREETYPE
#if defined CC_BUILD_FREETYPE && !defined CC_BUILD_CONSOLE
#include "freetype/ft2build.h"
#include "freetype/freetype.h"
#include "freetype/ftmodapi.h"