add cheevos_start_active option

This commit is contained in:
meleu 2020-05-15 11:00:48 -03:00 committed by meleu
parent c31d4e6b69
commit 69949187f6
10 changed files with 102 additions and 43 deletions

View File

@ -1552,7 +1552,7 @@ static int rcheevos_prepare_hash_psx(rcheevos_coro_t* coro)
/* find the data track - it should be the first one */
coro->track = cdfs_open_data_track(coro->path);
if (!coro->track)
{
CHEEVOS_LOG(RCHEEVOS_TAG "could not open CD\n");
@ -1991,7 +1991,8 @@ found:
* Inputs: CHEEVOS_VAR_GAMEID
* Outputs:
*/
CORO_GOSUB(RCHEEVOS_DEACTIVATE);
if (!coro->settings->bools.cheevos_start_active)
CORO_GOSUB(RCHEEVOS_DEACTIVATE);
/*
* Inputs: CHEEVOS_VAR_GAMEID
@ -2021,15 +2022,33 @@ found:
if (!number_of_unsupported)
{
snprintf(msg, sizeof(msg),
"You have %d of %d achievements unlocked.",
number_of_unlocked, rcheevos_locals.patchdata.core_count);
if (coro->settings->bools.cheevos_start_active) {
snprintf(msg, sizeof(msg),
"All %d achievements activated for this session.",
rcheevos_locals.patchdata.core_count);
}
else
{
snprintf(msg, sizeof(msg),
"You have %d of %d achievements unlocked.",
number_of_unlocked, rcheevos_locals.patchdata.core_count);
}
}
else
{
snprintf(msg, sizeof(msg),
"You have %d of %d achievements unlocked (%d unsupported).",
number_of_unlocked - number_of_unsupported, rcheevos_locals.patchdata.core_count, number_of_unsupported);
if (coro->settings->bools.cheevos_start_active) {
snprintf(msg, sizeof(msg),
"All %d achievements activated for this session (%d unsupported).",
rcheevos_locals.patchdata.core_count,
number_of_unsupported);
}
else{
snprintf(msg, sizeof(msg),
"You have %d of %d achievements unlocked (%d unsupported).",
number_of_unlocked - number_of_unsupported,
rcheevos_locals.patchdata.core_count,
number_of_unsupported);
}
}
msg[sizeof(msg) - 1] = 0;

View File

@ -332,7 +332,7 @@ static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_XENON360;
#elif defined(HAVE_D3D11)
static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_D3D11;
#elif defined(HAVE_D3D12)
/* FIXME/WARNING: DX12 performance on Xbox is horrible for
/* FIXME/WARNING: DX12 performance on Xbox is horrible for
* some reason. For now, we will default to D3D11 when possible. */
static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_D3D12;
#elif defined(HAVE_D3D10)
@ -1588,6 +1588,7 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
SETTING_BOOL("cheevos_verbose_enable", &settings->bools.cheevos_verbose_enable, true, false, false);
SETTING_BOOL("cheevos_auto_screenshot", &settings->bools.cheevos_auto_screenshot, true, false, false);
SETTING_BOOL("cheevos_badges_enable", &settings->bools.cheevos_badges_enable, true, false, false);
SETTING_BOOL("cheevos_start_active", &settings->bools.cheevos_start_active, true, false, false);
#endif
#ifdef HAVE_OVERLAY
SETTING_BOOL("input_overlay_enable", &settings->bools.input_overlay_enable, true, config_overlay_enable_default(), false);
@ -2674,7 +2675,7 @@ static config_file_t *open_default_config_file(void)
skeleton_conf[0] = '\0';
/* Build a retroarch.cfg path from the
/* Build a retroarch.cfg path from the
* global config directory (/etc). */
fill_pathname_join(skeleton_conf, GLOBAL_CONFIG_DIR,
file_path_str(FILE_PATH_MAIN_CONFIG), path_size);
@ -2689,7 +2690,7 @@ static config_file_t *open_default_config_file(void)
if (conf)
{
/* Since this is a clean config file, we can
/* Since this is a clean config file, we can
* safely use config_save_on_exit. */
config_set_bool(conf, "config_save_on_exit", true);
saved = config_file_write(conf, conf_path, true);

View File

@ -304,6 +304,7 @@ typedef struct settings
bool cheevos_badges_enable;
bool cheevos_verbose_enable;
bool cheevos_auto_screenshot;
bool cheevos_start_active;
/* Camera */
bool camera_allow;

View File

@ -368,6 +368,10 @@ MSG_HASH(
MENU_ENUM_LABEL_CHEEVOS_AUTO_SCREENSHOT,
"cheevos_auto_screenshot"
)
MSG_HASH(
MENU_ENUM_LABEL_CHEEVOS_START_ACTIVE,
"cheevos_start_active"
)
MSG_HASH(
MENU_ENUM_LABEL_CLOSE_CONTENT,
"unload_core"

View File

@ -4155,6 +4155,14 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_CHEEVOS_AUTO_SCREENSHOT,
"Automatically take a screenshot when an achievement is triggered."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CHEEVOS_START_ACTIVE,
"Start Active"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CHEEVOS_START_ACTIVE,
"Start the session with all achievements active (even the ones you previously unlocked)."
)
/* Settings > Network */

View File

@ -169,6 +169,7 @@ default_sublabel_macro(action_bind_sublabel_cheevos_richpresence_enable, MENU_
default_sublabel_macro(action_bind_sublabel_cheevos_badges_enable, MENU_ENUM_SUBLABEL_CHEEVOS_BADGES_ENABLE)
default_sublabel_macro(action_bind_sublabel_cheevos_verbose_enable, MENU_ENUM_SUBLABEL_CHEEVOS_VERBOSE_ENABLE)
default_sublabel_macro(action_bind_sublabel_cheevos_auto_screenshot, MENU_ENUM_SUBLABEL_CHEEVOS_AUTO_SCREENSHOT)
default_sublabel_macro(action_bind_sublabel_cheevos_start_active, MENU_ENUM_SUBLABEL_CHEEVOS_START_ACTIVE)
default_sublabel_macro(action_bind_sublabel_menu_views_settings_list, MENU_ENUM_SUBLABEL_MENU_VIEWS_SETTINGS)
default_sublabel_macro(action_bind_sublabel_quick_menu_views_settings_list, MENU_ENUM_SUBLABEL_QUICK_MENU_VIEWS_SETTINGS)
default_sublabel_macro(action_bind_sublabel_settings_views_settings_list, MENU_ENUM_SUBLABEL_SETTINGS_VIEWS_SETTINGS)
@ -1111,14 +1112,14 @@ static int action_bind_sublabel_playlist_entry(
/* Only add sublabel if a core is currently assigned
* > Both core name and core path must be valid */
if ( string_is_empty(entry->core_name) ||
if ( string_is_empty(entry->core_name) ||
string_is_equal(entry->core_name, "DETECT") ||
string_is_empty(entry->core_path) ||
string_is_equal(entry->core_path, "DETECT"))
return 0;
/* Add core name */
strlcpy(s,
strlcpy(s,
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_PLAYLIST_SUBLABEL_CORE), len);
strlcat(s, " ", len);
strlcat(s, entry->core_name, len);
@ -1224,7 +1225,7 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs,
info_range_list_t info_list[] = {
{
MENU_SETTINGS_INPUT_DESC_KBD_BEGIN,
MENU_SETTINGS_INPUT_DESC_KBD_END,
MENU_SETTINGS_INPUT_DESC_KBD_END,
action_bind_sublabel_remap_kbd_sublabel
},
#ifdef HAVE_AUDIOMIXER
@ -2746,6 +2747,9 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs,
case MENU_ENUM_LABEL_CHEEVOS_AUTO_SCREENSHOT:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_cheevos_auto_screenshot);
break;
case MENU_ENUM_LABEL_CHEEVOS_START_ACTIVE:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_cheevos_start_active);
break;
case MENU_ENUM_LABEL_SETTINGS:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_settings);
break;

View File

@ -101,7 +101,7 @@
#include "../runtime_file.h"
#include "../manual_content_scan.h"
/* TODO/FIXME - globals - need to find a way to
/* TODO/FIXME - globals - need to find a way to
* get rid of these */
static char new_path_entry[4096] = {0};
static char new_lbl_entry[4096] = {0};
@ -2259,7 +2259,7 @@ static int menu_displaylist_parse_horizontal_content_actions(
MENU_ENUM_LABEL_ADD_TO_FAVORITES_PLAYLIST, FILE_TYPE_PLAYLIST_ENTRY, 0, 0);
}
if ( settings->bools.quick_menu_show_set_core_association &&
if ( settings->bools.quick_menu_show_set_core_association &&
!settings->bools.kiosk_mode_enable)
{
menu_entries_append_enum(info->list,
@ -2269,7 +2269,7 @@ static int menu_displaylist_parse_horizontal_content_actions(
}
if (
settings->bools.quick_menu_show_reset_core_association &&
settings->bools.quick_menu_show_reset_core_association &&
!settings->bools.kiosk_mode_enable)
{
menu_entries_append_enum(info->list,
@ -2289,7 +2289,7 @@ static int menu_displaylist_parse_horizontal_content_actions(
#ifdef HAVE_NETWORKING
if (
settings->bools.quick_menu_show_download_thumbnails &&
settings->bools.quick_menu_show_download_thumbnails &&
!settings->bools.kiosk_mode_enable)
{
bool download_enabled = true;
@ -2321,7 +2321,7 @@ static int menu_displaylist_parse_horizontal_content_actions(
!string_is_equal(system, "music_history") &&
!string_is_equal(system, "video_history");
}
if (settings->bools.network_on_demand_thumbnails)
download_enabled = false;
@ -4068,13 +4068,13 @@ static unsigned menu_displaylist_populate_subsystem(
unsigned i = 0;
int n = 0;
bool is_rgui = string_is_equal(menu_driver, "rgui");
/* Select appropriate 'star' marker for subsystem menu entries
* (i.e. RGUI does not support unicode, so use a 'standard'
* character fallback) */
snprintf(star_char, sizeof(star_char),
"%s", is_rgui ? "*" : utf8_star_char);
if (menu_displaylist_has_subsystems())
{
for (i = 0; i < subsystem_current_count; i++, subsystem++)
@ -4088,13 +4088,13 @@ static unsigned menu_displaylist_populate_subsystem(
"Load %s %s",
subsystem->desc,
star_char);
/* If using RGUI with sublabels disabled, add the
* appropriate text to the menu entry itself... */
if (is_rgui && !menu_show_sublabels)
{
char tmp[PATH_MAX_LENGTH];
n = snprintf(tmp, sizeof(tmp),
"%s [%s %s]", s, "Current Content:",
subsystem->roms[content_get_subsystem_rom_id()].desc);
@ -4121,7 +4121,7 @@ static unsigned menu_displaylist_populate_subsystem(
strlcpy(s, tmp, sizeof(s));
}
if (menu_entries_append_enum(list,
s,
msg_hash_to_str(MENU_ENUM_LABEL_SUBSYSTEM_ADD),
@ -4135,7 +4135,7 @@ static unsigned menu_displaylist_populate_subsystem(
"Start %s %s",
subsystem->desc,
star_char);
/* If using RGUI with sublabels disabled, add the
* appropriate text to the menu entry itself... */
if (is_rgui && !menu_show_sublabels)
@ -4156,7 +4156,7 @@ static unsigned menu_displaylist_populate_subsystem(
if (!string_is_empty(rom_buff))
{
n = snprintf(tmp, sizeof(tmp), "%s [%s]", s, rom_buff);
/* More snprintf() gcc warning suppression... */
if ((n < 0) || (n >= PATH_MAX_LENGTH))
{
@ -4165,11 +4165,11 @@ static unsigned menu_displaylist_populate_subsystem(
RARCH_WARN("Menu subsystem entry: Description label truncated.\n");
}
}
strlcpy(s, tmp, sizeof(s));
}
}
if (menu_entries_append_enum(list,
s,
msg_hash_to_str(MENU_ENUM_LABEL_SUBSYSTEM_LOAD),
@ -4183,7 +4183,7 @@ static unsigned menu_displaylist_populate_subsystem(
snprintf(s, sizeof(s),
"Load %s",
subsystem->desc);
/* If using RGUI with sublabels disabled, add the
* appropriate text to the menu entry itself... */
if (is_rgui && !menu_show_sublabels)
@ -4194,11 +4194,11 @@ static unsigned menu_displaylist_populate_subsystem(
if (subsystem->num_roms > 0)
{
char tmp[PATH_MAX_LENGTH];
n = snprintf(tmp, sizeof(tmp),
"%s [%s %s]", s, "Current Content:",
subsystem->roms[0].desc);
/* More snprintf() gcc warning suppression... */
if ((n < 0) || (n >= PATH_MAX_LENGTH))
{
@ -4211,7 +4211,7 @@ static unsigned menu_displaylist_populate_subsystem(
strlcpy(s, tmp, sizeof(s));
}
}
if (menu_entries_append_enum(list,
s,
msg_hash_to_str(MENU_ENUM_LABEL_SUBSYSTEM_ADD),
@ -4238,7 +4238,7 @@ unsigned menu_displaylist_build_list(
case DISPLAYLIST_SUBSYSTEM_SETTINGS_LIST:
{
const struct retro_subsystem_info* subsystem = subsystem_data;
rarch_system_info_t *sys_info =
rarch_system_info_t *sys_info =
runloop_get_system_info();
/* Core not loaded completely, use the data we
* peeked on load core */
@ -5490,12 +5490,12 @@ unsigned menu_displaylist_build_list(
bool show_hidden_files = settings->bools.show_hidden_files;
#ifdef HAVE_LIBRETRODB
const char *path_content_database = settings->paths.path_content_database;
struct string_list *system_name_list =
struct string_list *system_name_list =
manual_content_scan_get_menu_system_name_list(
path_content_database,
show_hidden_files);
#else
struct string_list *system_name_list =
struct string_list *system_name_list =
manual_content_scan_get_menu_system_name_list(NULL,
show_hidden_files);
#endif
@ -5540,7 +5540,7 @@ unsigned menu_displaylist_build_list(
case DISPLAYLIST_DROPDOWN_LIST_MANUAL_CONTENT_SCAN_CORE_NAME:
{
/* Get core name list */
struct string_list *core_name_list =
struct string_list *core_name_list =
manual_content_scan_get_menu_core_name_list();
if (core_name_list)
@ -6075,6 +6075,7 @@ unsigned menu_displaylist_build_list(
{MENU_ENUM_LABEL_CHEEVOS_TEST_UNOFFICIAL, PARSE_ONLY_BOOL, false },
{MENU_ENUM_LABEL_CHEEVOS_VERBOSE_ENABLE, PARSE_ONLY_BOOL, false },
{MENU_ENUM_LABEL_CHEEVOS_AUTO_SCREENSHOT, PARSE_ONLY_BOOL, false },
{MENU_ENUM_LABEL_CHEEVOS_START_ACTIVE, PARSE_ONLY_BOOL, false },
};
for (i = 0; i < ARRAY_SIZE(build_list); i++)
@ -6677,7 +6678,7 @@ unsigned menu_displaylist_build_list(
count++;
}
}
{
settings_t *settings = config_get_ptr();
bool runahead_enabled = settings->bools.run_ahead_enabled;
@ -7738,7 +7739,7 @@ unsigned menu_displaylist_netplay_refresh_rooms(file_list_t *list)
bool menu_displaylist_has_subsystems(void)
{
const struct retro_subsystem_info* subsystem = subsystem_data;
rarch_system_info_t *sys_info =
rarch_system_info_t *sys_info =
runloop_get_system_info();
/* Core not loaded completely, use the data we
* peeked on load core */

View File

@ -2581,7 +2581,7 @@ static int setting_action_ok_bind_all_save_autoconfig(rarch_setting_t *setting,
index_offset = setting->index_offset;
name = input_config_get_device_name(index_offset);
if (!string_is_empty(name) &&
if (!string_is_empty(name) &&
config_save_autoconf_profile(name, index_offset))
runloop_msg_queue_push(
msg_hash_to_str(MSG_AUTOCONFIG_FILE_SAVED_SUCCESSFULLY), 1, 100, true,
@ -7135,7 +7135,7 @@ static void change_handler_video_layout_enable(rarch_setting_t *setting)
static void change_handler_video_layout_path(rarch_setting_t *setting)
{
settings_t *settings = config_get_ptr();
configuration_set_uint(settings,
configuration_set_uint(settings,
settings->uints.video_layout_selected_view, 0);
video_layout_load(setting->value.target.string);
@ -15936,6 +15936,22 @@ static bool setting_append_list(
SD_FLAG_NONE
);
CONFIG_BOOL(
list, list_info,
&settings->bools.cheevos_start_active,
MENU_ENUM_LABEL_CHEEVOS_START_ACTIVE,
MENU_ENUM_LABEL_VALUE_CHEEVOS_START_ACTIVE,
false,
MENU_ENUM_LABEL_VALUE_OFF,
MENU_ENUM_LABEL_VALUE_ON,
&group_info,
&subgroup_info,
parent_group,
general_write_handler,
general_read_handler,
SD_FLAG_NONE
);
CONFIG_BOOL(
list, list_info,
&settings->bools.cheevos_hardcore_mode_enable,

View File

@ -1238,6 +1238,7 @@ enum msg_hash_enums
MENU_LABEL(CHEEVOS_TEST_UNOFFICIAL),
MENU_LABEL(CHEEVOS_VERBOSE_ENABLE),
MENU_LABEL(CHEEVOS_AUTO_SCREENSHOT),
MENU_LABEL(CHEEVOS_START_ACTIVE),
MENU_LABEL(CHEEVOS_ENABLE),
MENU_LABEL(CHEEVOS_DESCRIPTION),
MENU_LABEL(ACCOUNTS_RETRO_ACHIEVEMENTS),

View File

@ -851,8 +851,8 @@
# cheevos_enable = false
# RetroAchievements.org credentials.
# cheevos_username =
# cheevos_password =
# cheevos_username =
# cheevos_password =
# The hardcore mode disables savestates and cheating features, but it
# makes the achievements points double.
@ -875,7 +875,11 @@
# Send some messages to the RetroAchievements.org saying, for example,
# where you are in the game, how many lives you have, your score, etc.
# cheevos_richpresence_enable = false
# cheevos_richpresence_enable = true
# Even after unlocking achievements in previous sessions, you may still want
# to see them triggering in the current session.
# cheevos_start_active = false
# Unnoficial achievements are used only for achievement creators and testers.
# cheevos_test_unofficial = false