Get rid of more hashes in menu_generic.c

This commit is contained in:
twinaphex 2018-02-05 17:14:03 +01:00
parent 9e372c6c29
commit e8941ec437
3 changed files with 75 additions and 35 deletions

View File

@ -433,6 +433,8 @@ MSG_HASH(MENU_ENUM_LABEL_GAME_SPECIFIC_OPTIONS_IN_USE,
"game_specific_options_in_use")
MSG_HASH(MENU_ENUM_LABEL_HELP,
"help")
MSG_HASH(MENU_ENUM_LABEL_HELP_CHEEVOS_DESCRIPTION,
"help_cheevos_description")
MSG_HASH(MENU_ENUM_LABEL_HELP_AUDIO_VIDEO_TROUBLESHOOTING,
"help_audio_video_troubleshooting")
MSG_HASH(MENU_ENUM_LABEL_HELP_CHANGE_VIRTUAL_GAMEPAD,

View File

@ -29,29 +29,62 @@
#include "../../content.h"
#include "../../retroarch.h"
static enum action_iterate_type action_iterate_type(uint32_t hash)
struct menu_generic_iterate_type
{
switch (hash)
{
case MENU_LABEL_HELP:
case MENU_LABEL_HELP_CONTROLS:
case MENU_LABEL_HELP_WHAT_IS_A_CORE:
case MENU_LABEL_HELP_LOADING_CONTENT:
case MENU_LABEL_HELP_CHANGE_VIRTUAL_GAMEPAD:
case MENU_LABEL_CHEEVOS_DESCRIPTION:
case MENU_LABEL_HELP_AUDIO_VIDEO_TROUBLESHOOTING:
case MENU_LABEL_HELP_SCANNING_CONTENT:
return ITERATE_TYPE_HELP;
case MENU_LABEL_INFO_SCREEN:
return ITERATE_TYPE_INFO;
case MENU_LABEL_CUSTOM_BIND:
case MENU_LABEL_CUSTOM_BIND_ALL:
case MENU_LABEL_CUSTOM_BIND_DEFAULTS:
return ITERATE_TYPE_BIND;
}
enum msg_hash_enums id;
enum action_iterate_type type;
};
return ITERATE_TYPE_DEFAULT;
}
static struct menu_generic_iterate_type iterate_lbl_list[] = {
{
MENU_ENUM_LABEL_HELP,
ITERATE_TYPE_HELP
},
{
MENU_ENUM_LABEL_HELP_CONTROLS,
ITERATE_TYPE_HELP
},
{
MENU_ENUM_LABEL_HELP_WHAT_IS_A_CORE,
ITERATE_TYPE_HELP
},
{
MENU_ENUM_LABEL_HELP_LOADING_CONTENT,
ITERATE_TYPE_HELP
},
{
MENU_ENUM_LABEL_HELP_CHANGE_VIRTUAL_GAMEPAD,
ITERATE_TYPE_HELP
},
{
MENU_ENUM_LABEL_HELP_CHEEVOS_DESCRIPTION,
ITERATE_TYPE_HELP
},
{
MENU_ENUM_LABEL_HELP_AUDIO_VIDEO_TROUBLESHOOTING,
ITERATE_TYPE_HELP
},
{
MENU_ENUM_LABEL_HELP_SCANNING_CONTENT,
ITERATE_TYPE_HELP
},
{
MENU_ENUM_LABEL_INFO_SCREEN,
ITERATE_TYPE_INFO
},
{
MENU_ENUM_LABEL_CUSTOM_BIND,
ITERATE_TYPE_BIND
},
{
MENU_ENUM_LABEL_CUSTOM_BIND_ALL,
ITERATE_TYPE_BIND
},
{
MENU_ENUM_LABEL_CUSTOM_BIND_DEFAULTS,
ITERATE_TYPE_BIND
}
};
/**
* menu_iterate:
@ -66,14 +99,13 @@ static enum action_iterate_type action_iterate_type(uint32_t hash)
**/
int generic_menu_iterate(void *data, void *userdata, enum menu_action action)
{
enum action_iterate_type iterate_type;
unsigned file_type = 0;
int ret = 0;
uint32_t hash = 0;
enum msg_hash_enums enum_idx = MSG_UNKNOWN;
const char *label = NULL;
menu_handle_t *menu = (menu_handle_t*)data;
size_t selection = menu_navigation_get_selection();
enum action_iterate_type iterate_type = ITERATE_TYPE_DEFAULT;
unsigned file_type = 0;
int ret = 0;
enum msg_hash_enums enum_idx = MSG_UNKNOWN;
const char *label = NULL;
menu_handle_t *menu = (menu_handle_t*)data;
size_t selection = menu_navigation_get_selection();
menu_entries_get_last_stack(NULL, &label, &file_type, &enum_idx, NULL);
@ -83,8 +115,17 @@ int generic_menu_iterate(void *data, void *userdata, enum menu_action action)
menu->menu_state_msg[0] = '\0';
if (!string_is_empty(label))
hash = msg_hash_calculate(label);
iterate_type = action_iterate_type(hash);
{
unsigned k;
for (k = 0; k < ARRAY_SIZE(iterate_lbl_list); k++)
{
if (string_is_equal(label, msg_hash_to_str(iterate_lbl_list[k].id)))
{
iterate_type = iterate_lbl_list[k].type;
break;
}
}
}
menu_driver_set_binding_state(iterate_type == ITERATE_TYPE_BIND);

View File

@ -908,6 +908,7 @@ enum msg_hash_enums
MENU_LABEL(HELP_LOADING_CONTENT),
MENU_LABEL(HELP_LIST),
MENU_LABEL(HELP_CONTROLS),
MENU_LABEL(HELP_CHEEVOS_DESCRIPTION),
MENU_ENUM_LABEL_VALUE_EXTRACTING_PLEASE_WAIT,
@ -1785,10 +1786,6 @@ enum msg_hash_enums
#define MENU_LABEL_DEFERRED_CONFIGURATIONS_LIST 0x679a1b0bU
#define MENU_LABEL_DEFERRED_BROWSE_URL_START 0xcef58296U
/* Cheevos settings */
#define MENU_LABEL_CHEEVOS_DESCRIPTION 0x7e00e0f5U
/* Accounts settings */
#define MENU_LABEL_ACCOUNTS_RETRO_ACHIEVEMENTS 0xe6b7c16cU