1
0
mirror of https://github.com/libretro/RetroArch synced 2025-03-28 19:20:35 +00:00

Add RARCH_CMD_DISK_EJECT_TOGGLE/RARCH_CMD_DISK_NEXT

This commit is contained in:
twinaphex 2014-10-03 15:13:37 +02:00
parent cc277fcf76
commit 5c09e6be84
3 changed files with 46 additions and 27 deletions

@ -381,6 +381,9 @@ static void cheat_manager_update(cheat_manager_t *handle)
void cheat_manager_toggle(cheat_manager_t *handle)
{
if (!handle)
return;
handle->cheats[handle->ptr].state ^= true;
cheat_manager_apply_cheats(handle);
cheat_manager_update(handle);
@ -388,12 +391,17 @@ void cheat_manager_toggle(cheat_manager_t *handle)
void cheat_manager_index_next(cheat_manager_t *handle)
{
if (!handle)
return;
handle->ptr = (handle->ptr + 1) % handle->size;
cheat_manager_update(handle);
}
void cheat_manager_index_prev(cheat_manager_t *handle)
{
if (!handle)
return;
if (handle->ptr == 0)
handle->ptr = handle->size - 1;
else

@ -156,6 +156,8 @@ enum basic_event
RARCH_CMD_TEMPORARY_CONTENT_DEINIT,
RARCH_CMD_SUBSYSTEM_FULLPATHS_DEINIT,
RARCH_CMD_LOG_FILE_DEINIT,
RARCH_CMD_DISK_EJECT_TOGGLE,
RARCH_CMD_DISK_NEXT,
};
enum action_state

@ -2240,11 +2240,8 @@ static bool do_state_checks(
if (BIND_PRESSED(trigger_input, RARCH_SAVE_STATE_KEY))
rarch_main_command(RARCH_CMD_SAVE_STATE);
else if (!g_extern.bsv.movie) /* Immutable */
{
if (BIND_PRESSED(trigger_input, RARCH_LOAD_STATE_KEY))
rarch_main_command(RARCH_CMD_LOAD_STATE);
}
else if (BIND_PRESSED(trigger_input, RARCH_LOAD_STATE_KEY))
rarch_main_command(RARCH_CMD_LOAD_STATE);
check_rewind_func(input);
@ -2255,27 +2252,17 @@ static bool do_state_checks(
check_shader_dir_func(trigger_input);
if (g_extern.cheat)
{
if (BIND_PRESSED(trigger_input, RARCH_CHEAT_INDEX_PLUS))
cheat_manager_index_next(g_extern.cheat);
else if (BIND_PRESSED(trigger_input, RARCH_CHEAT_INDEX_MINUS))
cheat_manager_index_prev(g_extern.cheat);
else if (BIND_PRESSED(trigger_input, RARCH_CHEAT_TOGGLE))
cheat_manager_toggle(g_extern.cheat);
}
if (BIND_PRESSED(trigger_input, RARCH_CHEAT_INDEX_PLUS))
cheat_manager_index_next(g_extern.cheat);
else if (BIND_PRESSED(trigger_input, RARCH_CHEAT_INDEX_MINUS))
cheat_manager_index_prev(g_extern.cheat);
else if (BIND_PRESSED(trigger_input, RARCH_CHEAT_TOGGLE))
cheat_manager_toggle(g_extern.cheat);
if (g_extern.system.disk_control.get_num_images)
{
const struct retro_disk_control_callback *control =
(const struct retro_disk_control_callback*)
&g_extern.system.disk_control;
if (BIND_PRESSED(trigger_input, RARCH_DISK_EJECT_TOGGLE))
check_disk_eject(control);
else if (BIND_PRESSED(trigger_input, RARCH_DISK_NEXT))
check_disk_next(control);
}
if (BIND_PRESSED(trigger_input, RARCH_DISK_EJECT_TOGGLE))
rarch_main_command(RARCH_CMD_DISK_EJECT_TOGGLE);
else if (BIND_PRESSED(trigger_input, RARCH_DISK_NEXT))
rarch_main_command(RARCH_CMD_DISK_NEXT);
if (BIND_PRESSED(trigger_input, RARCH_RESET))
rarch_main_command(RARCH_CMD_RESET);
@ -2768,8 +2755,8 @@ void rarch_main_command(unsigned cmd)
#endif
break;
case RARCH_CMD_LOAD_STATE:
/* Disallow savestate load when we absolutely
* cannot change game state. */
/* Immutable - disallow savestate load when
* we absolutely cannot change game state. */
if (g_extern.bsv.movie)
return;
@ -3170,6 +3157,28 @@ void rarch_main_command(unsigned cmd)
fclose(g_extern.log_file);
g_extern.log_file = NULL;
break;
case RARCH_CMD_DISK_EJECT_TOGGLE:
if (g_extern.system.disk_control.get_num_images)
{
const struct retro_disk_control_callback *control =
(const struct retro_disk_control_callback*)
&g_extern.system.disk_control;
if (control)
check_disk_eject(control);
}
break;
case RARCH_CMD_DISK_NEXT:
if (g_extern.system.disk_control.get_num_images)
{
const struct retro_disk_control_callback *control =
(const struct retro_disk_control_callback*)
&g_extern.system.disk_control;
if (!control)
check_disk_next(control);
}
break;
}
}