From e8941ec437a9f025efb71cafda76d40c8f84c5f3 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 5 Feb 2018 17:14:03 +0100 Subject: [PATCH] Get rid of more hashes in menu_generic.c --- intl/msg_hash_lbl.h | 2 + menu/drivers/menu_generic.c | 103 +++++++++++++++++++++++++----------- msg_hash.h | 5 +- 3 files changed, 75 insertions(+), 35 deletions(-) diff --git a/intl/msg_hash_lbl.h b/intl/msg_hash_lbl.h index 28e4c248e2..aa0ee31eda 100644 --- a/intl/msg_hash_lbl.h +++ b/intl/msg_hash_lbl.h @@ -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, diff --git a/menu/drivers/menu_generic.c b/menu/drivers/menu_generic.c index fce4d72480..e22ed99c83 100644 --- a/menu/drivers/menu_generic.c +++ b/menu/drivers/menu_generic.c @@ -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); diff --git a/msg_hash.h b/msg_hash.h index 33af68faec..ebe0948cc7 100644 --- a/msg_hash.h +++ b/msg_hash.h @@ -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