Add Achievements Visibility submenu options

- Startup Summary split off from Verbose Mode, added option to hide for games with zero core cheevos
- Some existing options moved into this submenu
- Leaderboard-related options coming in future PR
This commit is contained in:
retroNUC 2023-01-04 16:21:02 +00:00 committed by LibretroAdmin
parent 253be8e682
commit 6e81098132
18 changed files with 325 additions and 91 deletions

View File

@ -331,24 +331,27 @@ void rcheevos_award_achievement(rcheevos_locals_t* locals,
cheevo->id, cheevo->title, cheevo->description);
/* Show the on screen message. */
#if defined(HAVE_GFX_WIDGETS)
if (widgets_ready)
gfx_widgets_push_achievement(msg_hash_to_str(MSG_ACHIEVEMENT_UNLOCKED), cheevo->title, cheevo->badge);
else
#endif
if (settings->bools.cheevos_visibility_unlock)
{
char buffer[256];
size_t _len = strlcpy(buffer,
#if defined(HAVE_GFX_WIDGETS)
if (widgets_ready)
gfx_widgets_push_achievement(msg_hash_to_str(MSG_ACHIEVEMENT_UNLOCKED), cheevo->title, cheevo->badge);
else
#endif
{
char buffer[256];
size_t _len = strlcpy(buffer,
msg_hash_to_str(MSG_ACHIEVEMENT_UNLOCKED),
sizeof(buffer));
buffer[_len ] = ':';
buffer[_len+1] = ' ';
buffer[_len+2] = '\0';
strlcat(buffer, cheevo->title, sizeof(buffer));
runloop_msg_queue_push(buffer, 0, 2 * 60, false, NULL,
buffer[_len ] = ':';
buffer[_len+1] = ' ';
buffer[_len+2] = '\0';
strlcat(buffer, cheevo->title, sizeof(buffer));
runloop_msg_queue_push(buffer, 0, 2 * 60, false, NULL,
MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO);
runloop_msg_queue_push(cheevo->description, 0, 3 * 60, false, NULL,
runloop_msg_queue_push(cheevo->description, 0, 3 * 60, false, NULL,
MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO);
}
}
/* Start the award task (unofficial achievement
@ -1477,44 +1480,47 @@ void rcheevos_show_mastery_placard(void)
title[sizeof(title) - 1] = '\0';
CHEEVOS_LOG(RCHEEVOS_TAG "%s\n", title);
#if defined (HAVE_GFX_WIDGETS)
if (gfx_widgets_ready())
if (settings->bools.cheevos_visibility_unlock)
{
const bool content_runtime_log = settings->bools.content_runtime_log;
const bool content_runtime_log_aggr = settings->bools.content_runtime_log_aggregate;
char msg[128];
size_t len = strlcpy(msg, rcheevos_locals.displayname, sizeof(msg));
if (len < sizeof(msg) - 12 &&
(content_runtime_log || content_runtime_log_aggr))
#if defined (HAVE_GFX_WIDGETS)
if (gfx_widgets_ready())
{
const char* content_path = path_get(RARCH_PATH_CONTENT);
const char* core_path = path_get(RARCH_PATH_CORE);
runtime_log_t* runtime_log = runtime_log_init(
const bool content_runtime_log = settings->bools.content_runtime_log;
const bool content_runtime_log_aggr = settings->bools.content_runtime_log_aggregate;
char msg[128];
size_t len = strlcpy(msg, rcheevos_locals.displayname, sizeof(msg));
if (len < sizeof(msg) - 12 &&
(content_runtime_log || content_runtime_log_aggr))
{
const char* content_path = path_get(RARCH_PATH_CONTENT);
const char* core_path = path_get(RARCH_PATH_CORE);
runtime_log_t* runtime_log = runtime_log_init(
content_path, core_path,
settings->paths.directory_runtime_log,
settings->paths.directory_playlist,
!content_runtime_log_aggr);
if (runtime_log)
{
const runloop_state_t* runloop_state = runloop_state_get_ptr();
runtime_log_add_runtime_usec(runtime_log,
runloop_state->core_runtime_usec);
if (runtime_log)
{
const runloop_state_t* runloop_state = runloop_state_get_ptr();
runtime_log_add_runtime_usec(runtime_log,
runloop_state->core_runtime_usec);
len += snprintf(msg + len, sizeof(msg) - len, " | ");
runtime_log_get_runtime_str(runtime_log, msg + len, sizeof(msg) - len);
msg[sizeof(msg) - 1] = '\0';
len += snprintf(msg + len, sizeof(msg) - len, " | ");
runtime_log_get_runtime_str(runtime_log, msg + len, sizeof(msg) - len);
msg[sizeof(msg) - 1] = '\0';
free(runtime_log);
free(runtime_log);
}
}
}
gfx_widgets_push_achievement(title, msg, rcheevos_locals.game.badge_name);
}
else
gfx_widgets_push_achievement(title, msg, rcheevos_locals.game.badge_name);
}
else
#endif
runloop_msg_queue_push(title, 0, 3 * 60, false, NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO);
runloop_msg_queue_push(title, 0, 3 * 60, false, NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO);
}
}
static void rcheevos_show_game_placard(void)
@ -1574,7 +1580,8 @@ static void rcheevos_show_game_placard(void)
msg[sizeof(msg) - 1] = 0;
CHEEVOS_LOG(RCHEEVOS_TAG "%s\n", msg);
if (settings->bools.cheevos_verbose_enable)
if (settings->uints.cheevos_visibility_summary == RCHEEVOS_SUMMARY_ALLGAMES ||
(number_of_core > 0 && settings->uints.cheevos_visibility_summary == RCHEEVOS_SUMMARY_HASCHEEVOS))
{
#if defined (HAVE_GFX_WIDGETS)
if (gfx_widgets_ready())

View File

@ -110,6 +110,15 @@ enum rcheevos_load_state
RCHEEVOS_LOAD_STATE_ABORTED
};
enum rcheevos_summary_notif
{
RCHEEVOS_SUMMARY_ALLGAMES = 0,
RCHEEVOS_SUMMARY_HASCHEEVOS,
RCHEEVOS_SUMMARY_OFF,
RCHEEVOS_SUMMARY_LAST
};
typedef struct rcheevos_load_info_t
{
enum rcheevos_load_state state;

View File

@ -189,6 +189,8 @@
#define DEFAULT_CHEEVOS_APPEARANCE_PADDING_AUTO true
#define DEFAULT_CHEEVOS_APPEARANCE_PADDING_H 0.0f
#define DEFAULT_CHEEVOS_APPEARANCE_PADDING_V 0.0f
#define DEFAULT_CHEEVOS_VISIBILITY_SUMMARY 1 /* RCHEEVOS_SUMMARY_HASCHEEVOS */
#define DEFAULT_CHEEVOS_VISIBILITY_UNLOCK true
#endif
/* VIDEO */

View File

@ -1952,6 +1952,7 @@ static struct config_bool_setting *populate_settings_bool(
SETTING_BOOL("cheevos_badges_enable", &settings->bools.cheevos_badges_enable, true, false, false);
SETTING_BOOL("cheevos_start_active", &settings->bools.cheevos_start_active, true, false, false);
SETTING_BOOL("cheevos_appearance_padding_auto", &settings->bools.cheevos_appearance_padding_auto, true, DEFAULT_CHEEVOS_APPEARANCE_PADDING_AUTO, false);
SETTING_BOOL("cheevos_visibility_unlock", &settings->bools.cheevos_visibility_unlock, true, DEFAULT_CHEEVOS_VISIBILITY_UNLOCK, false);
#endif
#ifdef HAVE_OVERLAY
SETTING_BOOL("input_overlay_enable", &settings->bools.input_overlay_enable, true, config_overlay_enable_default(), false);
@ -2283,7 +2284,8 @@ static struct config_uint_setting *populate_settings_uint(
#endif
#endif
#ifdef HAVE_CHEEVOS
SETTING_UINT("cheevos_appearance_anchor", &settings->uints.cheevos_appearance_anchor, true, DEFAULT_CHEEVOS_APPEARANCE_ANCHOR, false);
SETTING_UINT("cheevos_appearance_anchor", &settings->uints.cheevos_appearance_anchor, true, DEFAULT_CHEEVOS_APPEARANCE_ANCHOR, false);
SETTING_UINT("cheevos_visibility_summary", &settings->uints.cheevos_visibility_summary, true, DEFAULT_CHEEVOS_VISIBILITY_SUMMARY, false);
#endif
SETTING_UINT("audio_out_rate", &settings->uints.audio_output_sample_rate, true, DEFAULT_OUTPUT_RATE, false);
SETTING_UINT("custom_viewport_width", &settings->video_viewport_custom.width, false, 0 /* TODO */, false);

View File

@ -342,6 +342,7 @@ typedef struct settings
#endif
unsigned cheevos_appearance_anchor;
unsigned cheevos_visibility_summary;
} uints;
struct
@ -836,6 +837,7 @@ typedef struct settings
bool cheevos_unlock_sound_enable;
bool cheevos_challenge_indicators;
bool cheevos_appearance_padding_auto;
bool cheevos_visibility_unlock;
/* Camera */
bool camera_allow;

View File

@ -452,6 +452,18 @@ MSG_HASH(
MENU_ENUM_LABEL_CHEEVOS_APPEARANCE_PADDING_AUTO,
"cheevos_appearance_padding_auto"
)
MSG_HASH(
MENU_ENUM_LABEL_CHEEVOS_VISIBILITY_SETTINGS,
"cheevos_visibility_settings"
)
MSG_HASH(
MENU_ENUM_LABEL_CHEEVOS_VISIBILITY_SUMMARY,
"cheevos_visibility_summary"
)
MSG_HASH(
MENU_ENUM_LABEL_CHEEVOS_VISIBILITY_UNLOCK,
"cheevos_visibility_unlock"
)
MSG_HASH(
MENU_ENUM_LABEL_CLOSE_CONTENT,
"unload_core"
@ -1138,6 +1150,10 @@ MSG_HASH(
MENU_ENUM_LABEL_DEFERRED_CHEEVOS_APPEARANCE_SETTINGS_LIST,
"deferred_cheevos_appearance_settings_list"
)
MSG_HASH(
MENU_ENUM_LABEL_DEFERRED_CHEEVOS_VISIBILITY_SETTINGS_LIST,
"deferred_cheevos_visibility_settings_list"
)
MSG_HASH(
MENU_ENUM_LABEL_DEFERRED_REWIND_SETTINGS_LIST,
"deferred_rewind_settings_list"

View File

@ -6027,14 +6027,6 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_CHEEVOS_UNLOCK_SOUND_ENABLE,
"Play a sound when an achievement is unlocked."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CHEEVOS_VERBOSE_ENABLE,
"Verbose Mode"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CHEEVOS_VERBOSE_ENABLE,
"Show more information in the notifications."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CHEEVOS_AUTO_SCREENSHOT,
"Automatic Screenshot"
@ -6051,14 +6043,6 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_CHEEVOS_START_ACTIVE,
"Start the session with all achievements active (even the ones previously unlocked)."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CHEEVOS_CHALLENGE_INDICATORS,
"Challenge Indicators"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CHEEVOS_CHALLENGE_INDICATORS,
"Allows achievements to display an on-screen indicator while the achievement can be earned."
)
/* Settings > Achievements > Appearance */
@ -6127,6 +6111,57 @@ MSG_HASH(
"Distance from top/bottom screen edge, which can compensate for display overscan."
)
/* Settings > Achievements > Visibility */
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CHEEVOS_VISIBILITY_SETTINGS,
"Visibility"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CHEEVOS_VISIBILITY_SETTINGS,
"Change which messages and on-screen elements are shown. Does not disable functionality."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CHEEVOS_VISIBILITY_SUMMARY,
"Startup Summary"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CHEEVOS_VISIBILITY_SUMMARY,
"Shows information about the game being loaded and the user's current progress.\n'All Games in Database' will show summary for games with no published achievements."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CHEEVOS_VISIBILITY_SUMMARY_ALLGAMES,
"All Games in Database"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CHEEVOS_VISIBILITY_SUMMARY_HASCHEEVOS,
"Games with Achievements"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CHEEVOS_VISIBILITY_UNLOCK,
"New Unlocks/Mastery"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CHEEVOS_VISIBILITY_UNLOCK,
"Shows when a new achievement is unlocked or a game is mastered."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CHEEVOS_CHALLENGE_INDICATORS,
"Active Challenge Indicators"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CHEEVOS_CHALLENGE_INDICATORS,
"Shows on-screen indicators while some conditional achievements can be earned."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CHEEVOS_VERBOSE_ENABLE,
"Verbose Mode"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CHEEVOS_VERBOSE_ENABLE,
"Shows additional messages for accounts and other internal errors/problems."
)
/* Settings > Network */
MSG_HASH(

View File

@ -205,6 +205,7 @@ GENERIC_DEFERRED_PUSH(deferred_push_user_interface_settings_list, DISPLAYLIST_
GENERIC_DEFERRED_PUSH(deferred_push_power_management_settings_list, DISPLAYLIST_POWER_MANAGEMENT_SETTINGS_LIST)
GENERIC_DEFERRED_PUSH(deferred_push_retro_achievements_settings_list,DISPLAYLIST_RETRO_ACHIEVEMENTS_SETTINGS_LIST)
GENERIC_DEFERRED_PUSH(deferred_push_cheevos_appearance_settings_list,DISPLAYLIST_CHEEVOS_APPEARANCE_SETTINGS_LIST)
GENERIC_DEFERRED_PUSH(deferred_push_cheevos_visibility_settings_list,DISPLAYLIST_CHEEVOS_VISIBILITY_SETTINGS_LIST)
GENERIC_DEFERRED_PUSH(deferred_push_updater_settings_list, DISPLAYLIST_UPDATER_SETTINGS_LIST)
GENERIC_DEFERRED_PUSH(deferred_push_bluetooth_settings_list, DISPLAYLIST_BLUETOOTH_SETTINGS_LIST)
GENERIC_DEFERRED_PUSH(deferred_push_wifi_settings_list, DISPLAYLIST_WIFI_SETTINGS_LIST)
@ -726,6 +727,7 @@ static int menu_cbs_init_bind_deferred_push_compare_label(
{MENU_ENUM_LABEL_DEFERRED_MENU_SOUNDS_LIST, deferred_push_menu_sounds_list},
{MENU_ENUM_LABEL_DEFERRED_RETRO_ACHIEVEMENTS_SETTINGS_LIST, deferred_push_retro_achievements_settings_list},
{MENU_ENUM_LABEL_DEFERRED_CHEEVOS_APPEARANCE_SETTINGS_LIST, deferred_push_cheevos_appearance_settings_list},
{MENU_ENUM_LABEL_DEFERRED_CHEEVOS_VISIBILITY_SETTINGS_LIST, deferred_push_cheevos_visibility_settings_list},
{MENU_ENUM_LABEL_DEFERRED_UPDATER_SETTINGS_LIST, deferred_push_updater_settings_list},
{MENU_ENUM_LABEL_DEFERRED_NETWORK_SETTINGS_LIST, deferred_push_network_settings_list},
{MENU_ENUM_LABEL_DEFERRED_SUBSYSTEM_SETTINGS_LIST, deferred_push_subsystem_settings_list},
@ -1270,6 +1272,9 @@ static int menu_cbs_init_bind_deferred_push_compare_label(
case MENU_ENUM_LABEL_DEFERRED_CHEEVOS_APPEARANCE_SETTINGS_LIST:
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_cheevos_appearance_settings_list);
break;
case MENU_ENUM_LABEL_DEFERRED_CHEEVOS_VISIBILITY_SETTINGS_LIST:
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_cheevos_visibility_settings_list);
break;
case MENU_ENUM_LABEL_DEFERRED_ONSCREEN_DISPLAY_SETTINGS_LIST:
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_onscreen_display_settings_list);
break;

View File

@ -417,6 +417,8 @@ static enum msg_hash_enums action_ok_dl_to_enum(unsigned lbl)
return MENU_ENUM_LABEL_DEFERRED_RETRO_ACHIEVEMENTS_SETTINGS_LIST;
case ACTION_OK_DL_CHEEVOS_APPEARANCE_SETTINGS_LIST:
return MENU_ENUM_LABEL_DEFERRED_CHEEVOS_APPEARANCE_SETTINGS_LIST;
case ACTION_OK_DL_CHEEVOS_VISIBILITY_SETTINGS_LIST:
return MENU_ENUM_LABEL_DEFERRED_CHEEVOS_VISIBILITY_SETTINGS_LIST;
case ACTION_OK_DL_UPDATER_SETTINGS_LIST:
return MENU_ENUM_LABEL_DEFERRED_UPDATER_SETTINGS_LIST;
case ACTION_OK_DL_NETWORK_HOSTING_SETTINGS_LIST:
@ -1613,6 +1615,7 @@ int generic_action_ok_displaylist_push(const char *path,
case ACTION_OK_DL_MENU_FILE_BROWSER_SETTINGS_LIST:
case ACTION_OK_DL_RETRO_ACHIEVEMENTS_SETTINGS_LIST:
case ACTION_OK_DL_CHEEVOS_APPEARANCE_SETTINGS_LIST:
case ACTION_OK_DL_CHEEVOS_VISIBILITY_SETTINGS_LIST:
case ACTION_OK_DL_UPDATER_SETTINGS_LIST:
case ACTION_OK_DL_NETWORK_SETTINGS_LIST:
case ACTION_OK_DL_NETWORK_HOSTING_SETTINGS_LIST:
@ -5856,6 +5859,7 @@ DEFAULT_ACTION_OK_FUNC(action_ok_user_interface_list, ACTION_OK_DL_USER_INTERFAC
DEFAULT_ACTION_OK_FUNC(action_ok_menu_file_browser_list, ACTION_OK_DL_MENU_FILE_BROWSER_SETTINGS_LIST)
DEFAULT_ACTION_OK_FUNC(action_ok_retro_achievements_list, ACTION_OK_DL_RETRO_ACHIEVEMENTS_SETTINGS_LIST)
DEFAULT_ACTION_OK_FUNC(action_ok_cheevos_appearance_list, ACTION_OK_DL_CHEEVOS_APPEARANCE_SETTINGS_LIST)
DEFAULT_ACTION_OK_FUNC(action_ok_cheevos_visibility_list, ACTION_OK_DL_CHEEVOS_VISIBILITY_SETTINGS_LIST)
DEFAULT_ACTION_OK_FUNC(action_ok_updater_list, ACTION_OK_DL_UPDATER_SETTINGS_LIST)
DEFAULT_ACTION_OK_FUNC(action_ok_lakka_services, ACTION_OK_DL_LAKKA_SERVICES_LIST)
DEFAULT_ACTION_OK_FUNC(action_ok_user_list, ACTION_OK_DL_USER_SETTINGS_LIST)
@ -8419,6 +8423,7 @@ static int menu_cbs_init_bind_ok_compare_label(menu_file_list_cbs_t *cbs,
{MENU_ENUM_LABEL_FILE_BROWSER_OPEN_PICKER, action_ok_open_picker},
{MENU_ENUM_LABEL_RETRO_ACHIEVEMENTS_SETTINGS, action_ok_retro_achievements_list},
{MENU_ENUM_LABEL_CHEEVOS_APPEARANCE_SETTINGS, action_ok_cheevos_appearance_list},
{MENU_ENUM_LABEL_CHEEVOS_VISIBILITY_SETTINGS, action_ok_cheevos_visibility_list},
{MENU_ENUM_LABEL_UPDATER_SETTINGS, action_ok_updater_list},
#ifdef HAVE_BLUETOOTH
{MENU_ENUM_LABEL_BLUETOOTH_SETTINGS, action_ok_bluetooth_list},

View File

@ -311,6 +311,10 @@ DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cheevos_appearance_anchor, MENU_
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cheevos_appearance_padding_auto, MENU_ENUM_SUBLABEL_CHEEVOS_APPEARANCE_PADDING_AUTO)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cheevos_appearance_padding_h, MENU_ENUM_SUBLABEL_CHEEVOS_APPEARANCE_PADDING_H)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cheevos_appearance_padding_v, MENU_ENUM_SUBLABEL_CHEEVOS_APPEARANCE_PADDING_V)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cheevos_visibility_settings, MENU_ENUM_SUBLABEL_CHEEVOS_VISIBILITY_SETTINGS)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cheevos_visibility_unlock, MENU_ENUM_SUBLABEL_CHEEVOS_VISIBILITY_UNLOCK)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cheevos_visibility_summary, MENU_ENUM_SUBLABEL_CHEEVOS_VISIBILITY_SUMMARY)
#endif
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_menu_views_settings_list, MENU_ENUM_SUBLABEL_MENU_VIEWS_SETTINGS)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_quick_menu_views_settings_list, MENU_ENUM_SUBLABEL_QUICK_MENU_VIEWS_SETTINGS)
@ -4311,6 +4315,15 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs,
case MENU_ENUM_LABEL_CHEEVOS_APPEARANCE_PADDING_V:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_cheevos_appearance_padding_v);
break;
case MENU_ENUM_LABEL_CHEEVOS_VISIBILITY_SETTINGS:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_cheevos_visibility_settings);
break;
case MENU_ENUM_LABEL_CHEEVOS_VISIBILITY_UNLOCK:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_cheevos_visibility_unlock);
break;
case MENU_ENUM_LABEL_CHEEVOS_VISIBILITY_SUMMARY:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_cheevos_visibility_summary);
break;
#endif
case MENU_ENUM_LABEL_SETTINGS:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_settings);

View File

@ -658,6 +658,7 @@ DEFAULT_TITLE_MACRO(action_get_menu_sounds_list, MENU_ENUM_LABEL_
DEFAULT_TITLE_MACRO(action_get_menu_file_browser_settings_list, MENU_ENUM_LABEL_VALUE_MENU_FILE_BROWSER_SETTINGS)
DEFAULT_TITLE_MACRO(action_get_retro_achievements_settings_list,MENU_ENUM_LABEL_VALUE_RETRO_ACHIEVEMENTS_SETTINGS)
DEFAULT_TITLE_MACRO(action_get_cheevos_appearance_settings_list,MENU_ENUM_LABEL_VALUE_CHEEVOS_APPEARANCE_SETTINGS)
DEFAULT_TITLE_MACRO(action_get_cheevos_visibility_settings_list,MENU_ENUM_LABEL_VALUE_CHEEVOS_VISIBILITY_SETTINGS)
DEFAULT_TITLE_MACRO(action_get_bluetooth_settings_list, MENU_ENUM_LABEL_VALUE_BLUETOOTH_SETTINGS)
DEFAULT_TITLE_MACRO(action_get_wifi_networks_list, MENU_ENUM_LABEL_VALUE_WIFI_NETWORKS)
DEFAULT_TITLE_MACRO(action_get_wifi_settings_list, MENU_ENUM_LABEL_VALUE_WIFI_SETTINGS)
@ -1019,6 +1020,7 @@ static int menu_cbs_init_bind_title_compare_label(menu_file_list_cbs_t *cbs,
{MENU_ENUM_LABEL_DEFERRED_MENU_FILE_BROWSER_SETTINGS_LIST, action_get_menu_file_browser_settings_list},
{MENU_ENUM_LABEL_DEFERRED_RETRO_ACHIEVEMENTS_SETTINGS_LIST, action_get_retro_achievements_settings_list},
{MENU_ENUM_LABEL_DEFERRED_CHEEVOS_APPEARANCE_SETTINGS_LIST, action_get_cheevos_appearance_settings_list},
{MENU_ENUM_LABEL_DEFERRED_CHEEVOS_VISIBILITY_SETTINGS_LIST, action_get_cheevos_visibility_settings_list},
{MENU_ENUM_LABEL_DEFERRED_BLUETOOTH_SETTINGS_LIST, action_get_bluetooth_settings_list},
{MENU_ENUM_LABEL_DEFERRED_WIFI_NETWORKS_LIST, action_get_wifi_networks_list},
{MENU_ENUM_LABEL_DEFERRED_WIFI_SETTINGS_LIST, action_get_wifi_settings_list},

View File

@ -201,6 +201,7 @@ enum
ACTION_OK_DL_MENU_FILE_BROWSER_SETTINGS_LIST,
ACTION_OK_DL_RETRO_ACHIEVEMENTS_SETTINGS_LIST,
ACTION_OK_DL_CHEEVOS_APPEARANCE_SETTINGS_LIST,
ACTION_OK_DL_CHEEVOS_VISIBILITY_SETTINGS_LIST,
ACTION_OK_DL_ACHIEVEMENTS_HARDCORE_PAUSE_LIST,
ACTION_OK_DL_UPDATER_SETTINGS_LIST,
ACTION_OK_DL_BLUETOOTH_SETTINGS_LIST,

View File

@ -8341,9 +8341,9 @@ unsigned menu_displaylist_build_list(
{MENU_ENUM_LABEL_CHEEVOS_USERNAME, PARSE_ONLY_STRING, false },
{MENU_ENUM_LABEL_CHEEVOS_PASSWORD, PARSE_ONLY_STRING, false },
{MENU_ENUM_LABEL_CHEEVOS_APPEARANCE_SETTINGS, PARSE_ACTION, false },
{MENU_ENUM_LABEL_CHEEVOS_VISIBILITY_SETTINGS, PARSE_ACTION, false },
{MENU_ENUM_LABEL_CHEEVOS_HARDCORE_MODE_ENABLE, PARSE_ONLY_BOOL, false },
{MENU_ENUM_LABEL_CHEEVOS_LEADERBOARDS_ENABLE, PARSE_ONLY_STRING_OPTIONS, false },
{MENU_ENUM_LABEL_CHEEVOS_CHALLENGE_INDICATORS, PARSE_ONLY_BOOL, false },
{MENU_ENUM_LABEL_CHEEVOS_RICHPRESENCE_ENABLE, PARSE_ONLY_BOOL, false },
#ifndef HAVE_GFX_WIDGETS
{MENU_ENUM_LABEL_CHEEVOS_BADGES_ENABLE, PARSE_ONLY_BOOL, false },
@ -8355,7 +8355,6 @@ unsigned menu_displaylist_build_list(
#ifdef HAVE_SCREENSHOTS
{MENU_ENUM_LABEL_CHEEVOS_AUTO_SCREENSHOT, PARSE_ONLY_BOOL, false },
#endif
{MENU_ENUM_LABEL_CHEEVOS_VERBOSE_ENABLE, PARSE_ONLY_BOOL, false },
{MENU_ENUM_LABEL_CHEEVOS_START_ACTIVE, PARSE_ONLY_BOOL, false },
};
@ -8419,6 +8418,27 @@ unsigned menu_displaylist_build_list(
}
}
break;
case DISPLAYLIST_CHEEVOS_VISIBILITY_SETTINGS_LIST:
{
menu_displaylist_build_info_selective_t build_list[] = {
{MENU_ENUM_LABEL_CHEEVOS_VISIBILITY_SUMMARY, PARSE_ONLY_UINT, true},
{MENU_ENUM_LABEL_CHEEVOS_VISIBILITY_UNLOCK, PARSE_ONLY_BOOL, true},
{MENU_ENUM_LABEL_CHEEVOS_CHALLENGE_INDICATORS, PARSE_ONLY_BOOL, true},
{MENU_ENUM_LABEL_CHEEVOS_VERBOSE_ENABLE, PARSE_ONLY_BOOL, true},
};
for (i = 0; i < ARRAY_SIZE(build_list); i++)
{
if (!build_list[i].checked && !include_everything)
continue;
if (MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM(list,
build_list[i].enum_idx, build_list[i].parse_type,
false) == 0)
count++;
}
}
break;
case DISPLAYLIST_ACCOUNTS_TWITCH_LIST:
if (MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM(list,
MENU_ENUM_LABEL_TWITCH_STREAM_KEY,
@ -13171,6 +13191,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
case DISPLAYLIST_ACCOUNTS_TWITCH_LIST:
case DISPLAYLIST_RETRO_ACHIEVEMENTS_SETTINGS_LIST:
case DISPLAYLIST_CHEEVOS_APPEARANCE_SETTINGS_LIST:
case DISPLAYLIST_CHEEVOS_VISIBILITY_SETTINGS_LIST:
case DISPLAYLIST_ACCOUNTS_YOUTUBE_LIST:
case DISPLAYLIST_ACCOUNTS_FACEBOOK_LIST:
case DISPLAYLIST_RECORDING_SETTINGS_LIST:

View File

@ -218,6 +218,7 @@ enum menu_displaylist_ctl_state
DISPLAYLIST_MENU_SOUNDS_LIST,
DISPLAYLIST_RETRO_ACHIEVEMENTS_SETTINGS_LIST,
DISPLAYLIST_CHEEVOS_APPEARANCE_SETTINGS_LIST,
DISPLAYLIST_CHEEVOS_VISIBILITY_SETTINGS_LIST,
DISPLAYLIST_UPDATER_SETTINGS_LIST,
DISPLAYLIST_BLUETOOTH_SETTINGS_LIST,
DISPLAYLIST_WIFI_SETTINGS_LIST,

View File

@ -306,6 +306,7 @@ enum settings_list_type
SETTINGS_LIST_PLAYLIST,
SETTINGS_LIST_CHEEVOS,
SETTINGS_LIST_CHEEVOS_APPEARANCE,
SETTINGS_LIST_CHEEVOS_VISIBILITY,
SETTINGS_LIST_CORE_UPDATER,
SETTINGS_LIST_NETPLAY,
SETTINGS_LIST_LAKKA_SERVICES,
@ -8804,6 +8805,36 @@ static void achievement_leaderboards_enabled_write_handler(rarch_setting_t* sett
rcheevos_leaderboards_enabled_changed();
}
static void setting_get_string_representation_uint_cheevos_visibility_summary(
rarch_setting_t* setting,
char* s, size_t len)
{
if (!setting)
return;
switch (*setting->value.target.unsigned_integer)
{
case RCHEEVOS_SUMMARY_ALLGAMES:
strlcpy(s,
msg_hash_to_str(
MENU_ENUM_LABEL_VALUE_CHEEVOS_VISIBILITY_SUMMARY_ALLGAMES),
len);
break;
case RCHEEVOS_SUMMARY_HASCHEEVOS:
strlcpy(s,
msg_hash_to_str(
MENU_ENUM_LABEL_VALUE_CHEEVOS_VISIBILITY_SUMMARY_HASCHEEVOS),
len);
break;
case RCHEEVOS_SUMMARY_OFF:
strlcpy(s,
msg_hash_to_str(
MENU_ENUM_LABEL_VALUE_OFF),
len);
break;
}
}
static void achievement_leaderboards_get_string_representation(rarch_setting_t* setting, char* s, size_t len)
{
const char* value = setting->value.target.string;
@ -10162,6 +10193,14 @@ static bool setting_append_list(
&group_info,
&subgroup_info,
parent_group);
CONFIG_ACTION(
list, list_info,
MENU_ENUM_LABEL_CHEEVOS_VISIBILITY_SETTINGS,
MENU_ENUM_LABEL_VALUE_CHEEVOS_VISIBILITY_SETTINGS,
&group_info,
&subgroup_info,
parent_group);
#endif
CONFIG_ACTION(
@ -19991,22 +20030,6 @@ static bool setting_append_list(
(*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_challenge_indicators,
MENU_ENUM_LABEL_CHEEVOS_CHALLENGE_INDICATORS,
MENU_ENUM_LABEL_VALUE_CHEEVOS_CHALLENGE_INDICATORS,
true,
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_richpresence_enable,
@ -20060,22 +20083,6 @@ static bool setting_append_list(
);
#endif
CONFIG_BOOL(
list, list_info,
&settings->bools.cheevos_verbose_enable,
MENU_ENUM_LABEL_CHEEVOS_VERBOSE_ENABLE,
MENU_ENUM_LABEL_VALUE_CHEEVOS_VERBOSE_ENABLE,
true,
MENU_ENUM_LABEL_VALUE_OFF,
MENU_ENUM_LABEL_VALUE_ON,
&group_info,
&subgroup_info,
parent_group,
general_write_handler,
general_read_handler,
SD_FLAG_ADVANCED
);
CONFIG_BOOL(
list, list_info,
&settings->bools.cheevos_auto_screenshot,
@ -20207,6 +20214,85 @@ static bool setting_append_list(
menu_settings_list_current_add_range(list, list_info, 0.0, 0.5, 0.01, true, true);
#endif
END_SUB_GROUP(list, list_info, parent_group);
END_GROUP(list, list_info, parent_group);
#endif
break;
case SETTINGS_LIST_CHEEVOS_VISIBILITY:
#ifdef HAVE_CHEEVOS
START_GROUP(list, list_info, &group_info,
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CHEEVOS_VISIBILITY_SETTINGS),
parent_group);
parent_group = msg_hash_to_str(MENU_ENUM_LABEL_CHEEVOS_VISIBILITY_SETTINGS);
START_SUB_GROUP(list, list_info, "State", &group_info, &subgroup_info, parent_group);
CONFIG_UINT(
list, list_info,
&settings->uints.cheevos_visibility_summary,
MENU_ENUM_LABEL_CHEEVOS_VISIBILITY_SUMMARY,
MENU_ENUM_LABEL_VALUE_CHEEVOS_VISIBILITY_SUMMARY,
DEFAULT_CHEEVOS_VISIBILITY_SUMMARY,
&group_info,
&subgroup_info,
parent_group,
general_write_handler,
general_read_handler);
(*list)[list_info->index - 1].action_ok = &setting_action_ok_uint;
(*list)[list_info->index - 1].action_left = &setting_uint_action_left_with_refresh;
(*list)[list_info->index - 1].action_right = &setting_uint_action_right_with_refresh;
(*list)[list_info->index - 1].get_string_representation =
&setting_get_string_representation_uint_cheevos_visibility_summary;
menu_settings_list_current_add_range(list, list_info, 0, RCHEEVOS_SUMMARY_LAST - 1, 1, true, true);
(*list)[list_info->index - 1].ui_type = ST_UI_TYPE_UINT_COMBOBOX;
CONFIG_BOOL(
list, list_info,
&settings->bools.cheevos_visibility_unlock,
MENU_ENUM_LABEL_CHEEVOS_VISIBILITY_UNLOCK,
MENU_ENUM_LABEL_VALUE_CHEEVOS_VISIBILITY_UNLOCK,
true,
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_challenge_indicators,
MENU_ENUM_LABEL_CHEEVOS_CHALLENGE_INDICATORS,
MENU_ENUM_LABEL_VALUE_CHEEVOS_CHALLENGE_INDICATORS,
true,
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_verbose_enable,
MENU_ENUM_LABEL_CHEEVOS_VERBOSE_ENABLE,
MENU_ENUM_LABEL_VALUE_CHEEVOS_VERBOSE_ENABLE,
true,
MENU_ENUM_LABEL_VALUE_OFF,
MENU_ENUM_LABEL_VALUE_ON,
&group_info,
&subgroup_info,
parent_group,
general_write_handler,
general_read_handler,
SD_FLAG_ADVANCED
);
END_SUB_GROUP(list, list_info, parent_group);
END_GROUP(list, list_info, parent_group);
#endif
@ -22249,6 +22335,7 @@ static rarch_setting_t *menu_setting_new_internal(rarch_setting_info_t *list_inf
SETTINGS_LIST_PLAYLIST,
SETTINGS_LIST_CHEEVOS,
SETTINGS_LIST_CHEEVOS_APPEARANCE,
SETTINGS_LIST_CHEEVOS_VISIBILITY,
SETTINGS_LIST_CORE_UPDATER,
SETTINGS_LIST_NETPLAY,
SETTINGS_LIST_LAKKA_SERVICES,

View File

@ -1663,6 +1663,13 @@ enum msg_hash_enums
MENU_ENUM_LABEL_VALUE_CHEEVOS_APPEARANCE_ANCHOR_BOTTOMCENTER,
MENU_ENUM_LABEL_VALUE_CHEEVOS_APPEARANCE_ANCHOR_BOTTOMRIGHT,
MENU_LABEL(CHEEVOS_VISIBILITY_SETTINGS),
MENU_LABEL(CHEEVOS_VISIBILITY_SUMMARY),
MENU_LABEL(CHEEVOS_VISIBILITY_UNLOCK),
MENU_ENUM_LABEL_VALUE_CHEEVOS_VISIBILITY_SUMMARY_ALLGAMES,
MENU_ENUM_LABEL_VALUE_CHEEVOS_VISIBILITY_SUMMARY_HASCHEEVOS,
MENU_LBL_H(ACCOUNTS_RETRO_ACHIEVEMENTS),
MENU_LABEL(ACCOUNTS_TWITCH),
MENU_LABEL(ACCOUNTS_YOUTUBE),
@ -1821,6 +1828,7 @@ enum msg_hash_enums
MENU_ENUM_LABEL_DEFERRED_MENU_FILE_BROWSER_SETTINGS_LIST,
MENU_ENUM_LABEL_DEFERRED_RETRO_ACHIEVEMENTS_SETTINGS_LIST,
MENU_ENUM_LABEL_DEFERRED_CHEEVOS_APPEARANCE_SETTINGS_LIST,
MENU_ENUM_LABEL_DEFERRED_CHEEVOS_VISIBILITY_SETTINGS_LIST,
MENU_ENUM_LABEL_DEFERRED_UPDATER_SETTINGS_LIST,
MENU_ENUM_LABEL_DEFERRED_BLUETOOTH_SETTINGS_LIST,
MENU_ENUM_LABEL_DEFERRED_WIFI_SETTINGS_LIST,

View File

@ -54,10 +54,13 @@ QWidget *AchievementsPage::widget()
CheckBox *enabledCheckBox = new CheckBox(MENU_ENUM_LABEL_CHEEVOS_ENABLE);
file_list_t *generalList = (file_list_t*)calloc(1, sizeof(*generalList));
file_list_t *appearanceList = (file_list_t*)calloc(1, sizeof(*appearanceList));
file_list_t *visibilityList = (file_list_t*)calloc(1, sizeof(*visibilityList));
m_generalGroup = new SettingsGroup("General");
m_appearanceGroup = new SettingsGroup(msg_hash_to_str(
MENU_ENUM_LABEL_VALUE_CHEEVOS_APPEARANCE_SETTINGS));
m_visibilityGroup = new SettingsGroup(msg_hash_to_str(
MENU_ENUM_LABEL_VALUE_CHEEVOS_VISIBILITY_SETTINGS));
menu_displaylist_build_list(generalList, settings,
DISPLAYLIST_RETRO_ACHIEVEMENTS_SETTINGS_LIST, true);
@ -86,6 +89,18 @@ QWidget *AchievementsPage::widget()
}
file_list_free(appearanceList);
menu_displaylist_build_list(visibilityList, settings,
DISPLAYLIST_CHEEVOS_VISIBILITY_SETTINGS_LIST, true);
for (i = 0; i < visibilityList->size; i++)
{
menu_file_list_cbs_t* cbs = (menu_file_list_cbs_t*)
file_list_get_actiondata_at_offset(visibilityList, i);
m_visibilityGroup->add(cbs->enum_idx);
}
file_list_free(visibilityList);
connect(enabledCheckBox, SIGNAL(stateChanged(int)),
this, SLOT(onAchievementEnabledChanged(int)));
@ -94,6 +109,7 @@ QWidget *AchievementsPage::widget()
layout->addWidget(enabledCheckBox);
layout->addWidget(m_generalGroup);
layout->addWidget(m_appearanceGroup);
layout->addWidget(m_visibilityGroup);
layout->addStretch();
@ -106,6 +122,7 @@ void AchievementsPage::onAchievementEnabledChanged(int state)
{
m_generalGroup->setDisabled(state == Qt::Unchecked);
m_appearanceGroup->setDisabled(state == Qt::Unchecked);
m_visibilityGroup->setDisabled(state == Qt::Unchecked);
}
AudioCategory::AudioCategory(QWidget *parent) :

View File

@ -469,6 +469,7 @@ private slots:
private:
SettingsGroup* m_generalGroup;
SettingsGroup* m_appearanceGroup;
SettingsGroup* m_visibilityGroup;
};
/************************************************************