From 58de712b77b450df2eca47b13b75a2949c993242 Mon Sep 17 00:00:00 2001 From: meleu Date: Sat, 1 Jul 2017 15:26:09 -0300 Subject: [PATCH] show useful OSD messages to cheevos users after launching a game --- cheevos/cheevos.c | 30 +++++++++++++++++++++++++++++- configuration.c | 1 + configuration.h | 1 + 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/cheevos/cheevos.c b/cheevos/cheevos.c index 1d95646b17..b2d8791783 100644 --- a/cheevos/cheevos.c +++ b/cheevos/cheevos.c @@ -2914,7 +2914,6 @@ static int cheevos_iterate(coro_t* coro) RARCH_ERR("CHEEVOS error loading achievements.\n"); CORO_STOP(); } - #endif #ifdef CHEEVOS_SAVE_JSON @@ -2944,6 +2943,35 @@ static int cheevos_iterate(coro_t* coro) * Outputs: */ CORO_GOSUB(PLAYING); + + if(SETTINGS->bools.cheevos_verbose_enable) + { + const cheevo_t* cheevo = cheevos_locals.core.cheevos; + const cheevo_t* end = cheevo + cheevos_locals.core.count; + int number_of_unlocked = 0; + int mode; + char msg[256]; + + snprintf(msg, sizeof(msg), "RetroAchievements: logged in as \"%s\".", + SETTINGS->arrays.cheevos_username); + msg[sizeof(msg) - 1] = 0; + runloop_msg_queue_push(msg, 0, 3 * 60, false); + + if(SETTINGS->bools.cheevos_hardcore_mode_enable) + mode = CHEEVOS_ACTIVE_HARDCORE; + else + mode = CHEEVOS_ACTIVE_SOFTCORE; + + for(; cheevo < end; cheevo++) + if(cheevo->active & mode) + number_of_unlocked++; + + snprintf(msg, sizeof(msg), "You have %d of %d achievements unlocked.", + number_of_unlocked, cheevos_locals.core.count); + msg[sizeof(msg) - 1] = 0; + runloop_msg_queue_push(msg, 0, 6 * 60, false); + } + CORO_STOP(); /************************************************************************** diff --git a/configuration.c b/configuration.c index 655ce0306d..1704386fbb 100644 --- a/configuration.c +++ b/configuration.c @@ -1219,6 +1219,7 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings, SETTING_BOOL("cheevos_enable", &settings->bools.cheevos_enable, true, cheevos_enable, false); SETTING_BOOL("cheevos_test_unofficial", &settings->bools.cheevos_test_unofficial, true, false, false); SETTING_BOOL("cheevos_hardcore_mode_enable", &settings->bools.cheevos_hardcore_mode_enable, true, false, false); + SETTING_BOOL("cheevos_verbose_enable", &settings->bools.cheevos_verbose_enable, true, false, false); #endif #ifdef HAVE_OVERLAY SETTING_BOOL("input_overlay_enable", &settings->bools.input_overlay_enable, true, config_overlay_enable_default(), false); diff --git a/configuration.h b/configuration.h index 679787eafb..8d20c8daaf 100644 --- a/configuration.h +++ b/configuration.h @@ -158,6 +158,7 @@ typedef struct settings bool cheevos_enable; bool cheevos_test_unofficial; bool cheevos_hardcore_mode_enable; + bool cheevos_verbose_enable; #endif /* Camera */