mirror of
https://github.com/libretro/RetroArch
synced 2025-01-30 21:32:45 +00:00
State slot hotkey adjustments (#14881)
This commit is contained in:
parent
70c4fbeb93
commit
3b129e6098
@ -13536,7 +13536,7 @@ MSG_HASH(
|
||||
)
|
||||
MSG_HASH(
|
||||
MSG_LOADED_STATE_FROM_SLOT_AUTO,
|
||||
"Loaded state from slot #-1 (auto)."
|
||||
"Loaded state from slot #-1 (Auto)."
|
||||
)
|
||||
MSG_HASH(
|
||||
MSG_LOADING,
|
||||
@ -13720,7 +13720,7 @@ MSG_HASH(
|
||||
)
|
||||
MSG_HASH(
|
||||
MSG_SAVED_STATE_TO_SLOT_AUTO,
|
||||
"Saved state to slot #-1 (auto)."
|
||||
"Saved state to slot #-1 (Auto)."
|
||||
)
|
||||
MSG_HASH(
|
||||
MSG_SAVED_SUCCESSFULLY_TO,
|
||||
|
32
runloop.c
32
runloop.c
@ -6276,25 +6276,47 @@ static enum runloop_state_enum runloop_check_state(
|
||||
if (!check2)
|
||||
{
|
||||
check2 = should_slot_decrease && !old_should_slot_decrease;
|
||||
check1 = state_slot > 0;
|
||||
check1 = state_slot > -1;
|
||||
addition = -1;
|
||||
|
||||
/* Wrap-around to 999 */
|
||||
if (check2 && !check1 && state_slot + addition < -1)
|
||||
{
|
||||
state_slot = 1000;
|
||||
check1 = true;
|
||||
}
|
||||
}
|
||||
/* Wrap-around to -1 (Auto) */
|
||||
else if (state_slot + addition > 999)
|
||||
state_slot = -2;
|
||||
|
||||
if (check2)
|
||||
{
|
||||
size_t _len;
|
||||
char msg[128];
|
||||
int cur_state_slot = state_slot;
|
||||
int cur_state_slot = state_slot + addition;
|
||||
|
||||
if (check1)
|
||||
configuration_set_int(settings, settings->ints.state_slot,
|
||||
cur_state_slot + addition);
|
||||
cur_state_slot);
|
||||
_len = strlcpy(msg, msg_hash_to_str(MSG_STATE_SLOT), sizeof(msg));
|
||||
|
||||
snprintf(msg + _len,
|
||||
sizeof(msg) - _len,
|
||||
": %d",
|
||||
settings->ints.state_slot);
|
||||
runloop_msg_queue_push(msg, 2, 180, true, NULL,
|
||||
MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO);
|
||||
|
||||
if (cur_state_slot < 0)
|
||||
strlcat(msg, " (Auto)", sizeof(msg));
|
||||
|
||||
#ifdef HAVE_GFX_WIDGETS
|
||||
if (dispwidget_get_ptr()->active)
|
||||
gfx_widget_set_generic_message(msg, 1000);
|
||||
else
|
||||
#endif
|
||||
runloop_msg_queue_push(msg, 2, 60, true, NULL,
|
||||
MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO);
|
||||
|
||||
RARCH_LOG("[State]: %s\n", msg);
|
||||
}
|
||||
|
||||
|
@ -775,7 +775,7 @@ static void task_save_handler(retro_task_t *task)
|
||||
const char *failed_undo_str = msg_hash_to_str(
|
||||
MSG_FAILED_TO_UNDO_SAVE_STATE);
|
||||
RARCH_ERR("[State]: %s \"%s\".\n", failed_undo_str,
|
||||
undo_save_buf.path);
|
||||
undo_save_buf.path);
|
||||
err[0] = '\0';
|
||||
snprintf(err, err_size - 1, "%s \"RAM\".", failed_undo_str);
|
||||
}
|
||||
@ -951,12 +951,12 @@ static void task_load_handler(retro_task_t *task)
|
||||
* data */
|
||||
if (!(state->file = intfstream_open_rzip_file(state->path,
|
||||
RETRO_VFS_FILE_ACCESS_READ)))
|
||||
goto end;
|
||||
goto not_found;
|
||||
#else
|
||||
if (!(state->file = intfstream_open_file(state->path,
|
||||
RETRO_VFS_FILE_ACCESS_READ,
|
||||
RETRO_VFS_FILE_ACCESS_HINT_NONE)))
|
||||
goto end;
|
||||
goto not_found;
|
||||
#endif
|
||||
|
||||
if ((state->size = intfstream_get_size(state->file)) < 0)
|
||||
@ -990,7 +990,7 @@ static void task_load_handler(retro_task_t *task)
|
||||
snprintf(msg,
|
||||
8192 * sizeof(char),
|
||||
msg_hash_to_str(MSG_AUTOLOADING_SAVESTATE_FAILED),
|
||||
state->path);
|
||||
path_basename(state->path));
|
||||
task_set_error(task, strdup(msg));
|
||||
free(msg);
|
||||
}
|
||||
@ -1012,13 +1012,14 @@ static void task_load_handler(retro_task_t *task)
|
||||
size_t msg_size = 8192 * sizeof(char);
|
||||
char *msg = (char*)malloc(msg_size);
|
||||
|
||||
msg[0] = '\0';
|
||||
|
||||
if (state->flags & SAVE_TASK_FLAG_AUTOLOAD)
|
||||
{
|
||||
msg[0] = '\0';
|
||||
snprintf(msg,
|
||||
msg_size - 1,
|
||||
msg_hash_to_str(MSG_AUTOLOADING_SAVESTATE_SUCCEEDED),
|
||||
state->path);
|
||||
path_basename(state->path));
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -1027,12 +1028,9 @@ static void task_load_handler(retro_task_t *task)
|
||||
msg_hash_to_str(MSG_LOADED_STATE_FROM_SLOT_AUTO),
|
||||
msg_size - 1);
|
||||
else
|
||||
{
|
||||
msg[0] = '\0';
|
||||
snprintf(msg, msg_size - 1,
|
||||
msg_hash_to_str(MSG_LOADED_STATE_FROM_SLOT),
|
||||
state->state_slot);
|
||||
}
|
||||
}
|
||||
|
||||
task_set_title(task, strdup(msg));
|
||||
@ -1044,6 +1042,23 @@ static void task_load_handler(retro_task_t *task)
|
||||
|
||||
return;
|
||||
|
||||
not_found:
|
||||
{
|
||||
size_t msg_size = 8192 * sizeof(char);
|
||||
char *msg = (char*)malloc(msg_size);
|
||||
|
||||
msg[0] = '\0';
|
||||
|
||||
snprintf(msg,
|
||||
msg_size - 1,
|
||||
"%s \"%s\".",
|
||||
msg_hash_to_str(MSG_FAILED_TO_LOAD_STATE),
|
||||
path_basename(state->path));
|
||||
|
||||
task_set_title(task, strdup(msg));
|
||||
free(msg);
|
||||
}
|
||||
|
||||
end:
|
||||
task_load_handler_finished(task, state);
|
||||
}
|
||||
@ -1334,7 +1349,7 @@ static void task_push_save_state(const char *path, void *data, size_t size, bool
|
||||
/* Delay OSD messages and widgets for a few frames
|
||||
* to prevent GPU screenshots from having notifications */
|
||||
runloop_state_t *runloop_st = runloop_state_get_ptr();
|
||||
runloop_st->msg_queue_delay = 10;
|
||||
runloop_st->msg_queue_delay = 12;
|
||||
state->flags |= SAVE_TASK_FLAG_THUMBNAIL_ENABLE;
|
||||
}
|
||||
state->state_slot = settings->ints.state_slot;
|
||||
|
Loading…
x
Reference in New Issue
Block a user