mirror of
https://github.com/libretro/RetroArch
synced 2025-02-06 00:39:53 +00:00
(cheevos) expand leaderboard visibility settings (#15201)
* migrate cheevos_leaderboard_enabled setting to cheevos_visibility_lboard_X * provide translatable strings for leaderboard messages
This commit is contained in:
parent
19aeb52cbc
commit
8ea9651d09
@ -104,13 +104,10 @@ static rcheevos_locals_t rcheevos_locals =
|
||||
{RCHEEVOS_LOAD_STATE_NONE, 0, 0 }, /* load_info */
|
||||
false,/* hardcore_active */
|
||||
false,/* loaded */
|
||||
true, /* core_supports */
|
||||
#ifdef HAVE_GFX_WIDGETS
|
||||
false,/* assign_new_trackers */
|
||||
#endif
|
||||
false,/* leaderboards_enabled */
|
||||
false,/* leaderboard_notifications */
|
||||
false /* leaderboard_trackers */
|
||||
true /* core_supports */
|
||||
};
|
||||
|
||||
rcheevos_locals_t* get_rcheevos_locals(void)
|
||||
@ -502,6 +499,7 @@ static void rcheevos_lboard_submit(rcheevos_locals_t* locals,
|
||||
{
|
||||
char buffer[256];
|
||||
char formatted_value[16];
|
||||
const settings_t *settings = config_get_ptr();
|
||||
|
||||
#if defined(HAVE_GFX_WIDGETS)
|
||||
/* Hide the tracker */
|
||||
@ -523,10 +521,14 @@ static void rcheevos_lboard_submit(rcheevos_locals_t* locals,
|
||||
CHEEVOS_LOG(RCHEEVOS_TAG "Submitting %s for leaderboard %u\n",
|
||||
formatted_value, lboard->id);
|
||||
|
||||
/* Show the on-screen message (regardless of notifications setting). */
|
||||
snprintf(buffer, sizeof(buffer), "Submitted %s for %s", formatted_value, lboard->title);
|
||||
runloop_msg_queue_push(buffer, 0, 2 * 60, false, NULL,
|
||||
MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO);
|
||||
/* Show the on-screen message. */
|
||||
if (settings->bools.cheevos_visibility_lboard_submit)
|
||||
{
|
||||
snprintf(buffer, sizeof(buffer), msg_hash_to_str(MSG_LEADERBOARD_SUBMISSION),
|
||||
formatted_value, lboard->title);
|
||||
runloop_msg_queue_push(buffer, 0, 2 * 60, false, NULL,
|
||||
MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO);
|
||||
}
|
||||
|
||||
/* Start the submit task */
|
||||
rcheevos_client_submit_lboard_entry(lboard->id, value);
|
||||
@ -535,6 +537,7 @@ static void rcheevos_lboard_submit(rcheevos_locals_t* locals,
|
||||
static void rcheevos_lboard_canceled(rcheevos_ralboard_t * lboard,
|
||||
bool widgets_ready)
|
||||
{
|
||||
const settings_t *settings = config_get_ptr();
|
||||
char buffer[256];
|
||||
if (!lboard)
|
||||
return;
|
||||
@ -547,11 +550,10 @@ static void rcheevos_lboard_canceled(rcheevos_ralboard_t * lboard,
|
||||
rcheevos_hide_leaderboard_tracker(&rcheevos_locals, lboard);
|
||||
#endif
|
||||
|
||||
if (rcheevos_locals.leaderboard_notifications)
|
||||
if (settings->bools.cheevos_visibility_lboard_cancel)
|
||||
{
|
||||
strlcpy(buffer, "Leaderboard attempt failed: ",
|
||||
sizeof(buffer));
|
||||
strlcat(buffer, lboard->title, sizeof(buffer));
|
||||
snprintf(buffer, sizeof(buffer), "%s: %s",
|
||||
msg_hash_to_str(MSG_LEADERBOARD_FAILED), lboard->title);
|
||||
runloop_msg_queue_push(buffer, 0, 2 * 60, false, NULL,
|
||||
MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO);
|
||||
}
|
||||
@ -561,6 +563,7 @@ static void rcheevos_lboard_started(
|
||||
rcheevos_ralboard_t * lboard, int value,
|
||||
bool widgets_ready)
|
||||
{
|
||||
const settings_t *settings = config_get_ptr();
|
||||
char buffer[256];
|
||||
if (!lboard)
|
||||
return;
|
||||
@ -574,7 +577,7 @@ static void rcheevos_lboard_started(
|
||||
#if defined(HAVE_GFX_WIDGETS)
|
||||
lboard->value = value;
|
||||
|
||||
if (rcheevos_locals.leaderboard_trackers)
|
||||
if (settings->bools.cheevos_visibility_lboard_trackers)
|
||||
{
|
||||
/* mark the leaderboard as needing a tracker assigned so we can check for merging later */
|
||||
lboard->active_tracker_id = 0xFF;
|
||||
@ -582,12 +585,14 @@ static void rcheevos_lboard_started(
|
||||
}
|
||||
#endif
|
||||
|
||||
if (rcheevos_locals.leaderboard_notifications)
|
||||
if (settings->bools.cheevos_visibility_lboard_start)
|
||||
{
|
||||
if (lboard->description && *lboard->description)
|
||||
snprintf(buffer, sizeof(buffer), "Leaderboard attempt started: %s - %s", lboard->title, lboard->description);
|
||||
snprintf(buffer, sizeof(buffer), "%s: %s - %s",
|
||||
msg_hash_to_str(MSG_LEADERBOARD_STARTED), lboard->title, lboard->description);
|
||||
else
|
||||
snprintf(buffer, sizeof(buffer), "Leaderboard attempt started: %s", lboard->title);
|
||||
snprintf(buffer, sizeof(buffer), "%s: %s",
|
||||
msg_hash_to_str(MSG_LEADERBOARD_STARTED), lboard->title);
|
||||
|
||||
runloop_msg_queue_push(buffer, 0, 2 * 60, false, NULL,
|
||||
MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO);
|
||||
@ -599,12 +604,13 @@ static void rcheevos_lboard_updated(
|
||||
rcheevos_ralboard_t* lboard, int value,
|
||||
bool widgets_ready)
|
||||
{
|
||||
const settings_t *settings = config_get_ptr();
|
||||
if (!lboard)
|
||||
return;
|
||||
|
||||
lboard->value = value;
|
||||
|
||||
if (widgets_ready && rcheevos_locals.leaderboard_trackers &&
|
||||
if (widgets_ready && settings->bools.cheevos_visibility_lboard_trackers &&
|
||||
lboard->active_tracker_id && lboard->active_tracker_id <= 31)
|
||||
{
|
||||
char buffer[32];
|
||||
@ -931,55 +937,45 @@ static void rcheevos_deactivate_leaderboards(void)
|
||||
}
|
||||
}
|
||||
|
||||
void rcheevos_leaderboards_enabled_changed(void)
|
||||
void rcheevos_leaderboard_trackers_visibility_changed(void)
|
||||
{
|
||||
const settings_t* settings = config_get_ptr();
|
||||
const bool leaderboards_enabled = rcheevos_locals.leaderboards_enabled;
|
||||
const bool leaderboard_trackers = rcheevos_locals.leaderboard_trackers;
|
||||
|
||||
rcheevos_locals.leaderboards_enabled = rcheevos_locals.hardcore_active;
|
||||
|
||||
if (string_is_equal(settings->arrays.cheevos_leaderboards_enable, "true"))
|
||||
{
|
||||
rcheevos_locals.leaderboard_notifications = true;
|
||||
rcheevos_locals.leaderboard_trackers = true;
|
||||
}
|
||||
#if defined(HAVE_GFX_WIDGETS)
|
||||
else if (string_is_equal(
|
||||
settings->arrays.cheevos_leaderboards_enable, "trackers"))
|
||||
{
|
||||
rcheevos_locals.leaderboard_notifications = false;
|
||||
rcheevos_locals.leaderboard_trackers = true;
|
||||
}
|
||||
else if (string_is_equal(
|
||||
settings->arrays.cheevos_leaderboards_enable, "notifications"))
|
||||
{
|
||||
rcheevos_locals.leaderboard_notifications = true;
|
||||
rcheevos_locals.leaderboard_trackers = false;
|
||||
}
|
||||
#endif
|
||||
else
|
||||
{
|
||||
rcheevos_locals.leaderboard_notifications = false;
|
||||
rcheevos_locals.leaderboard_trackers = false;
|
||||
}
|
||||
|
||||
if (rcheevos_locals.loaded)
|
||||
{
|
||||
if (leaderboards_enabled != rcheevos_locals.leaderboards_enabled)
|
||||
{
|
||||
if (rcheevos_locals.leaderboards_enabled)
|
||||
rcheevos_activate_leaderboards();
|
||||
else
|
||||
rcheevos_deactivate_leaderboards();
|
||||
}
|
||||
|
||||
#if defined(HAVE_GFX_WIDGETS)
|
||||
if (!rcheevos_locals.leaderboard_trackers && leaderboard_trackers)
|
||||
if (!settings->bools.cheevos_visibility_lboard_trackers)
|
||||
{
|
||||
/* Hide any visible trackers */
|
||||
rcheevos_hide_leaderboard_trackers();
|
||||
}
|
||||
else
|
||||
{
|
||||
unsigned i;
|
||||
rc_runtime_lboard_t* lboard = rcheevos_locals.runtime.lboards;
|
||||
for (i = 0; i < rcheevos_locals.runtime.lboard_count; ++i, ++lboard)
|
||||
{
|
||||
if (!lboard->lboard)
|
||||
continue;
|
||||
|
||||
if (lboard->lboard->state == RC_LBOARD_STATE_STARTED)
|
||||
{
|
||||
rcheevos_ralboard_t* ralboard = rcheevos_find_lboard(lboard->id);
|
||||
if (ralboard && !ralboard->active_tracker_id)
|
||||
{
|
||||
/* mark the leaderboard as needing a tracker assigned so we can check for merging later */
|
||||
ralboard->active_tracker_id = 0xFF;
|
||||
rcheevos_locals.assign_new_trackers = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
rcheevos_ralboard_t* ralboard = rcheevos_find_lboard(lboard->id);
|
||||
if (ralboard && ralboard->active_tracker_id)
|
||||
rcheevos_hide_leaderboard_tracker(&rcheevos_locals, ralboard);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
@ -1023,7 +1019,7 @@ static void rcheevos_toggle_hardcore_active(rcheevos_locals_t* locals)
|
||||
rcheevos_enforce_hardcore_settings();
|
||||
|
||||
/* Reactivate leaderboards */
|
||||
rcheevos_leaderboards_enabled_changed();
|
||||
rcheevos_activate_leaderboards();
|
||||
|
||||
/* reset the game */
|
||||
command_event(CMD_EVENT_RESET, NULL);
|
||||
@ -1055,7 +1051,7 @@ static void rcheevos_toggle_hardcore_active(rcheevos_locals_t* locals)
|
||||
CHEEVOS_LOG(RCHEEVOS_TAG "Hardcore paused\n");
|
||||
|
||||
/* deactivate leaderboards */
|
||||
rcheevos_leaderboards_enabled_changed();
|
||||
rcheevos_deactivate_leaderboards();
|
||||
}
|
||||
|
||||
/* re-init rewind */
|
||||
@ -1101,8 +1097,11 @@ void rcheevos_hardcore_enabled_changed(void)
|
||||
{
|
||||
rcheevos_toggle_hardcore_active(&rcheevos_locals);
|
||||
|
||||
/* update leaderboard state flags */
|
||||
rcheevos_leaderboards_enabled_changed();
|
||||
/* update leaderboard state */
|
||||
if (rcheevos_locals.hardcore_active)
|
||||
rcheevos_activate_leaderboards();
|
||||
else
|
||||
rcheevos_deactivate_leaderboards();
|
||||
}
|
||||
else if (rcheevos_locals.hardcore_active && rcheevos_locals.loaded)
|
||||
{
|
||||
@ -1367,31 +1366,8 @@ bool rcheevos_set_serialized_data(void* buffer)
|
||||
{
|
||||
settings_t* settings = config_get_ptr();
|
||||
|
||||
if (rcheevos_locals.leaderboard_trackers)
|
||||
{
|
||||
unsigned i;
|
||||
rc_runtime_lboard_t* lboard = rcheevos_locals.runtime.lboards;
|
||||
for (i = 0; i < rcheevos_locals.runtime.lboard_count; ++i, ++lboard)
|
||||
{
|
||||
if (!lboard->lboard)
|
||||
continue;
|
||||
|
||||
if (lboard->lboard->state == RC_LBOARD_STATE_STARTED)
|
||||
{
|
||||
rcheevos_ralboard_t* ralboard = rcheevos_find_lboard(lboard->id);
|
||||
if (ralboard != NULL)
|
||||
{
|
||||
char value[32];
|
||||
rc_runtime_format_lboard_value(value, sizeof(value), lboard->value, ralboard->format);
|
||||
gfx_widgets_set_leaderboard_display(lboard->id, value);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
gfx_widgets_set_leaderboard_display(lboard->id, NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (settings->bools.cheevos_visibility_lboard_trackers)
|
||||
rcheevos_leaderboard_trackers_visibility_changed();
|
||||
|
||||
if (settings->bools.cheevos_challenge_indicators)
|
||||
{
|
||||
@ -1790,8 +1766,7 @@ static void rcheevos_start_session_async(retro_task_t* task)
|
||||
* (rich presence has already been activated) */
|
||||
rcheevos_activate_achievements();
|
||||
|
||||
if (rcheevos_locals.leaderboards_enabled
|
||||
&& rcheevos_locals.hardcore_active)
|
||||
if (rcheevos_locals.hardcore_active)
|
||||
rcheevos_activate_leaderboards();
|
||||
|
||||
/* disable any unsupported achievements */
|
||||
@ -2220,7 +2195,6 @@ bool rcheevos_load(const void *data)
|
||||
CHEEVOS_LOG(RCHEEVOS_TAG "Load started, hardcore %sactive\n", rcheevos_hardcore_active() ? "" : "not ");
|
||||
|
||||
rcheevos_validate_config_settings();
|
||||
rcheevos_leaderboards_enabled_changed();
|
||||
|
||||
/* Refresh the user agent in case it's not set or has changed */
|
||||
rcheevos_client_initialize();
|
||||
|
@ -45,7 +45,7 @@ bool rcheevos_hardcore_active(void);
|
||||
|
||||
void rcheevos_validate_config_settings(void);
|
||||
|
||||
void rcheevos_leaderboards_enabled_changed(void);
|
||||
void rcheevos_leaderboard_trackers_visibility_changed(void);
|
||||
|
||||
void rcheevos_set_support_cheevos(bool state);
|
||||
bool rcheevos_get_support_cheevos(void);
|
||||
|
@ -194,13 +194,10 @@ typedef struct rcheevos_locals_t
|
||||
|
||||
bool hardcore_active; /* hardcore functionality is active */
|
||||
bool loaded; /* load task has completed */
|
||||
bool core_supports; /* false if core explicitly disables achievements */
|
||||
#ifdef HAVE_GFX_WIDGETS
|
||||
bool assign_new_trackers; /* a new leaderboard was started and needs a tracker assigned */
|
||||
#endif
|
||||
bool leaderboards_enabled; /* leaderboards are enabled */
|
||||
bool leaderboard_notifications; /* leaderboard notifications are enabled */
|
||||
bool leaderboard_trackers; /* leaderboard trackers are enabled */
|
||||
bool core_supports; /* false if core explicitly disables achievements */
|
||||
} rcheevos_locals_t;
|
||||
|
||||
rcheevos_locals_t* get_rcheevos_locals(void);
|
||||
|
@ -193,6 +193,10 @@
|
||||
#define DEFAULT_CHEEVOS_VISIBILITY_UNLOCK true
|
||||
#define DEFAULT_CHEEVOS_VISIBILITY_MASTERY true
|
||||
#define DEFAULT_CHEEVOS_VISIBILITY_ACCOUNT true
|
||||
#define DEFAULT_CHEEVOS_VISIBILITY_LBOARD_START true
|
||||
#define DEFAULT_CHEEVOS_VISIBILITY_LBOARD_SUBMIT true
|
||||
#define DEFAULT_CHEEVOS_VISIBILITY_LBOARD_CANCEL true
|
||||
#define DEFAULT_CHEEVOS_VISIBILITY_LBOARD_TRACKERS true
|
||||
#endif
|
||||
|
||||
/* VIDEO */
|
||||
|
@ -1435,7 +1435,7 @@ static struct config_array_setting *populate_settings_array(settings_t *settings
|
||||
SETTING_ARRAY("cheevos_username", settings->arrays.cheevos_username, false, NULL, true);
|
||||
SETTING_ARRAY("cheevos_password", settings->arrays.cheevos_password, false, NULL, true);
|
||||
SETTING_ARRAY("cheevos_token", settings->arrays.cheevos_token, false, NULL, true);
|
||||
SETTING_ARRAY("cheevos_leaderboards_enable", settings->arrays.cheevos_leaderboards_enable, true, "true", true);
|
||||
SETTING_ARRAY("cheevos_leaderboards_enable", settings->arrays.cheevos_leaderboards_enable, true, "", true); /* deprecated */
|
||||
#endif
|
||||
SETTING_ARRAY("video_context_driver", settings->arrays.video_context_driver, false, NULL, true);
|
||||
SETTING_ARRAY("audio_driver", settings->arrays.audio_driver, false, NULL, true);
|
||||
@ -1959,6 +1959,10 @@ static struct config_bool_setting *populate_settings_bool(
|
||||
SETTING_BOOL("cheevos_visibility_unlock", &settings->bools.cheevos_visibility_unlock, true, DEFAULT_CHEEVOS_VISIBILITY_UNLOCK, false);
|
||||
SETTING_BOOL("cheevos_visibility_mastery", &settings->bools.cheevos_visibility_mastery, true, DEFAULT_CHEEVOS_VISIBILITY_MASTERY, false);
|
||||
SETTING_BOOL("cheevos_visibility_account", &settings->bools.cheevos_visibility_account, true, DEFAULT_CHEEVOS_VISIBILITY_ACCOUNT, false);
|
||||
SETTING_BOOL("cheevos_visibility_lboard_start", &settings->bools.cheevos_visibility_lboard_start, true, DEFAULT_CHEEVOS_VISIBILITY_LBOARD_START, false);
|
||||
SETTING_BOOL("cheevos_visibility_lboard_submit", &settings->bools.cheevos_visibility_lboard_submit, true, DEFAULT_CHEEVOS_VISIBILITY_LBOARD_SUBMIT, false);
|
||||
SETTING_BOOL("cheevos_visibility_lboard_cancel", &settings->bools.cheevos_visibility_lboard_cancel, true, DEFAULT_CHEEVOS_VISIBILITY_LBOARD_CANCEL, false);
|
||||
SETTING_BOOL("cheevos_visibility_lboard_trackers", &settings->bools.cheevos_visibility_lboard_trackers, true, DEFAULT_CHEEVOS_VISIBILITY_LBOARD_TRACKERS, false);
|
||||
#endif
|
||||
#ifdef HAVE_OVERLAY
|
||||
SETTING_BOOL("input_overlay_enable", &settings->bools.input_overlay_enable, true, config_overlay_enable_default(), false);
|
||||
@ -2652,12 +2656,6 @@ void config_set_defaults(void *data)
|
||||
settings->arrays.ai_service_url,
|
||||
DEFAULT_AI_SERVICE_URL);
|
||||
|
||||
#ifdef HAVE_CHEEVOS
|
||||
configuration_set_string(settings,
|
||||
settings->arrays.cheevos_leaderboards_enable,
|
||||
"true");
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_MATERIALUI
|
||||
if (g_defaults.menu_materialui_menu_color_theme_enable)
|
||||
settings->uints.menu_materialui_color_theme = g_defaults.menu_materialui_menu_color_theme;
|
||||
@ -3808,6 +3806,41 @@ static bool config_load_file(global_t *global,
|
||||
if (settings->floats.fastforward_ratio < 0.0f)
|
||||
configuration_set_float(settings, settings->floats.fastforward_ratio, 0.0f);
|
||||
|
||||
#ifdef HAVE_CHEEVOS
|
||||
if (!string_is_empty(settings->arrays.cheevos_leaderboards_enable))
|
||||
{
|
||||
if (string_is_equal(settings->arrays.cheevos_leaderboards_enable, "true"))
|
||||
{
|
||||
settings->bools.cheevos_visibility_lboard_start = true;
|
||||
settings->bools.cheevos_visibility_lboard_submit = true;
|
||||
settings->bools.cheevos_visibility_lboard_cancel = true;
|
||||
settings->bools.cheevos_visibility_lboard_trackers = true;
|
||||
}
|
||||
else if (string_is_equal(settings->arrays.cheevos_leaderboards_enable, "trackers"))
|
||||
{
|
||||
settings->bools.cheevos_visibility_lboard_start = false;
|
||||
settings->bools.cheevos_visibility_lboard_submit = true;
|
||||
settings->bools.cheevos_visibility_lboard_cancel = false;
|
||||
settings->bools.cheevos_visibility_lboard_trackers = true;
|
||||
}
|
||||
else if (string_is_equal(settings->arrays.cheevos_leaderboards_enable, "notifications"))
|
||||
{
|
||||
settings->bools.cheevos_visibility_lboard_start = true;
|
||||
settings->bools.cheevos_visibility_lboard_submit = true;
|
||||
settings->bools.cheevos_visibility_lboard_cancel = true;
|
||||
settings->bools.cheevos_visibility_lboard_trackers = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
settings->bools.cheevos_visibility_lboard_start = false;
|
||||
settings->bools.cheevos_visibility_lboard_submit = false;
|
||||
settings->bools.cheevos_visibility_lboard_cancel = false;
|
||||
settings->bools.cheevos_visibility_lboard_trackers = false;
|
||||
}
|
||||
settings->arrays.cheevos_leaderboards_enable[0] = '\0';
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_LAKKA
|
||||
configuration_set_bool(settings,
|
||||
settings->bools.ssh_enable, filestream_exists(LAKKA_SSH_PATH));
|
||||
|
@ -829,6 +829,10 @@ typedef struct settings
|
||||
bool cheevos_visibility_unlock;
|
||||
bool cheevos_visibility_mastery;
|
||||
bool cheevos_visibility_account;
|
||||
bool cheevos_visibility_lboard_start;
|
||||
bool cheevos_visibility_lboard_submit;
|
||||
bool cheevos_visibility_lboard_cancel;
|
||||
bool cheevos_visibility_lboard_trackers;
|
||||
|
||||
/* Camera */
|
||||
bool camera_allow;
|
||||
|
@ -523,10 +523,6 @@ MSG_HASH(
|
||||
MENU_ENUM_LABEL_CHEEVOS_HARDCORE_MODE_ENABLE,
|
||||
"cheevos_hardcore_mode_enable"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_CHEEVOS_LEADERBOARDS_ENABLE,
|
||||
"cheevos_leaderboards_enable"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_CHEEVOS_RICHPRESENCE_ENABLE,
|
||||
"cheevos_richpresence_enable"
|
||||
@ -611,6 +607,22 @@ MSG_HASH(
|
||||
MENU_ENUM_LABEL_CHEEVOS_VISIBILITY_ACCOUNT,
|
||||
"cheevos_visibility_account"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_CHEEVOS_VISIBILITY_LBOARD_START,
|
||||
"cheevos_visibility_lboard_start"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_CHEEVOS_VISIBILITY_LBOARD_SUBMIT,
|
||||
"cheevos_visibility_lboard_submit"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_CHEEVOS_VISIBILITY_LBOARD_CANCEL,
|
||||
"cheevos_visibility_lboard_cancel"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_CHEEVOS_VISIBILITY_LBOARD_TRACKERS,
|
||||
"cheevos_visibility_lboard_trackers"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_CLOSE_CONTENT,
|
||||
"unload_core"
|
||||
|
@ -6378,10 +6378,6 @@ MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_CHEEVOS_LEADERBOARDS_ENABLE,
|
||||
"Leaderboards"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_CHEEVOS_LEADERBOARDS_ENABLE,
|
||||
"Game specific leaderboards. Has no effect if 'Hardcore Mode' is disabled."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_CHEEVOS_RICHPRESENCE_ENABLE,
|
||||
"Rich Presence"
|
||||
@ -6548,6 +6544,38 @@ MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_CHEEVOS_CHALLENGE_INDICATORS,
|
||||
"Shows on-screen indicators while certain achievements can be earned."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_CHEEVOS_VISIBILITY_LBOARD_START,
|
||||
"Leaderboard Start Messages"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_CHEEVOS_VISIBILITY_LBOARD_START,
|
||||
"Shows a description of a leaderboard when it becomes active."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_CHEEVOS_VISIBILITY_LBOARD_SUBMIT,
|
||||
"Leaderboard Submit Messages"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_CHEEVOS_VISIBILITY_LBOARD_SUBMIT,
|
||||
"Shows a message with the value being submitted when a leaderboard attempt is completed."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_CHEEVOS_VISIBILITY_LBOARD_CANCEL,
|
||||
"Leaderboard Failed Messages"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_CHEEVOS_VISIBILITY_LBOARD_CANCEL,
|
||||
"Shows a message when a leaderboard attempt fails."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_CHEEVOS_VISIBILITY_LBOARD_TRACKERS,
|
||||
"Leaderboard Trackers"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_CHEEVOS_VISIBILITY_LBOARD_TRACKERS,
|
||||
"Shows trackers on the screen with the current value of active leaderboards."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_CHEEVOS_VISIBILITY_ACCOUNT,
|
||||
"Login Messages"
|
||||
@ -14033,6 +14061,18 @@ MSG_HASH(
|
||||
MSG_ACHIEVEMENT_UNLOCKED,
|
||||
"Achievement Unlocked"
|
||||
)
|
||||
MSG_HASH(
|
||||
MSG_LEADERBOARD_STARTED,
|
||||
"Leaderboard attempt started"
|
||||
)
|
||||
MSG_HASH(
|
||||
MSG_LEADERBOARD_FAILED,
|
||||
"Leaderboard attempt failed"
|
||||
)
|
||||
MSG_HASH(
|
||||
MSG_LEADERBOARD_SUBMISSION,
|
||||
"Submitted %s for %s" /* Submitted [value] for [leaderboard name] */
|
||||
)
|
||||
MSG_HASH(
|
||||
MSG_CHANGE_THUMBNAIL_TYPE,
|
||||
"Change thumbnail type"
|
||||
|
@ -296,7 +296,6 @@ DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_achievement_resume_cancel, MENU_
|
||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cheevos_enable, MENU_ENUM_SUBLABEL_CHEEVOS_ENABLE)
|
||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cheevos_test_unofficial, MENU_ENUM_SUBLABEL_CHEEVOS_TEST_UNOFFICIAL)
|
||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cheevos_hardcore_mode_enable, MENU_ENUM_SUBLABEL_CHEEVOS_HARDCORE_MODE_ENABLE)
|
||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cheevos_leaderboards_enable, MENU_ENUM_SUBLABEL_CHEEVOS_LEADERBOARDS_ENABLE)
|
||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cheevos_challenge_indicators, MENU_ENUM_SUBLABEL_CHEEVOS_CHALLENGE_INDICATORS)
|
||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cheevos_richpresence_enable, MENU_ENUM_SUBLABEL_CHEEVOS_RICHPRESENCE_ENABLE)
|
||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cheevos_badges_enable, MENU_ENUM_SUBLABEL_CHEEVOS_BADGES_ENABLE)
|
||||
@ -316,6 +315,10 @@ DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cheevos_visibility_summary, MENU_
|
||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cheevos_visibility_unlock, MENU_ENUM_SUBLABEL_CHEEVOS_VISIBILITY_UNLOCK)
|
||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cheevos_visibility_mastery, MENU_ENUM_SUBLABEL_CHEEVOS_VISIBILITY_MASTERY)
|
||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cheevos_visibility_account, MENU_ENUM_SUBLABEL_CHEEVOS_VISIBILITY_ACCOUNT)
|
||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cheevos_visibility_lboard_start, MENU_ENUM_SUBLABEL_CHEEVOS_VISIBILITY_LBOARD_START)
|
||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cheevos_visibility_lboard_submit, MENU_ENUM_SUBLABEL_CHEEVOS_VISIBILITY_LBOARD_SUBMIT)
|
||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cheevos_visibility_lboard_cancel, MENU_ENUM_SUBLABEL_CHEEVOS_VISIBILITY_LBOARD_CANCEL)
|
||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cheevos_visibility_lboard_trackers, MENU_ENUM_SUBLABEL_CHEEVOS_VISIBILITY_LBOARD_TRACKERS)
|
||||
|
||||
#endif
|
||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_menu_views_settings_list, MENU_ENUM_SUBLABEL_MENU_VIEWS_SETTINGS)
|
||||
@ -4381,9 +4384,6 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs,
|
||||
case MENU_ENUM_LABEL_CHEEVOS_HARDCORE_MODE_ENABLE:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_cheevos_hardcore_mode_enable);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_CHEEVOS_LEADERBOARDS_ENABLE:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_cheevos_leaderboards_enable);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_CHEEVOS_CHALLENGE_INDICATORS:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_cheevos_challenge_indicators);
|
||||
break;
|
||||
@ -4437,6 +4437,18 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs,
|
||||
case MENU_ENUM_LABEL_CHEEVOS_VISIBILITY_ACCOUNT:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_cheevos_visibility_account);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_CHEEVOS_VISIBILITY_LBOARD_START:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_cheevos_visibility_lboard_start);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_CHEEVOS_VISIBILITY_LBOARD_SUBMIT:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_cheevos_visibility_lboard_submit);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_CHEEVOS_VISIBILITY_LBOARD_CANCEL:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_cheevos_visibility_lboard_cancel);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_CHEEVOS_VISIBILITY_LBOARD_TRACKERS:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_cheevos_visibility_lboard_trackers);
|
||||
break;
|
||||
#endif
|
||||
case MENU_ENUM_LABEL_SETTINGS:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_settings);
|
||||
|
@ -8587,6 +8587,10 @@ unsigned menu_displaylist_build_list(
|
||||
{MENU_ENUM_LABEL_CHEEVOS_VISIBILITY_UNLOCK, PARSE_ONLY_BOOL, true},
|
||||
{MENU_ENUM_LABEL_CHEEVOS_VISIBILITY_MASTERY, PARSE_ONLY_BOOL, true},
|
||||
{MENU_ENUM_LABEL_CHEEVOS_CHALLENGE_INDICATORS, PARSE_ONLY_BOOL, true},
|
||||
{MENU_ENUM_LABEL_CHEEVOS_VISIBILITY_LBOARD_START, PARSE_ONLY_BOOL, true},
|
||||
{MENU_ENUM_LABEL_CHEEVOS_VISIBILITY_LBOARD_SUBMIT, PARSE_ONLY_BOOL, true},
|
||||
{MENU_ENUM_LABEL_CHEEVOS_VISIBILITY_LBOARD_CANCEL, PARSE_ONLY_BOOL, true},
|
||||
{MENU_ENUM_LABEL_CHEEVOS_VISIBILITY_LBOARD_TRACKERS, PARSE_ONLY_BOOL, true},
|
||||
{MENU_ENUM_LABEL_CHEEVOS_VISIBILITY_ACCOUNT, PARSE_ONLY_BOOL, true},
|
||||
{MENU_ENUM_LABEL_CHEEVOS_VERBOSE_ENABLE, PARSE_ONLY_BOOL, true},
|
||||
};
|
||||
|
@ -8913,9 +8913,9 @@ static void achievement_hardcore_mode_write_handler(rarch_setting_t *setting)
|
||||
rcheevos_hardcore_enabled_changed();
|
||||
}
|
||||
|
||||
static void achievement_leaderboards_enabled_write_handler(rarch_setting_t* setting)
|
||||
static void achievement_leaderboard_trackers_enabled_write_handler(rarch_setting_t* setting)
|
||||
{
|
||||
rcheevos_leaderboards_enabled_changed();
|
||||
rcheevos_leaderboard_trackers_visibility_changed();
|
||||
}
|
||||
|
||||
static void setting_get_string_representation_uint_cheevos_visibility_summary(
|
||||
@ -20212,30 +20212,6 @@ static bool setting_append_list(
|
||||
SD_FLAG_ADVANCED
|
||||
);
|
||||
|
||||
CONFIG_STRING_OPTIONS(
|
||||
list, list_info,
|
||||
settings->arrays.cheevos_leaderboards_enable,
|
||||
sizeof(settings->arrays.cheevos_leaderboards_enable),
|
||||
MENU_ENUM_LABEL_CHEEVOS_LEADERBOARDS_ENABLE,
|
||||
MENU_ENUM_LABEL_VALUE_CHEEVOS_LEADERBOARDS_ENABLE,
|
||||
"true",
|
||||
"false|true",
|
||||
&group_info,
|
||||
&subgroup_info,
|
||||
parent_group,
|
||||
achievement_leaderboards_enabled_write_handler,
|
||||
general_read_handler);
|
||||
#if defined(HAVE_GFX_WIDGETS)
|
||||
(*list)[list_info->index - 1].values = "false|true|trackers|notifications";
|
||||
(*list)[list_info->index - 1].action_ok = setting_action_ok_mapped_string;
|
||||
#else
|
||||
(*list)[list_info->index - 1].action_ok = setting_string_action_left_string_options;
|
||||
#endif
|
||||
(*list)[list_info->index - 1].action_left = setting_string_action_left_string_options;
|
||||
(*list)[list_info->index - 1].action_right = setting_string_action_right_string_options;
|
||||
(*list)[list_info->index - 1].get_string_representation = achievement_leaderboards_get_string_representation;
|
||||
(*list)[list_info->index - 1].free_flags &= ~SD_FREE_FLAG_VALUES;
|
||||
|
||||
CONFIG_BOOL(
|
||||
list, list_info,
|
||||
&settings->bools.cheevos_richpresence_enable,
|
||||
@ -20499,6 +20475,70 @@ static bool setting_append_list(
|
||||
SD_FLAG_NONE
|
||||
);
|
||||
|
||||
CONFIG_BOOL(
|
||||
list, list_info,
|
||||
&settings->bools.cheevos_visibility_lboard_start,
|
||||
MENU_ENUM_LABEL_CHEEVOS_VISIBILITY_LBOARD_START,
|
||||
MENU_ENUM_LABEL_VALUE_CHEEVOS_VISIBILITY_LBOARD_START,
|
||||
DEFAULT_CHEEVOS_VISIBILITY_LBOARD_START,
|
||||
MENU_ENUM_LABEL_VALUE_OFF,
|
||||
MENU_ENUM_LABEL_VALUE_ON,
|
||||
&group_info,
|
||||
&subgroup_info,
|
||||
parent_group,
|
||||
general_write_handler,
|
||||
general_read_handler,
|
||||
SD_FLAG_NONE
|
||||
);
|
||||
|
||||
CONFIG_BOOL(
|
||||
list, list_info,
|
||||
&settings->bools.cheevos_visibility_lboard_submit,
|
||||
MENU_ENUM_LABEL_CHEEVOS_VISIBILITY_LBOARD_SUBMIT,
|
||||
MENU_ENUM_LABEL_VALUE_CHEEVOS_VISIBILITY_LBOARD_SUBMIT,
|
||||
DEFAULT_CHEEVOS_VISIBILITY_LBOARD_SUBMIT,
|
||||
MENU_ENUM_LABEL_VALUE_OFF,
|
||||
MENU_ENUM_LABEL_VALUE_ON,
|
||||
&group_info,
|
||||
&subgroup_info,
|
||||
parent_group,
|
||||
general_write_handler,
|
||||
general_read_handler,
|
||||
SD_FLAG_NONE
|
||||
);
|
||||
|
||||
CONFIG_BOOL(
|
||||
list, list_info,
|
||||
&settings->bools.cheevos_visibility_lboard_cancel,
|
||||
MENU_ENUM_LABEL_CHEEVOS_VISIBILITY_LBOARD_CANCEL,
|
||||
MENU_ENUM_LABEL_VALUE_CHEEVOS_VISIBILITY_LBOARD_CANCEL,
|
||||
DEFAULT_CHEEVOS_VISIBILITY_LBOARD_CANCEL,
|
||||
MENU_ENUM_LABEL_VALUE_OFF,
|
||||
MENU_ENUM_LABEL_VALUE_ON,
|
||||
&group_info,
|
||||
&subgroup_info,
|
||||
parent_group,
|
||||
general_write_handler,
|
||||
general_read_handler,
|
||||
SD_FLAG_NONE
|
||||
);
|
||||
|
||||
CONFIG_BOOL(
|
||||
list, list_info,
|
||||
&settings->bools.cheevos_visibility_lboard_trackers,
|
||||
MENU_ENUM_LABEL_CHEEVOS_VISIBILITY_LBOARD_TRACKERS,
|
||||
MENU_ENUM_LABEL_VALUE_CHEEVOS_VISIBILITY_LBOARD_TRACKERS,
|
||||
DEFAULT_CHEEVOS_VISIBILITY_LBOARD_TRACKERS,
|
||||
MENU_ENUM_LABEL_VALUE_OFF,
|
||||
MENU_ENUM_LABEL_VALUE_ON,
|
||||
&group_info,
|
||||
&subgroup_info,
|
||||
parent_group,
|
||||
achievement_leaderboard_trackers_enabled_write_handler,
|
||||
general_read_handler,
|
||||
SD_FLAG_NONE
|
||||
);
|
||||
|
||||
CONFIG_BOOL(
|
||||
list, list_info,
|
||||
&settings->bools.cheevos_verbose_enable,
|
||||
|
@ -423,6 +423,9 @@ enum msg_hash_enums
|
||||
MSG_TAKING_SCREENSHOT,
|
||||
MSG_SCREENSHOT_SAVED,
|
||||
MSG_ACHIEVEMENT_UNLOCKED,
|
||||
MSG_LEADERBOARD_STARTED,
|
||||
MSG_LEADERBOARD_FAILED,
|
||||
MSG_LEADERBOARD_SUBMISSION,
|
||||
MSG_CHANGE_THUMBNAIL_TYPE,
|
||||
MSG_TOGGLE_FULLSCREEN_THUMBNAILS,
|
||||
MSG_TOGGLE_CONTENT_METADATA,
|
||||
@ -1754,6 +1757,10 @@ enum msg_hash_enums
|
||||
MENU_LABEL(CHEEVOS_VISIBILITY_UNLOCK),
|
||||
MENU_LABEL(CHEEVOS_VISIBILITY_MASTERY),
|
||||
MENU_LABEL(CHEEVOS_VISIBILITY_ACCOUNT),
|
||||
MENU_LABEL(CHEEVOS_VISIBILITY_LBOARD_START),
|
||||
MENU_LABEL(CHEEVOS_VISIBILITY_LBOARD_SUBMIT),
|
||||
MENU_LABEL(CHEEVOS_VISIBILITY_LBOARD_CANCEL),
|
||||
MENU_LABEL(CHEEVOS_VISIBILITY_LBOARD_TRACKERS),
|
||||
|
||||
MENU_ENUM_LABEL_VALUE_CHEEVOS_VISIBILITY_SUMMARY_ALLGAMES,
|
||||
MENU_ENUM_LABEL_VALUE_CHEEVOS_VISIBILITY_SUMMARY_HASCHEEVOS,
|
||||
|
@ -906,39 +906,53 @@
|
||||
# cheevos_username =
|
||||
# cheevos_password =
|
||||
|
||||
# The hardcore mode disables savestates and cheating features, but it
|
||||
# makes the achievements points double.
|
||||
# cheevos_hardcore_mode_enable = false
|
||||
# Show a popup when logging in to RetroAchievements.
|
||||
# cheevos_visibility_account = true
|
||||
|
||||
# The hardcore mode disables savestates and cheating features. Achievements
|
||||
# earned in hardcore mode are uniquely marked so that you can show others
|
||||
# what you've achieved without emulator assistance features.
|
||||
# cheevos_hardcore_mode_enable = true
|
||||
|
||||
# Show a popup when an achievement is unlocked.
|
||||
# cheevos_visibility_unlock = true
|
||||
|
||||
# Play the 'unlock' audio sound when an achievement is unlocked.
|
||||
# cheevos_unlock_sound_enable = false
|
||||
|
||||
# Show RetroAchievements related messages right after loading a game, such as
|
||||
# successfull login and the number of cheevos you have unlocked for the game.
|
||||
# Take a screenshot when an achievement is triggered.
|
||||
# cheevos_auto_screenshot = false
|
||||
|
||||
# Show a popup when all achievements for a game are unlocked.
|
||||
# cheevos_visibility_mastery = true
|
||||
|
||||
# Shows additional diagnostic and error messages
|
||||
# cheevos_verbose_enable = false
|
||||
|
||||
# Show achievements' badges in Quick Menu > Achievements List.
|
||||
# (note: has no effect if menu_driver = rgui).
|
||||
# cheevos_badges_enable = false
|
||||
|
||||
# Take a screenshot when an achievement is triggered.
|
||||
# cheevos_auto_screenshot = false
|
||||
|
||||
# Besides achievements, some games also have leaderboards, where you can
|
||||
# compete for high-scores, speedruns, etc.
|
||||
# cheevos_leaderboards_enable = false
|
||||
|
||||
# Show an on-screen indicator when attempting challenging achievements
|
||||
# to provide feedback when the attempt has failed (for achievements that
|
||||
# support it)
|
||||
# cheevos_challenge_indicators = true
|
||||
|
||||
# Shows a message when a leaderboard activates.
|
||||
# cheevos_visibility_lboard_start = true
|
||||
|
||||
# Shows a message with your score when a leaderboard is submitted to the server.
|
||||
# cheevos_visibility_lboard_submit = true
|
||||
|
||||
# Shows an on-screen tracker with the current value of active leaderboards.
|
||||
# cheevos_visibility_lboard_trackers = true
|
||||
|
||||
# Send some messages to the RetroAchievements.org saying, for example,
|
||||
# where you are in the game, how many lives you have, your score, etc.
|
||||
# cheevos_richpresence_enable = true
|
||||
|
||||
# Even after unlocking achievements in previous sessions, you may still want
|
||||
# to see them triggering in the current session.
|
||||
# to see them triggering in the current session. (encore mode)
|
||||
# cheevos_start_active = false
|
||||
|
||||
# Unnoficial achievements are used only for achievement creators and testers.
|
||||
|
Loading…
x
Reference in New Issue
Block a user