(ovr) add game overrides too

This commit is contained in:
radius 2016-08-26 09:43:29 -05:00
parent 1b91202004
commit 671aa0f59c
8 changed files with 57 additions and 44 deletions

View File

@ -1613,7 +1613,7 @@ void command_event_save_current_config(int override_type)
bool ret = false; bool ret = false;
char msg[128] = {0}; char msg[128] = {0};
ret = config_save_file_diff(override_type); ret = config_save_overrides(override_type);
return; return;
} }
} }
@ -2318,9 +2318,12 @@ bool command_event(enum event_command cmd, void *data)
case CMD_EVENT_MENU_SAVE_CURRENT_CONFIG: case CMD_EVENT_MENU_SAVE_CURRENT_CONFIG:
command_event_save_current_config(OVERRIDE_NONE); command_event_save_current_config(OVERRIDE_NONE);
break; break;
case CMD_EVENT_MENU_SAVE_CURRENT_CONFIG_OVERRIDE: case CMD_EVENT_MENU_SAVE_CURRENT_CONFIG_OVERRIDE_CORE:
command_event_save_current_config(OVERRIDE_CORE); command_event_save_current_config(OVERRIDE_CORE);
break; break;
case CMD_EVENT_MENU_SAVE_CURRENT_CONFIG_OVERRIDE_GAME:
command_event_save_current_config(OVERRIDE_GAME);
break;
case CMD_EVENT_MENU_SAVE_CONFIG: case CMD_EVENT_MENU_SAVE_CONFIG:
if (!command_event_save_core_config()) if (!command_event_save_core_config())
return false; return false;

View File

@ -141,7 +141,8 @@ enum event_command
CMD_EVENT_PAUSE, CMD_EVENT_PAUSE,
CMD_EVENT_PAUSE_CHECKS, CMD_EVENT_PAUSE_CHECKS,
CMD_EVENT_MENU_SAVE_CURRENT_CONFIG, CMD_EVENT_MENU_SAVE_CURRENT_CONFIG,
CMD_EVENT_MENU_SAVE_CURRENT_CONFIG_OVERRIDE, CMD_EVENT_MENU_SAVE_CURRENT_CONFIG_OVERRIDE_CORE,
CMD_EVENT_MENU_SAVE_CURRENT_CONFIG_OVERRIDE_GAME,
CMD_EVENT_MENU_SAVE_CONFIG, CMD_EVENT_MENU_SAVE_CONFIG,
CMD_EVENT_MENU_PAUSE_LIBRETRO, CMD_EVENT_MENU_PAUSE_LIBRETRO,
/* Toggles menu on/off. */ /* Toggles menu on/off. */

View File

@ -3386,24 +3386,25 @@ bool config_save_file(const char *path)
} }
/** /**
* config_save_file: * config_save_overrides:
* @path : Path that shall be written to. * @path : Path that shall be written to.
* *
* Writes a config file to disk. * Writes a config file override to disk.
* *
* Returns: true (1) on success, otherwise returns false (0). * Returns: true (1) on success, otherwise returns false (0).
**/ **/
bool config_save_file_diff(int override_type) bool config_save_overrides(int override_type)
{ {
unsigned i = 0; unsigned i = 0;
bool ret = false; bool ret = false;
char buf[PATH_MAX_LENGTH] = {0}; char buf[PATH_MAX_LENGTH] = {0};
char config_directory[PATH_MAX_LENGTH] = {0}; char config_directory[PATH_MAX_LENGTH] = {0};
char core_path[PATH_MAX_LENGTH] = {0}; char override_directory[PATH_MAX_LENGTH] = {0};
char game_path[PATH_MAX_LENGTH] = {0}; char core_path[PATH_MAX_LENGTH] = {0};
const char *core_name = NULL; char game_path[PATH_MAX_LENGTH] = {0};
const char *game_name = NULL; const char *core_name = NULL;
config_file_t *conf = NULL; const char *game_name = NULL;
config_file_t *conf = NULL;
global_t *global = global_get_ptr(); global_t *global = global_get_ptr();
settings_t *overrides = config_get_ptr(); settings_t *overrides = config_get_ptr();
@ -3454,6 +3455,12 @@ bool config_save_file_diff(int override_type)
fill_pathname_application_special(config_directory, sizeof(config_directory), fill_pathname_application_special(config_directory, sizeof(config_directory),
APPLICATION_SPECIAL_DIRECTORY_CONFIG); APPLICATION_SPECIAL_DIRECTORY_CONFIG);
fill_pathname_join(override_directory, config_directory, core_name,
sizeof(override_directory));
if(!path_file_exists(override_directory))
path_mkdir(override_directory);
/* Concatenate strings into full paths for core_path, game_path */ /* Concatenate strings into full paths for core_path, game_path */
fill_pathname_join_special_ext(game_path, fill_pathname_join_special_ext(game_path,
config_directory, core_name, config_directory, core_name,
@ -3467,36 +3474,20 @@ bool config_save_file_diff(int override_type)
file_path_str(FILE_PATH_CONFIG_EXTENSION), file_path_str(FILE_PATH_CONFIG_EXTENSION),
sizeof(core_path)); sizeof(core_path));
if (override_type == OVERRIDE_CORE) if (!conf)
{ conf = config_file_new(NULL);
RARCH_LOG ("[overrides] path %s\n", core_path);
/* Create a new config file from core_path */
conf = config_file_new(core_path);
}
else if(override_type == OVERRIDE_GAME)
{
RARCH_LOG ("[overrides] path %s\n", game_path);
/* Create a new config file from core_path */
conf = config_file_new(game_path);
}
else
return false;
/* Load the original config file in memory */ /* Load the original config file in memory */
config_load_file(global->path.config, false, settings); config_load_file(global->path.config, false, settings);
bool_settings_size = populate_settings_bool(settings, bool_settings); bool_settings_size = populate_settings_bool(settings, bool_settings);
populate_settings_bool (overrides, bool_overrides); populate_settings_bool (overrides, bool_overrides);
int_settings_size = populate_settings_int(settings, int_settings); int_settings_size = populate_settings_int(settings, int_settings);
populate_settings_int (overrides, int_overrides); populate_settings_int (overrides, int_overrides);
float_settings_size = populate_settings_float(settings, float_settings); float_settings_size = populate_settings_float(settings, float_settings);
populate_settings_float (overrides, float_overrides); populate_settings_float (overrides, float_overrides);
string_settings_size = populate_settings_string(settings, string_settings); string_settings_size = populate_settings_string(settings, string_settings);
populate_settings_string (overrides, string_overrides); populate_settings_string (overrides, string_overrides);
path_settings_size = populate_settings_path(settings, path_settings); path_settings_size = populate_settings_path(settings, path_settings);
populate_settings_path (overrides, path_overrides); populate_settings_path (overrides, path_overrides);
@ -3579,7 +3570,6 @@ bool config_save_file_diff(int override_type)
else else
return false; return false;
free(bool_settings); free(bool_settings);
free(bool_overrides); free(bool_overrides);
free(int_settings); free(int_settings);

View File

@ -658,14 +658,14 @@ bool config_save_autoconf_profile(const char *path, unsigned user);
bool config_save_file(const char *path); bool config_save_file(const char *path);
/** /**
* config_save_file_diff: * config_save_overrides:
* @path : Path that shall be written to. * @path : Path that shall be written to.
* *
* Writes a config file override to disk. * Writes a config file override to disk.
* *
* Returns: true (1) on success, otherwise returns false (0). * Returns: true (1) on success, otherwise returns false (0).
**/ **/
bool config_save_file_diff(int override_type); bool config_save_overrides(int override_type);
/* Replaces currently loaded configuration file with /* Replaces currently loaded configuration file with
* another one. Will load a dummy core to flush state * another one. Will load a dummy core to flush state

View File

@ -2064,8 +2064,10 @@ static const char *menu_hash_to_str_us_label_enum(enum msg_hash_enums msg)
return "input_small_keyboard_enable"; return "input_small_keyboard_enable";
case MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG: case MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG:
return "save_current_config"; return "save_current_config";
case MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE: case MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE_CORE:
return "save_current_config_override"; return "save_current_config_override_core";
case MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE_GAME:
return "save_current_config_override_game";
case MENU_ENUM_LABEL_STATE_SLOT: case MENU_ENUM_LABEL_STATE_SLOT:
return "state_slot"; return "state_slot";
case MENU_ENUM_LABEL_CHEEVOS_USERNAME: case MENU_ENUM_LABEL_CHEEVOS_USERNAME:
@ -3441,8 +3443,10 @@ const char *msg_hash_to_str_us(enum msg_hash_enums msg)
return "Keyboard Gamepad Mapping Type"; return "Keyboard Gamepad Mapping Type";
case MENU_ENUM_LABEL_VALUE_INPUT_SMALL_KEYBOARD_ENABLE: case MENU_ENUM_LABEL_VALUE_INPUT_SMALL_KEYBOARD_ENABLE:
return "Small Keyboard Enable"; return "Small Keyboard Enable";
case MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG_OVERRIDE: case MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG_OVERRIDE_CORE:
return "Save Core Overrides"; return "Save Core Overrides";
case MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG_OVERRIDE_GAME:
return "Save Game Overrides";
case MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG: case MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG:
return "Save Current Config"; return "Save Current Config";
case MENU_ENUM_LABEL_VALUE_STATE_SLOT: case MENU_ENUM_LABEL_VALUE_STATE_SLOT:

View File

@ -4374,7 +4374,10 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG, MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG,
PARSE_ACTION, false); PARSE_ACTION, false);
menu_displaylist_parse_settings_enum(menu, info, menu_displaylist_parse_settings_enum(menu, info,
MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE, MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE_CORE,
PARSE_ACTION, false);
menu_displaylist_parse_settings_enum(menu, info,
MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE_GAME,
PARSE_ACTION, false); PARSE_ACTION, false);
menu_displaylist_parse_settings_enum(menu, info, menu_displaylist_parse_settings_enum(menu, info,
MENU_ENUM_LABEL_SAVE_NEW_CONFIG, MENU_ENUM_LABEL_SAVE_NEW_CONFIG,

View File

@ -4165,13 +4165,23 @@ static bool setting_append_list(
CONFIG_ACTION( CONFIG_ACTION(
list, list_info, list, list_info,
msg_hash_to_str(MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE), msg_hash_to_str(MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE_CORE),
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG_OVERRIDE), msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG_OVERRIDE_CORE),
&group_info, &group_info,
&subgroup_info, &subgroup_info,
parent_group); parent_group);
menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_MENU_SAVE_CURRENT_CONFIG_OVERRIDE); menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_MENU_SAVE_CURRENT_CONFIG_OVERRIDE_CORE);
menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE_CORE);
CONFIG_ACTION(
list, list_info,
msg_hash_to_str(MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE_GAME),
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG_OVERRIDE_GAME),
&group_info,
&subgroup_info,
parent_group);
menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_MENU_SAVE_CURRENT_CONFIG_OVERRIDE_GAME);
menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE_GAME);
CONFIG_ACTION( CONFIG_ACTION(
list, list_info, list, list_info,

View File

@ -1773,9 +1773,11 @@ enum msg_hash_enums
MENU_ENUM_LABEL_VALUE_HELP_SCANNING_CONTENT_DESC, MENU_ENUM_LABEL_VALUE_HELP_SCANNING_CONTENT_DESC,
MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG, MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG,
MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE, MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE_CORE,
MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE_GAME,
MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG, MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG,
MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG_OVERRIDE, MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG_OVERRIDE_CORE,
MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG_OVERRIDE_GAME,
MENU_ENUM_LABEL_VALUE_THUMBNAIL_MODE_SCREENSHOTS, MENU_ENUM_LABEL_VALUE_THUMBNAIL_MODE_SCREENSHOTS,
MENU_ENUM_LABEL_VALUE_THUMBNAIL_MODE_TITLE_SCREENS, MENU_ENUM_LABEL_VALUE_THUMBNAIL_MODE_TITLE_SCREENS,