use a single list for achievements

This commit is contained in:
radius 2017-11-23 20:35:54 -05:00
parent a490039253
commit 9b19d334c7
11 changed files with 72 additions and 99 deletions

View File

@ -2148,7 +2148,7 @@ void cheevos_reset_game(void)
cheevo->last = 1; cheevo->last = 1;
} }
void cheevos_populate_menu(void *data, bool hardcore) void cheevos_populate_menu(void *data)
{ {
#ifdef HAVE_MENU #ifdef HAVE_MENU
unsigned i; unsigned i;
@ -2161,41 +2161,30 @@ void cheevos_populate_menu(void *data, bool hardcore)
for (i = 0; cheevo < end; i++, cheevo++) for (i = 0; cheevo < end; i++, cheevo++)
{ {
if (!hardcore)
if (!(cheevo->active & CHEEVOS_ACTIVE_HARDCORE))
{ {
if (!(cheevo->active & CHEEVOS_ACTIVE_SOFTCORE)) menu_entries_append_enum(info->list, cheevo->title,
{ cheevo->description, MENU_ENUM_LABEL_CHEEVOS_UNLOCKED_ENTRY_HARDCORE,
menu_entries_append_enum(info->list, cheevo->title, MENU_SETTINGS_CHEEVOS_START + i, 0, 0);
cheevo->description, MENU_ENUM_LABEL_CHEEVOS_UNLOCKED_ENTRY, items_found++;
MENU_SETTINGS_CHEEVOS_START + i, 0, 0); set_badge_info(&badges_ctx, i, cheevo->badge, (cheevo->active & CHEEVOS_ACTIVE_HARDCORE));
items_found++; }
} else if (!(cheevo->active & CHEEVOS_ACTIVE_SOFTCORE))
else {
{ menu_entries_append_enum(info->list, cheevo->title,
menu_entries_append_enum(info->list, cheevo->title, cheevo->description, MENU_ENUM_LABEL_CHEEVOS_UNLOCKED_ENTRY,
cheevo->description, MENU_ENUM_LABEL_CHEEVOS_LOCKED_ENTRY, MENU_SETTINGS_CHEEVOS_START + i, 0, 0);
MENU_SETTINGS_CHEEVOS_START + i, 0, 0); items_found++;
items_found++;
}
set_badge_info(&badges_ctx, i, cheevo->badge, (cheevo->active & CHEEVOS_ACTIVE_SOFTCORE)); set_badge_info(&badges_ctx, i, cheevo->badge, (cheevo->active & CHEEVOS_ACTIVE_SOFTCORE));
} }
else else
{ {
if (!(cheevo->active & CHEEVOS_ACTIVE_HARDCORE)) menu_entries_append_enum(info->list, cheevo->title,
{ cheevo->description, MENU_ENUM_LABEL_CHEEVOS_LOCKED_ENTRY,
menu_entries_append_enum(info->list, cheevo->title, MENU_SETTINGS_CHEEVOS_START + i, 0, 0);
cheevo->description, MENU_ENUM_LABEL_CHEEVOS_UNLOCKED_ENTRY, items_found++;
MENU_SETTINGS_CHEEVOS_START + i, 0, 0); set_badge_info(&badges_ctx, i, cheevo->badge, (cheevo->active & CHEEVOS_ACTIVE_SOFTCORE));
items_found++;
}
else
{
menu_entries_append_enum(info->list, cheevo->title,
cheevo->description, MENU_ENUM_LABEL_CHEEVOS_LOCKED_ENTRY,
MENU_SETTINGS_CHEEVOS_START + i, 0, 0);
items_found++;
}
set_badge_info(&badges_ctx, i, cheevo->badge, (cheevo->active & CHEEVOS_ACTIVE_HARDCORE));
} }
} }
@ -2205,42 +2194,29 @@ void cheevos_populate_menu(void *data, bool hardcore)
end = cheevos_locals.unofficial.cheevos end = cheevos_locals.unofficial.cheevos
+ cheevos_locals.unofficial.count; + cheevos_locals.unofficial.count;
for (i = cheevos_locals.core.count; cheevo < end; i++, cheevo++) if (!(cheevo->active & CHEEVOS_ACTIVE_HARDCORE))
{ {
if (!hardcore) menu_entries_append_enum(info->list, cheevo->title,
{ cheevo->description, MENU_ENUM_LABEL_CHEEVOS_UNLOCKED_ENTRY_HARDCORE,
if (!(cheevo->active & CHEEVOS_ACTIVE_SOFTCORE)) MENU_SETTINGS_CHEEVOS_START + i, 0, 0);
{ items_found++;
menu_entries_append_enum(info->list, cheevo->title, set_badge_info(&badges_ctx, i, cheevo->badge, (cheevo->active & CHEEVOS_ACTIVE_HARDCORE));
cheevo->description, MENU_ENUM_LABEL_CHEEVOS_UNLOCKED_ENTRY, }
MENU_SETTINGS_CHEEVOS_START + i, 0, 0); else if (!(cheevo->active & CHEEVOS_ACTIVE_SOFTCORE))
items_found++; {
} menu_entries_append_enum(info->list, cheevo->title,
else cheevo->description, MENU_ENUM_LABEL_CHEEVOS_UNLOCKED_ENTRY,
{ MENU_SETTINGS_CHEEVOS_START + i, 0, 0);
menu_entries_append_enum(info->list, cheevo->title, items_found++;
cheevo->description, MENU_ENUM_LABEL_CHEEVOS_LOCKED_ENTRY, set_badge_info(&badges_ctx, i, cheevo->badge, (cheevo->active & CHEEVOS_ACTIVE_SOFTCORE));
MENU_SETTINGS_CHEEVOS_START + i, 0, 0); }
items_found++; else
} {
} menu_entries_append_enum(info->list, cheevo->title,
else cheevo->description, MENU_ENUM_LABEL_CHEEVOS_LOCKED_ENTRY,
{ MENU_SETTINGS_CHEEVOS_START + i, 0, 0);
if (!(cheevo->active & CHEEVOS_ACTIVE_HARDCORE)) items_found++;
{ set_badge_info(&badges_ctx, i, cheevo->badge, (cheevo->active & CHEEVOS_ACTIVE_SOFTCORE));
menu_entries_append_enum(info->list, cheevo->title,
cheevo->description, MENU_ENUM_LABEL_CHEEVOS_UNLOCKED_ENTRY,
MENU_SETTINGS_CHEEVOS_START + i, 0, 0);
items_found++;
}
else
{
menu_entries_append_enum(info->list, cheevo->title,
cheevo->description, MENU_ENUM_LABEL_CHEEVOS_LOCKED_ENTRY,
MENU_SETTINGS_CHEEVOS_START + i, 0, 0);
items_found++;
}
}
} }
} }

View File

@ -117,7 +117,7 @@ bool cheevos_load(const void *data);
void cheevos_reset_game(void); void cheevos_reset_game(void);
void cheevos_populate_menu(void *data, bool hardcore); void cheevos_populate_menu(void *data);
bool cheevos_get_description(cheevos_ctx_desc_t *desc); bool cheevos_get_description(cheevos_ctx_desc_t *desc);

View File

@ -150,6 +150,8 @@ MSG_HASH(MENU_ENUM_LABEL_CHEEVOS_UNLOCKED_ACHIEVEMENTS,
"cheevos_unlocked_achievements") "cheevos_unlocked_achievements")
MSG_HASH(MENU_ENUM_LABEL_CHEEVOS_UNLOCKED_ENTRY, MSG_HASH(MENU_ENUM_LABEL_CHEEVOS_UNLOCKED_ENTRY,
"cheevos_unlocked_entry") "cheevos_unlocked_entry")
MSG_HASH(MENU_ENUM_LABEL_CHEEVOS_UNLOCKED_ENTRY_HARDCORE,
"cheevos_unlocked_entry_hardcore")
MSG_HASH(MENU_ENUM_LABEL_CHEEVOS_USERNAME, MSG_HASH(MENU_ENUM_LABEL_CHEEVOS_USERNAME,
"cheevos_username") "cheevos_username")
MSG_HASH(MENU_ENUM_LABEL_CHEEVOS_VERBOSE_ENABLE, MSG_HASH(MENU_ENUM_LABEL_CHEEVOS_VERBOSE_ENABLE,

View File

@ -462,6 +462,10 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_CHEEVOS_UNLOCKED_ENTRY, MENU_ENUM_LABEL_VALUE_CHEEVOS_UNLOCKED_ENTRY,
"Unlocked" "Unlocked"
) )
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CHEEVOS_UNLOCKED_ENTRY_HARDCORE,
"Hardcore"
)
MSG_HASH( MSG_HASH(
MENU_ENUM_LABEL_VALUE_CHEEVOS_VERBOSE_ENABLE, MENU_ENUM_LABEL_VALUE_CHEEVOS_VERBOSE_ENABLE,
"Achievements Verbose Mode" "Achievements Verbose Mode"

View File

@ -78,11 +78,6 @@ static int deferred_push_achievement_list(menu_displaylist_info_t *info)
return deferred_push_dlist(info, DISPLAYLIST_ACHIEVEMENT_LIST); return deferred_push_dlist(info, DISPLAYLIST_ACHIEVEMENT_LIST);
} }
static int deferred_push_achievement_list_hardcore(menu_displaylist_info_t *info)
{
return deferred_push_dlist(info, DISPLAYLIST_ACHIEVEMENT_LIST_HARDCORE);
}
static int deferred_push_rdb_collection(menu_displaylist_info_t *info) static int deferred_push_rdb_collection(menu_displaylist_info_t *info)
{ {
return deferred_push_dlist(info, DISPLAYLIST_PLAYLIST_COLLECTION); return deferred_push_dlist(info, DISPLAYLIST_PLAYLIST_COLLECTION);
@ -1533,9 +1528,6 @@ static int menu_cbs_init_bind_deferred_push_compare_label(
case MENU_ENUM_LABEL_ACHIEVEMENT_LIST: case MENU_ENUM_LABEL_ACHIEVEMENT_LIST:
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_achievement_list); BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_achievement_list);
break; break;
case MENU_ENUM_LABEL_ACHIEVEMENT_LIST_HARDCORE:
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_achievement_list_hardcore);
break;
case MENU_ENUM_LABEL_CORE_COUNTERS: case MENU_ENUM_LABEL_CORE_COUNTERS:
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_core_counters); BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_core_counters);
break; break;
@ -1768,9 +1760,6 @@ static int menu_cbs_init_bind_deferred_push_compare_label(
case MENU_LABEL_ACHIEVEMENT_LIST: case MENU_LABEL_ACHIEVEMENT_LIST:
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_achievement_list); BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_achievement_list);
break; break;
case MENU_LABEL_ACHIEVEMENT_LIST_HARDCORE:
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_achievement_list_hardcore);
break;
case MENU_LABEL_CORE_COUNTERS: case MENU_LABEL_CORE_COUNTERS:
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_core_counters); BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_core_counters);
break; break;

View File

@ -94,6 +94,21 @@ static void menu_action_setting_disp_set_label_cheevos_unlocked_entry(
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CHEEVOS_UNLOCKED_ENTRY), len); msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CHEEVOS_UNLOCKED_ENTRY), len);
} }
static void menu_action_setting_disp_set_label_cheevos_unlocked_entry_hardcore(
file_list_t* list,
unsigned *w, unsigned type, unsigned i,
const char *label,
char *s, size_t len,
const char *entry_label,
const char *path,
char *s2, size_t len2)
{
*w = 19;
strlcpy(s2, path, len2);
strlcpy(s,
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CHEEVOS_UNLOCKED_ENTRY_HARDCORE), len);
}
static void menu_action_setting_disp_set_label_remap_file_load( static void menu_action_setting_disp_set_label_remap_file_load(
file_list_t* list, file_list_t* list,
unsigned *w, unsigned type, unsigned i, unsigned *w, unsigned type, unsigned i,
@ -1976,6 +1991,10 @@ int menu_cbs_init_bind_get_string_representation(menu_file_list_cbs_t *cbs,
BIND_ACTION_GET_VALUE(cbs, BIND_ACTION_GET_VALUE(cbs,
menu_action_setting_disp_set_label_cheevos_unlocked_entry); menu_action_setting_disp_set_label_cheevos_unlocked_entry);
return 0; return 0;
case MENU_ENUM_LABEL_CHEEVOS_UNLOCKED_ENTRY_HARDCORE:
BIND_ACTION_GET_VALUE(cbs,
menu_action_setting_disp_set_label_cheevos_unlocked_entry_hardcore);
return 0;
case MENU_ENUM_LABEL_CHEEVOS_LOCKED_ENTRY: case MENU_ENUM_LABEL_CHEEVOS_LOCKED_ENTRY:
BIND_ACTION_GET_VALUE(cbs, BIND_ACTION_GET_VALUE(cbs,
menu_action_setting_disp_set_label_cheevos_locked_entry); menu_action_setting_disp_set_label_cheevos_locked_entry);

View File

@ -1247,6 +1247,7 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs,
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_video_shared_context); BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_video_shared_context);
break; break;
case MENU_ENUM_LABEL_CHEEVOS_UNLOCKED_ENTRY: case MENU_ENUM_LABEL_CHEEVOS_UNLOCKED_ENTRY:
case MENU_ENUM_LABEL_CHEEVOS_UNLOCKED_ENTRY_HARDCORE:
case MENU_ENUM_LABEL_CHEEVOS_LOCKED_ENTRY: case MENU_ENUM_LABEL_CHEEVOS_LOCKED_ENTRY:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_cheevos_entry); BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_cheevos_entry);
break; break;

View File

@ -189,7 +189,6 @@ default_fill_title_macro(action_get_title_collection, MENU_ENUM_LABE
default_title_copy_macro(action_get_title_help, MENU_ENUM_LABEL_VALUE_HELP_LIST) default_title_copy_macro(action_get_title_help, MENU_ENUM_LABEL_VALUE_HELP_LIST)
default_title_copy_macro(action_get_title_input_settings, MENU_ENUM_LABEL_VALUE_INPUT_SETTINGS) default_title_copy_macro(action_get_title_input_settings, MENU_ENUM_LABEL_VALUE_INPUT_SETTINGS)
default_title_copy_macro(action_get_title_cheevos_list, MENU_ENUM_LABEL_VALUE_ACHIEVEMENT_LIST) default_title_copy_macro(action_get_title_cheevos_list, MENU_ENUM_LABEL_VALUE_ACHIEVEMENT_LIST)
default_title_copy_macro(action_get_title_cheevos_list_hardcore, MENU_ENUM_LABEL_VALUE_ACHIEVEMENT_LIST_HARDCORE)
default_title_copy_macro(action_get_title_video_shader_parameters,MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PARAMETERS) default_title_copy_macro(action_get_title_video_shader_parameters,MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PARAMETERS)
default_title_copy_macro(action_get_title_video_shader_preset_parameters,MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PRESET_PARAMETERS) default_title_copy_macro(action_get_title_video_shader_preset_parameters,MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PRESET_PARAMETERS)
@ -1018,9 +1017,6 @@ static int menu_cbs_init_bind_title_compare_label(menu_file_list_cbs_t *cbs,
case MENU_LABEL_ACHIEVEMENT_LIST: case MENU_LABEL_ACHIEVEMENT_LIST:
BIND_ACTION_GET_TITLE(cbs, action_get_title_cheevos_list); BIND_ACTION_GET_TITLE(cbs, action_get_title_cheevos_list);
break; break;
case MENU_LABEL_ACHIEVEMENT_LIST_HARDCORE:
BIND_ACTION_GET_TITLE(cbs, action_get_title_cheevos_list_hardcore);
break;
case MENU_LABEL_VIDEO_SHADER_PARAMETERS: case MENU_LABEL_VIDEO_SHADER_PARAMETERS:
BIND_ACTION_GET_TITLE(cbs, action_get_title_video_shader_parameters); BIND_ACTION_GET_TITLE(cbs, action_get_title_video_shader_parameters);
break; break;

View File

@ -2954,11 +2954,6 @@ static int menu_displaylist_parse_load_content_settings(
msg_hash_to_str(MENU_ENUM_LABEL_ACHIEVEMENT_LIST), msg_hash_to_str(MENU_ENUM_LABEL_ACHIEVEMENT_LIST),
MENU_ENUM_LABEL_ACHIEVEMENT_LIST, MENU_ENUM_LABEL_ACHIEVEMENT_LIST,
MENU_SETTING_ACTION, 0, 0); MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(info->list,
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_ACHIEVEMENT_LIST_HARDCORE),
msg_hash_to_str(MENU_ENUM_LABEL_ACHIEVEMENT_LIST_HARDCORE),
MENU_ENUM_LABEL_ACHIEVEMENT_LIST_HARDCORE,
MENU_SETTING_ACTION, 0, 0);
} }
#endif #endif
} }
@ -4740,15 +4735,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
case DISPLAYLIST_ACHIEVEMENT_LIST: case DISPLAYLIST_ACHIEVEMENT_LIST:
#ifdef HAVE_CHEEVOS #ifdef HAVE_CHEEVOS
menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list); menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list);
cheevos_populate_menu(info, false); cheevos_populate_menu(info);
info->need_push = true;
info->need_refresh = true;
#endif
break;
case DISPLAYLIST_ACHIEVEMENT_LIST_HARDCORE:
#ifdef HAVE_CHEEVOS
menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list);
cheevos_populate_menu(info, true);
info->need_push = true; info->need_push = true;
info->need_refresh = true; info->need_refresh = true;
#endif #endif

View File

@ -108,8 +108,7 @@ enum menu_displaylist_ctl_state
DISPLAYLIST_NETWORK_INFO, DISPLAYLIST_NETWORK_INFO,
DISPLAYLIST_SYSTEM_INFO, DISPLAYLIST_SYSTEM_INFO,
DISPLAYLIST_ACHIEVEMENT_LIST, DISPLAYLIST_ACHIEVEMENT_LIST,
DISPLAYLIST_ACHIEVEMENT_LIST_HARDCORE, DISPLAYLIST_USER_BINDS_LIST,
DISPLAYLIST_USER_BINDS_LIST,
DISPLAYLIST_ACCOUNTS_LIST, DISPLAYLIST_ACCOUNTS_LIST,
DISPLAYLIST_DRIVER_SETTINGS_LIST, DISPLAYLIST_DRIVER_SETTINGS_LIST,
DISPLAYLIST_VIDEO_SETTINGS_LIST, DISPLAYLIST_VIDEO_SETTINGS_LIST,

View File

@ -463,6 +463,7 @@ enum msg_hash_enums
MENU_ENUM_LABEL_PLAYLIST_COLLECTION_ENTRY, MENU_ENUM_LABEL_PLAYLIST_COLLECTION_ENTRY,
MENU_LABEL(CHEEVOS_UNLOCKED_ENTRY), MENU_LABEL(CHEEVOS_UNLOCKED_ENTRY),
MENU_LABEL(CHEEVOS_UNLOCKED_ENTRY_HARDCORE),
MENU_LABEL(CHEEVOS_LOCKED_ENTRY), MENU_LABEL(CHEEVOS_LOCKED_ENTRY),
MENU_ENUM_LABEL_SHADER_PARAMETERS_ENTRY, MENU_ENUM_LABEL_SHADER_PARAMETERS_ENTRY,
@ -1856,7 +1857,6 @@ enum msg_hash_enums
#define MENU_LABEL_FRONTEND_COUNTERS 0xe5696877U #define MENU_LABEL_FRONTEND_COUNTERS 0xe5696877U
#define MENU_LABEL_CORE_COUNTERS 0x64cc83e0U #define MENU_LABEL_CORE_COUNTERS 0x64cc83e0U
#define MENU_LABEL_ACHIEVEMENT_LIST 0x7b90fc49U #define MENU_LABEL_ACHIEVEMENT_LIST 0x7b90fc49U
#define MENU_LABEL_ACHIEVEMENT_LIST_HARDCORE 0x7c632930U
#define MENU_LABEL_CORE_INFORMATION 0xb638e0d3U #define MENU_LABEL_CORE_INFORMATION 0xb638e0d3U
#define MENU_LABEL_CORE_OPTIONS 0xf65e60f9U #define MENU_LABEL_CORE_OPTIONS 0xf65e60f9U
#define MENU_LABEL_SHADER_OPTIONS 0x1f7d2fc7U #define MENU_LABEL_SHADER_OPTIONS 0x1f7d2fc7U