From f48771ea42a9e0d2fe220ce645a8d0210e23767c Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 16 Oct 2015 18:14:29 +0200 Subject: [PATCH] (cheevos) Backport 'moved cheevos configuration to the config file' --- cheevos.c | 49 +++++++++++++++++++++++++++++-------------------- cheevos.h | 17 ++--------------- configuration.c | 22 ++++++++++++++++++++++ configuration.h | 10 ++++++++++ 4 files changed, 63 insertions(+), 35 deletions(-) diff --git a/cheevos.c b/cheevos.c index 87d445e6f6..9801bc5182 100644 --- a/cheevos.c +++ b/cheevos.c @@ -19,6 +19,7 @@ #include #include +#include #include #include #include @@ -145,19 +146,11 @@ typedef struct unsigned count; } cheevoset_t; -cheevos_config_t cheevos_config = -{ - /* enable */ 1, - /* test_unofficial */ 0, - /* username */ "libretro", - /* password */ "l1br3tro3456", - /* token */ { 0 }, - /* game_id */ 0, -}; - static cheevoset_t core_cheevos = { NULL, 0 }; static cheevoset_t unofficial_cheevos = { NULL, 0 }; +static char token[ 32 ] = { 0 }; + /***************************************************************************** Supporting functions. *****************************************************************************/ @@ -1030,11 +1023,16 @@ static void test_cheevo_set( const cheevoset_t* set ) void cheevos_test(void) { - if ( cheevos_config.enable ) + settings_t *settings = config_get_ptr(); + + if (!settings) + return; + + if ( settings->cheevos.enable ) { test_cheevo_set( &core_cheevos ); - if ( cheevos_config.test_unofficial ) + if ( settings->cheevos.test_unofficial ) test_cheevo_set( &unofficial_cheevos ); } } @@ -1242,14 +1240,17 @@ static int cheevos_login(void) cheevo_getvalueud_t ud; int res = 0; - if ( cheevos_config.token[ 0 ] == 0 ) + if ( token[ 0 ] == 0 ) { - cheevos_config.token[ 0 ] = 0; + settings_t *settings = config_get_ptr(); + + if (!settings) + return -1; snprintf( request, sizeof( request ), "http://retroachievements.org/dorequest.php?r=login&u=%s&p=%s", - cheevos_config.username, cheevos_config.password + settings->cheevos.username, settings->cheevos.password ); request[ sizeof( request ) - 1 ] = 0; @@ -1259,23 +1260,27 @@ static int cheevos_login(void) if ( !json ) return -1; - res = cheevos_get_value( json, 0x0e2dbd26U /* Token */, cheevos_config.token, sizeof( cheevos_config.token ) ); + res = cheevos_get_value( json, 0x0e2dbd26U /* Token */, token, sizeof( token ) ); } - RARCH_LOG( "CHEEVOS user token is %s\n", cheevos_config.token ); + RARCH_LOG( "CHEEVOS user token is %s\n", token ); return res; } int cheevos_get_by_game_id( const char** json, unsigned game_id ) { char request[ 256 ]; + settings_t *settings = config_get_ptr(); + + if (!settings) + return -1; cheevos_login(); snprintf( request, sizeof( request ), "http://retroachievements.org/dorequest.php?r=patch&u=%s&g=%u&f=3&l=1&t=%s", - cheevos_config.username, game_id, cheevos_config.token + settings->cheevos.username, game_id, settings->cheevos.token ); request[ sizeof( request ) - 1 ] = 0; @@ -1291,15 +1296,19 @@ int cheevos_get_by_game_id( const char** json, unsigned game_id ) static unsigned cheevos_get_game_id( unsigned char* hash ) { MD5_CTX ctx; - char request[ 256 ]; const char* json; + char request[ 256 ]; char game_id[ 16 ]; int res; + settings_t *settings = config_get_ptr(); + + if (!settings) + return -1; snprintf( request, sizeof( request ), "http://retroachievements.org/dorequest.php?r=gameid&u=%s&m=%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x", - cheevos_config.username, + settings->cheevos.username, hash[ 0 ], hash[ 1 ], hash[ 2 ], hash[ 3 ], hash[ 4 ], hash[ 5 ], hash[ 6 ], hash[ 7 ], hash[ 8 ], hash[ 9 ], hash[ 10 ], hash[ 11 ], diff --git a/cheevos.h b/cheevos.h index 52e2c47461..6633da316f 100644 --- a/cheevos.h +++ b/cheevos.h @@ -17,27 +17,14 @@ #ifndef __RARCH_CHEEVOS_H #define __RARCH_CHEEVOS_H -typedef struct -{ - unsigned char enable; - unsigned char test_unofficial; - const char* username; - const char* password; - /* These are used by the implementation, do not touch. */ - char token[ 20 ]; - unsigned game_id; -} cheevos_config_t; - -extern cheevos_config_t cheevos_config; - int cheevos_load(const char* json); void cheevos_test(void); void cheevos_unload(void); -int cheevos_get_by_game_id( const char** json, unsigned game_id ); +int cheevos_get_by_game_id( const char **json, unsigned game_id ); -int cheevos_get_by_content( const char** json, const void* data, size_t size ); +int cheevos_get_by_content( const char **json, const void *data, size_t size ); #endif /* __RARCH_CHEEVOS_H */ diff --git a/configuration.c b/configuration.c index 64a23d1f36..909bae2c35 100644 --- a/configuration.c +++ b/configuration.c @@ -595,6 +595,13 @@ static void config_set_defaults(void) settings->location.allow = false; settings->camera.allow = false; +#ifdef HAVE_CHEEVOS + settings->cheevos.enable = true; + settings->cheevos.test_unofficial = false; + *settings->cheevos.user_name = '\0'; + *settings->cheevos.password = '\0'; +#endif + settings->input.autoconfig_descriptor_label_show = true; settings->input.back_as_menu_toggle_enable = true; settings->input.input_descriptor_label_show = input_descriptor_label_show; @@ -1460,6 +1467,13 @@ static bool config_load_file(const char *path, bool set_defaults) CONFIG_GET_STRING_BASE(conf, settings, camera.device, "camera_device"); CONFIG_GET_BOOL_BASE(conf, settings, camera.allow, "camera_allow"); +#ifdef HAVE_CHEEVOS + CONFIG_GET_BOOL_BASE(conf, settings, cheevos.enable, "cheevos_enable"); + CONFIG_GET_BOOL_BASE(conf, settings, cheevos.test_unofficial, "cheevos_test_unofficial"); + CONFIG_GET_STRING_BASE(conf, settings, cheevos.user_name, "cheevos_user_name"); + CONFIG_GET_STRING_BASE(conf, settings, cheevos.password, "cheevos_password"); +#endif + CONFIG_GET_BOOL_BASE(conf, settings, location.allow, "location_allow"); CONFIG_GET_STRING_BASE(conf, settings, video.driver, "video_driver"); CONFIG_GET_STRING_BASE(conf, settings, record.driver, "record_driver"); @@ -2541,6 +2555,14 @@ bool config_save_file(const char *path) settings->network.buildbot_auto_extract_archive); config_set_string(conf, "camera_device", settings->camera.device); config_set_bool(conf, "camera_allow", settings->camera.allow); + +#ifdef HAVE_CHEEVOS + config_set_bool(conf, "cheevos_enable", settings->cheevos.enable); + config_set_bool(conf, "cheevos_test_unofficial", settings->cheevos.test_unofficial); + config_set_string(conf, "cheevos_user_name", settings->cheevos.user_name); + config_set_string(conf, "cheevos_password", settings->cheevos.password); +#endif + config_set_bool(conf, "audio_rate_control", settings->audio.rate_control); config_set_float(conf, "audio_rate_control_delta", settings->audio.rate_control_delta); diff --git a/configuration.h b/configuration.h index e9952f5dd2..21b2a3822a 100644 --- a/configuration.h +++ b/configuration.h @@ -282,6 +282,16 @@ typedef struct settings bool builtin_imageviewer_enable; } multimedia; +#ifdef HAVE_CHEEVOS + struct + { + bool enable; + bool test_unofficial; + char user_name[32]; + char password[32]; + } cheevos; +#endif + int state_slot; bool bundle_assets_extract_enable;