Add player mouse index setting

This commit is contained in:
Zoran Vuckovic 2017-06-08 16:13:45 +02:00
parent f86f1b3e32
commit a74197dc49
5 changed files with 62 additions and 0 deletions

View File

@ -1582,6 +1582,7 @@ static void config_set_defaults(void)
settings->uints.input_analog_dpad_mode[i] = ANALOG_DPAD_NONE; settings->uints.input_analog_dpad_mode[i] = ANALOG_DPAD_NONE;
if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_LIBRETRO_DEVICE, &i)) if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_LIBRETRO_DEVICE, &i))
input_config_set_device(i, RETRO_DEVICE_JOYPAD); input_config_set_device(i, RETRO_DEVICE_JOYPAD);
settings->uints.input_mouse_index[i] = 0;
} }
video_driver_reset_custom_viewport(); video_driver_reset_custom_viewport();
@ -2339,6 +2340,9 @@ static bool config_load_file(const char *path, bool set_defaults,
snprintf(buf, sizeof(buf), "input_player%u_analog_dpad_mode", i + 1); snprintf(buf, sizeof(buf), "input_player%u_analog_dpad_mode", i + 1);
CONFIG_GET_INT_BASE(conf, settings, uints.input_analog_dpad_mode[i], buf); CONFIG_GET_INT_BASE(conf, settings, uints.input_analog_dpad_mode[i], buf);
snprintf(buf, sizeof(buf), "input_player%u_mouse_index", i + 1);
CONFIG_GET_INT_BASE(conf, settings, uints.input_mouse_index[i], buf);
if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_LIBRETRO_DEVICE, &i)) if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_LIBRETRO_DEVICE, &i))
{ {
snprintf(buf, sizeof(buf), "input_libretro_device_p%u", i + 1); snprintf(buf, sizeof(buf), "input_libretro_device_p%u", i + 1);
@ -3492,6 +3496,8 @@ bool config_save_file(const char *path)
config_set_int(conf, cfg, input_config_get_device(i)); config_set_int(conf, cfg, input_config_get_device(i));
snprintf(cfg, sizeof(cfg), "input_player%u_analog_dpad_mode", i + 1); snprintf(cfg, sizeof(cfg), "input_player%u_analog_dpad_mode", i + 1);
config_set_int(conf, cfg, settings->uints.input_analog_dpad_mode[i]); config_set_int(conf, cfg, settings->uints.input_analog_dpad_mode[i]);
snprintf(cfg, sizeof(cfg), "input_player%u_mouse_index", i + 1);
config_set_int(conf, cfg, settings->uints.input_mouse_index[i]);
} }
/* Boolean settings */ /* Boolean settings */

View File

@ -267,6 +267,7 @@ typedef struct settings
unsigned input_joypad_map[MAX_USERS]; unsigned input_joypad_map[MAX_USERS];
unsigned input_device[MAX_USERS]; unsigned input_device[MAX_USERS];
unsigned input_mouse_index[MAX_USERS];
unsigned input_turbo_period; unsigned input_turbo_period;
unsigned input_turbo_duty_cycle; unsigned input_turbo_duty_cycle;

View File

@ -701,6 +701,8 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_DEVICE_INDEX,
"Device Index") "Device Index")
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_DEVICE_TYPE, MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_DEVICE_TYPE,
"Device Type") "Device Type")
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_MOUSE_INDEX,
"Mouse Index")
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_DRIVER, MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_DRIVER,
"Input Driver") "Input Driver")
MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_DUTY_CYCLE, MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_DUTY_CYCLE,

View File

@ -1299,7 +1299,36 @@ static int setting_action_right_bind_device(void *data, bool wraparound)
return 0; return 0;
} }
static int setting_action_left_mouse_index(void *data, bool wraparound)
{
rarch_setting_t *setting = (rarch_setting_t*)data;
settings_t *settings = config_get_ptr();
if (!setting)
return -1;
if (settings->uints.input_mouse_index[setting->index_offset])
{
--settings->uints.input_mouse_index[setting->index_offset];
settings->modified = true;
}
return 0;
}
static int setting_action_right_mouse_index(void *data, bool wraparound)
{
rarch_setting_t *setting = (rarch_setting_t*)data;
settings_t *settings = config_get_ptr();
if (!setting)
return -1;
++settings->uints.input_mouse_index[setting->index_offset];
settings->modified = true;
return 0;
}
/** /**
******* ACTION OK CALLBACK FUNCTIONS ******* ******* ACTION OK CALLBACK FUNCTIONS *******
@ -1918,6 +1947,7 @@ static bool setting_append_list_input_player_options(
static char key_bind_all[MAX_USERS][64]; static char key_bind_all[MAX_USERS][64];
static char key_bind_all_save_autoconfig[MAX_USERS][64]; static char key_bind_all_save_autoconfig[MAX_USERS][64];
static char key_bind_defaults[MAX_USERS][64]; static char key_bind_defaults[MAX_USERS][64];
static char mouse_index[MAX_USERS][64];
static char label[MAX_USERS][64]; static char label[MAX_USERS][64];
static char label_type[MAX_USERS][64]; static char label_type[MAX_USERS][64];
@ -1925,6 +1955,7 @@ static bool setting_append_list_input_player_options(
static char label_bind_all[MAX_USERS][64]; static char label_bind_all[MAX_USERS][64];
static char label_bind_all_save_autoconfig[MAX_USERS][64]; static char label_bind_all_save_autoconfig[MAX_USERS][64];
static char label_bind_defaults[MAX_USERS][64]; static char label_bind_defaults[MAX_USERS][64];
static char label_mouse_index[MAX_USERS][64];
tmp_string[0] = '\0'; tmp_string[0] = '\0';
@ -1946,6 +1977,8 @@ static bool setting_append_list_input_player_options(
fill_pathname_join_delim(key_bind_defaults[user], fill_pathname_join_delim(key_bind_defaults[user],
tmp_string, "bind_defaults", '_', tmp_string, "bind_defaults", '_',
sizeof(key_bind_defaults[user])); sizeof(key_bind_defaults[user]));
fill_pathname_join_delim(mouse_index[user], tmp_string, "mouse_index", '_',
sizeof(mouse_index[user]));
snprintf(label[user], sizeof(label[user]), snprintf(label[user], sizeof(label[user]),
"%s %u %s", msg_hash_to_str(MENU_ENUM_LABEL_VALUE_USER), user + 1, "%s %u %s", msg_hash_to_str(MENU_ENUM_LABEL_VALUE_USER), user + 1,
@ -1965,6 +1998,9 @@ static bool setting_append_list_input_player_options(
snprintf(label_bind_all_save_autoconfig[user], sizeof(label_bind_all_save_autoconfig[user]), snprintf(label_bind_all_save_autoconfig[user], sizeof(label_bind_all_save_autoconfig[user]),
"%s %u %s", msg_hash_to_str(MENU_ENUM_LABEL_VALUE_USER), user + 1, "%s %u %s", msg_hash_to_str(MENU_ENUM_LABEL_VALUE_USER), user + 1,
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_INPUT_SAVE_AUTOCONFIG)); msg_hash_to_str(MENU_ENUM_LABEL_VALUE_INPUT_SAVE_AUTOCONFIG));
snprintf(label_mouse_index[user], sizeof(label_mouse_index[user]),
"%s %u %s", msg_hash_to_str(MENU_ENUM_LABEL_VALUE_USER), user + 1,
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_INPUT_MOUSE_INDEX));
CONFIG_UINT_ALT( CONFIG_UINT_ALT(
list, list_info, list, list_info,
@ -2058,6 +2094,22 @@ static bool setting_append_list_input_player_options(
(*list)[list_info->index - 1].index_offset = user; (*list)[list_info->index - 1].index_offset = user;
(*list)[list_info->index - 1].action_ok = &setting_action_ok_bind_all_save_autoconfig; (*list)[list_info->index - 1].action_ok = &setting_action_ok_bind_all_save_autoconfig;
(*list)[list_info->index - 1].action_cancel = NULL; (*list)[list_info->index - 1].action_cancel = NULL;
CONFIG_UINT_ALT(
list, list_info,
&settings->uints.input_mouse_index[user],
mouse_index[user],
label_mouse_index[user],
0,
&group_info,
&subgroup_info,
parent_group,
general_write_handler,
general_read_handler);
(*list)[list_info->index - 1].index = user + 1;
(*list)[list_info->index - 1].index_offset = user;
(*list)[list_info->index - 1].action_left = &setting_action_left_mouse_index;
(*list)[list_info->index - 1].action_right = &setting_action_right_mouse_index;
} }
for (i = 0; i < RARCH_BIND_LIST_END; i ++) for (i = 0; i < RARCH_BIND_LIST_END; i ++)

View File

@ -574,6 +574,7 @@ enum msg_hash_enums
MENU_ENUM_LABEL_VALUE_INPUT_BIND_ALL, MENU_ENUM_LABEL_VALUE_INPUT_BIND_ALL,
MENU_ENUM_LABEL_VALUE_INPUT_BIND_DEFAULT_ALL, MENU_ENUM_LABEL_VALUE_INPUT_BIND_DEFAULT_ALL,
MENU_ENUM_LABEL_VALUE_INPUT_SAVE_AUTOCONFIG, MENU_ENUM_LABEL_VALUE_INPUT_SAVE_AUTOCONFIG,
MENU_ENUM_LABEL_VALUE_INPUT_MOUSE_INDEX,
MENU_LABEL(INPUT_MAX_USERS), MENU_LABEL(INPUT_MAX_USERS),
MENU_LABEL(INPUT_USER_BINDS), MENU_LABEL(INPUT_USER_BINDS),