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

View File

@ -521,10 +521,11 @@ static void DirectConnectScreen_StartClient(void* w) {
if (!mppass->length) mppass = &defMppass; if (!mppass->length) mppass = &defMppass;
Options_PauseSaving(); Options_PauseSaving();
Options_Set("launcher-dc-username", user); Options_Set("launcher-dc-username", user);
Options_Set("launcher-dc-ip", &ip); Options_Set("launcher-dc-ip", &ip);
Options_Set("launcher-dc-port", &port); Options_Set("launcher-dc-port", &port);
Options_SetSecure("launcher-dc-mppass", mppass); Options_SetSecure("launcher-dc-mppass", mppass);
Options_ResumeSaving();
LLabel_SetConst(status, ""); LLabel_SetConst(status, "");
Launcher_StartGame(user, mppass, &ip, &port, &String_Empty); 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 */ /* Save resume info */
if (server->length) { if (server->length) {
Options_PauseSaving(); Options_PauseSaving();
Options_Set(ROPT_SERVER, server); Options_Set(ROPT_SERVER, server);
Options_Set(ROPT_USER, user); Options_Set(ROPT_USER, user);
Options_Set(ROPT_IP, ip); Options_Set(ROPT_IP, ip);
Options_Set(ROPT_PORT, port); Options_Set(ROPT_PORT, port);
Options_SetSecure(ROPT_MPPASS, mppass); Options_SetSecure(ROPT_MPPASS, mppass);
Options_ResumeSaving();
} }
/* Save options BEFORE starting new game process */ /* Save options BEFORE starting new game process */
/* Otherwise can get 'file already in use' errors on startup */ /* 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) { void Launcher_SaveTheme(void) {
SaveColor("launcher-back-col", Launcher_Theme.BackgroundColor); Options_PauseSaving();
SaveColor("launcher-btn-border-col", Launcher_Theme.ButtonBorderColor); SaveColor("launcher-back-col", Launcher_Theme.BackgroundColor);
SaveColor("launcher-btn-fore-active-col", Launcher_Theme.ButtonForeActiveColor); SaveColor("launcher-btn-border-col", Launcher_Theme.ButtonBorderColor);
SaveColor("launcher-btn-fore-inactive-col", Launcher_Theme.ButtonForeColor); SaveColor("launcher-btn-fore-active-col", Launcher_Theme.ButtonForeActiveColor);
SaveColor("launcher-btn-highlight-inactive-col", Launcher_Theme.ButtonHighlightColor); SaveColor("launcher-btn-fore-inactive-col", Launcher_Theme.ButtonForeColor);
Options_SetBool("nostalgia-classicbg", Launcher_Theme.ClassicBackground); 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, '='); 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(); if (!savingPaused) SaveOptions();
#endif #endif

View File

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

View File

@ -138,7 +138,7 @@ void android_main(void) {
SetupProgram(0, NULL); SetupProgram(0, NULL);
for (;;) { RunProgram(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) { int main(int argc, char** argv) {
SetupProgram(argc, argv); SetupProgram(argc, argv);
while (WindowInfo.Exists) { while (WindowInfo.Exists) {

View File

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