mirror of
https://github.com/libretro/RetroArch
synced 2025-03-03 04:14:00 +00:00
Reimplement Save State options in main menu
This commit is contained in:
parent
8bb99534cc
commit
39c45133a2
@ -489,22 +489,9 @@ void setting_data_set_with_string_representation(rarch_setting_t* setting,
|
|||||||
static void menu_common_setting_set_label_st_bool(rarch_setting_t *setting,
|
static void menu_common_setting_set_label_st_bool(rarch_setting_t *setting,
|
||||||
char *type_str, size_t type_str_size)
|
char *type_str, size_t type_str_size)
|
||||||
{
|
{
|
||||||
if (!setting)
|
if (setting)
|
||||||
return;
|
strlcpy(type_str, *setting->value.boolean ? setting->boolean.on_label :
|
||||||
|
setting->boolean.off_label, type_str_size);
|
||||||
if (!strcmp(setting->name, "savestate") ||
|
|
||||||
!strcmp(setting->name, "loadstate"))
|
|
||||||
{
|
|
||||||
if (g_settings.state_slot < 0)
|
|
||||||
strlcpy(type_str, "-1 (auto)", type_str_size);
|
|
||||||
else
|
|
||||||
snprintf(type_str, type_str_size, "%d", g_settings.state_slot);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
strlcpy(type_str, *setting->value.boolean ? setting->boolean.on_label :
|
|
||||||
setting->boolean.off_label, type_str_size);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void menu_common_setting_set_label_st_uint(rarch_setting_t *setting,
|
static void menu_common_setting_set_label_st_uint(rarch_setting_t *setting,
|
||||||
@ -680,8 +667,11 @@ void setting_data_get_string_representation(rarch_setting_t* setting,
|
|||||||
input_get_bind_string(buf, keybind, auto_bind, sizeof_buf);
|
input_get_bind_string(buf, keybind, auto_bind, sizeof_buf);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
/* TODO */
|
|
||||||
case ST_ACTION:
|
case ST_ACTION:
|
||||||
|
if (setting->get_string_representation)
|
||||||
|
setting->get_string_representation(setting, buf, sizeof_buf);
|
||||||
|
break;
|
||||||
|
/* TODO */
|
||||||
case ST_HEX:
|
case ST_HEX:
|
||||||
break;
|
break;
|
||||||
case ST_GROUP:
|
case ST_GROUP:
|
||||||
@ -802,15 +792,15 @@ static int setting_data_bool_action_toggle_savestates(void *data, unsigned actio
|
|||||||
|
|
||||||
static int setting_data_bool_action_ok_savestates(void *data, unsigned action)
|
static int setting_data_bool_action_ok_savestates(void *data, unsigned action)
|
||||||
{
|
{
|
||||||
|
unsigned rarch_cmd = RARCH_CMD_NONE;
|
||||||
rarch_setting_t *setting = (rarch_setting_t*)data;
|
rarch_setting_t *setting = (rarch_setting_t*)data;
|
||||||
|
|
||||||
if (!setting)
|
if (!setting)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
*setting->value.boolean = !(*setting->value.boolean);
|
rarch_cmd = setting->cmd_trigger.idx;
|
||||||
|
rarch_main_command(rarch_cmd);
|
||||||
if (setting->cmd_trigger.idx != RARCH_CMD_NONE)
|
rarch_main_command(RARCH_CMD_RESUME);
|
||||||
setting->cmd_trigger.triggered = true;
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -1127,9 +1117,10 @@ rarch_setting_t setting_data_action_setting(const char* name,
|
|||||||
result.deferred_handler = NULL;
|
result.deferred_handler = NULL;
|
||||||
result.read_handler = NULL;
|
result.read_handler = NULL;
|
||||||
|
|
||||||
result.action_start = NULL;
|
result.get_string_representation = NULL;
|
||||||
result.action_toggle = NULL;
|
result.action_start = NULL;
|
||||||
result.action_ok = setting_data_action_action_ok;
|
result.action_toggle = NULL;
|
||||||
|
result.action_ok = setting_data_action_action_ok;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2359,6 +2350,19 @@ static int get_fallback_label(char *type_str,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void get_string_representation_savestate(void * data, char *type_str,
|
||||||
|
size_t type_str_size)
|
||||||
|
{
|
||||||
|
rarch_setting_t *setting = (rarch_setting_t*)data;
|
||||||
|
|
||||||
|
if (!setting || !type_str || !type_str_size)
|
||||||
|
return;
|
||||||
|
|
||||||
|
snprintf(type_str, type_str_size, "%d", g_settings.state_slot);
|
||||||
|
if (g_settings.state_slot == -1)
|
||||||
|
strlcat(type_str, " (Auto)", type_str_size);
|
||||||
|
}
|
||||||
|
|
||||||
void setting_data_get_label(char *type_str,
|
void setting_data_get_label(char *type_str,
|
||||||
size_t type_str_size, unsigned *w, unsigned type,
|
size_t type_str_size, unsigned *w, unsigned type,
|
||||||
const char *menu_label, const char *label, unsigned idx)
|
const char *menu_label, const char *label, unsigned idx)
|
||||||
@ -2915,39 +2919,27 @@ static bool setting_data_append_list_main_menu_options(
|
|||||||
}
|
}
|
||||||
if (g_extern.main_is_init && !g_extern.libretro_dummy)
|
if (g_extern.main_is_init && !g_extern.libretro_dummy)
|
||||||
{
|
{
|
||||||
CONFIG_BOOL(
|
CONFIG_ACTION(
|
||||||
lists[9],
|
|
||||||
"savestate",
|
"savestate",
|
||||||
"Save State",
|
"Save State",
|
||||||
false,
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
group_info.name,
|
group_info.name,
|
||||||
subgroup_info.name,
|
subgroup_info.name);
|
||||||
general_write_handler,
|
|
||||||
general_read_handler);
|
|
||||||
(*list)[list_info->index - 1].action_toggle = &setting_data_bool_action_toggle_savestates;
|
(*list)[list_info->index - 1].action_toggle = &setting_data_bool_action_toggle_savestates;
|
||||||
(*list)[list_info->index - 1].action_start = &setting_data_bool_action_start_savestates;
|
(*list)[list_info->index - 1].action_start = &setting_data_bool_action_start_savestates;
|
||||||
(*list)[list_info->index - 1].action_ok = &setting_data_bool_action_ok_savestates;
|
(*list)[list_info->index - 1].action_ok = &setting_data_bool_action_ok_savestates;
|
||||||
|
(*list)[list_info->index - 1].get_string_representation = &get_string_representation_savestate;
|
||||||
settings_list_current_add_cmd (list, list_info, RARCH_CMD_SAVE_STATE);
|
settings_list_current_add_cmd (list, list_info, RARCH_CMD_SAVE_STATE);
|
||||||
settings_data_list_current_add_flags(list, list_info, SD_FLAG_EXIT);
|
|
||||||
|
|
||||||
CONFIG_BOOL(
|
CONFIG_ACTION(
|
||||||
lists[10],
|
|
||||||
"loadstate",
|
"loadstate",
|
||||||
"Load State",
|
"Load State",
|
||||||
false,
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
group_info.name,
|
group_info.name,
|
||||||
subgroup_info.name,
|
subgroup_info.name);
|
||||||
general_write_handler,
|
|
||||||
general_read_handler);
|
|
||||||
(*list)[list_info->index - 1].action_toggle = &setting_data_bool_action_toggle_savestates;
|
(*list)[list_info->index - 1].action_toggle = &setting_data_bool_action_toggle_savestates;
|
||||||
(*list)[list_info->index - 1].action_start = &setting_data_bool_action_start_savestates;
|
(*list)[list_info->index - 1].action_start = &setting_data_bool_action_start_savestates;
|
||||||
(*list)[list_info->index - 1].action_ok = &setting_data_bool_action_ok_savestates;
|
(*list)[list_info->index - 1].action_ok = &setting_data_bool_action_ok_savestates;
|
||||||
|
(*list)[list_info->index - 1].get_string_representation = &get_string_representation_savestate;
|
||||||
settings_list_current_add_cmd (list, list_info, RARCH_CMD_LOAD_STATE);
|
settings_list_current_add_cmd (list, list_info, RARCH_CMD_LOAD_STATE);
|
||||||
settings_data_list_current_add_flags(list, list_info, SD_FLAG_EXIT);
|
|
||||||
|
|
||||||
CONFIG_BOOL(
|
CONFIG_BOOL(
|
||||||
lists[11],
|
lists[11],
|
||||||
|
@ -82,10 +82,11 @@ enum setting_list_flags
|
|||||||
|
|
||||||
#define SL_FLAG_ALL_SETTINGS (SL_FLAG_ALL - SL_FLAG_MAIN_MENU)
|
#define SL_FLAG_ALL_SETTINGS (SL_FLAG_ALL - SL_FLAG_MAIN_MENU)
|
||||||
|
|
||||||
typedef void (*change_handler_t )(void *data);
|
typedef void (*change_handler_t )(void *data);
|
||||||
typedef int (*action_toggle_handler_t)(void *data, unsigned action);
|
typedef int (*action_toggle_handler_t )(void *data, unsigned action);
|
||||||
typedef int (*action_start_handler_t )(void *data);
|
typedef int (*action_start_handler_t )(void *data);
|
||||||
typedef int (*action_ok_handler_t )(void *data, unsigned action);
|
typedef int (*action_ok_handler_t )(void *data, unsigned action);
|
||||||
|
typedef void (*get_string_representation_t )(void *data, char *buf, size_t sizeof_buf);
|
||||||
|
|
||||||
typedef struct rarch_setting_info
|
typedef struct rarch_setting_info
|
||||||
{
|
{
|
||||||
@ -124,6 +125,7 @@ typedef struct rarch_setting
|
|||||||
action_start_handler_t action_start;
|
action_start_handler_t action_start;
|
||||||
action_toggle_handler_t action_toggle;
|
action_toggle_handler_t action_toggle;
|
||||||
action_ok_handler_t action_ok;
|
action_ok_handler_t action_ok;
|
||||||
|
get_string_representation_t get_string_representation;
|
||||||
|
|
||||||
union
|
union
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user