add scrolling sounds for rgui, xmb, and glui and fix the ozone implementation + hebrew translation for menu sounds submenu

also adds audio_driver_mixer_play_scroll_sound to menu_cbs_left and menu_cbs_right which are (seemingly) responsible for the large scroll on some menus (and also bumper scrolling on glui's playlist menu?).
This commit is contained in:
Skirlez 2022-12-26 23:31:50 +02:00 committed by LibretroAdmin
parent f84093496f
commit aba01c87e3
7 changed files with 111 additions and 10 deletions

View File

@ -471,6 +471,30 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_AUDIO_ENABLE_MENU,
"מערבל שמע (מיקסר)"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_AUDIO_ENABLE_MENU,
".נגן מספר זרמי צליל גם בתפריט"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_MENU_SOUND_OK,
"הפעל צליל 'אוקי'"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_MENU_SOUND_CANCEL,
"הפעל צליל 'בטל'"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_MENU_SOUND_NOTICE,
"הפעל צליל 'שים לב'"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_MENU_SOUND_BGM,
"הפעל צליל 'מוזיקת רקע'"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_MENU_SOUND_SCROLL,
"הפעל צלילי 'גלילה'"
)
/* Settings > Input */

View File

@ -248,7 +248,12 @@ static int action_left_scroll(unsigned type, const char *label,
bool pending_push = false;
menu_driver_ctl(MENU_NAVIGATION_CTL_CLEAR, &pending_push);
}
if (selection != menu_navigation_get_selection())
{
#ifdef HAVE_AUDIOMIXER
audio_driver_mixer_play_scroll_sound(true);
#endif
}
return 0;
}

View File

@ -242,7 +242,7 @@ static int action_right_scroll(unsigned type, const char *label,
unsigned scroll_speed = (unsigned)((MAX(scroll_accel, 2) - 2) / 4 + 1);
unsigned fast_scroll_speed = 10 * scroll_speed;
if (selection + fast_scroll_speed < (menu_entries_get_size()))
if (selection + fast_scroll_speed < (menu_entries_get_size()))
{
size_t idx = selection + fast_scroll_speed;
@ -251,8 +251,16 @@ static int action_right_scroll(unsigned type, const char *label,
}
else
{
if ((menu_entries_get_size() > 0))
if ((menu_entries_get_size() > 0)) {
menu_driver_ctl(MENU_NAVIGATION_CTL_SET_LAST, NULL);
}
}
if (selection != menu_navigation_get_selection())
{
#ifdef HAVE_AUDIOMIXER
audio_driver_mixer_play_scroll_sound(false);
#endif
}
}

View File

@ -49,6 +49,7 @@
#include "../../core_info.h"
#include "../../configuration.h"
#include "../../audio/audio_driver.h"
#include "../../tasks/tasks_internal.h"
#include "../../runtime_file.h"
#include "../../file_path_special.h"
@ -9134,6 +9135,10 @@ static enum menu_action materialui_parse_menu_entry_action(
* > If current selection is off screen,
* auto select 'middle' item */
materialui_auto_select_onscreen_entry(mui, MUI_ONSCREEN_ENTRY_CENTRE);
#ifdef HAVE_AUDIOMIXER
if (menu_entries_get_size() != 1)
audio_driver_mixer_play_scroll_sound(action == MENU_ACTION_UP);
#endif
break;
case MENU_ACTION_LEFT:
case MENU_ACTION_RIGHT:
@ -9145,14 +9150,18 @@ static enum menu_action materialui_parse_menu_entry_action(
{
retro_time_t current_time = menu_driver_get_current_time();
size_t scroll_accel = 0;
/* Determine whether input repeat is
/* Determine whether in put repeat is
* currently active
* > This is always true when scroll
* acceleration is greater than zero */
menu_driver_ctl(MENU_NAVIGATION_CTL_GET_SCROLL_ACCEL,
&scroll_accel);
#ifdef HAVE_AUDIOMIXER
if ((current_time - mui->last_tab_switch_time) >= MUI_TAB_SWITCH_REPEAT_DELAY ||
scroll_accel <= 0)
audio_driver_mixer_play_scroll_sound(action == MENU_ACTION_RIGHT);
#endif
if (scroll_accel > 0)
{
/* Ignore input action if tab switch period
@ -9205,8 +9214,17 @@ static enum menu_action materialui_parse_menu_entry_action(
}
/* > ...otherwise, if current selection is off
* screen, auto select *last* item */
else
else
{
materialui_auto_select_onscreen_entry(mui, MUI_ONSCREEN_ENTRY_LAST);
#ifdef HAVE_AUDIOMIXER
/* > The playlist if above leads to code
* that already plays the scrolling sound correctly,
* So this is for every case that isn't the playlist tab. */
if (menu_navigation_get_selection() != 0)
audio_driver_mixer_play_scroll_sound(true);
#endif
}
break;
case MENU_ACTION_SCROLL_DOWN:
/* Ascend alphabet (A towards Z)
@ -9220,8 +9238,13 @@ static enum menu_action materialui_parse_menu_entry_action(
}
/* > ...otherwise, if current selection is off
* screen, auto select *first* item */
else
else {
materialui_auto_select_onscreen_entry(mui, MUI_ONSCREEN_ENTRY_FIRST);
#ifdef HAVE_AUDIOMIXER
if (menu_navigation_get_selection() != menu_entries_get_size() - 1)
audio_driver_mixer_play_scroll_sound(false);
#endif
}
break;
case MENU_ACTION_SCAN:
/* - If this is a playlist, 'scan' command is used

View File

@ -8099,7 +8099,10 @@ static enum menu_action ozone_parse_menu_entry_action(
new_action = MENU_ACTION_ACCESSIBILITY_SPEAK_TITLE;
break;
}
#ifdef HAVE_AUDIOMIXER
if (selection != 0)
audio_driver_mixer_play_scroll_sound(true);
#endif
if ( (ozone->flags2 & OZONE_FLAG2_SHOW_FULLSCREEN_THUMBNAILS)
&& (ozone->is_quick_menu))
return MENU_ACTION_NOOP;
@ -8120,7 +8123,10 @@ static enum menu_action ozone_parse_menu_entry_action(
new_action = MENU_ACTION_ACCESSIBILITY_SPEAK_TITLE;
break;
}
#ifdef HAVE_AUDIOMIXER
if (selection < selection_total - 1)
audio_driver_mixer_play_scroll_sound(false);
#endif
if ( (ozone->flags2 & OZONE_FLAG2_SHOW_FULLSCREEN_THUMBNAILS)
&& (ozone->is_quick_menu))
return MENU_ACTION_NOOP;
@ -8187,11 +8193,11 @@ static int ozone_menu_entry_action(
/* Check whether current selection has changed
* (due to automatic on screen entry selection...) */
size_t new_selection = menu_navigation_get_selection();
if (new_selection != selection)
{
/* Selection has changed - must update
* entry pointer */
MENU_ENTRY_INITIALIZE(new_entry);
menu_entry_get(&new_entry, 0, new_selection, NULL, true);
entry_ptr = &new_entry;

View File

@ -51,6 +51,7 @@
#include "../../input/input_osk.h"
#include "../../configuration.h"
#include "../../audio/audio_driver.h"
#include "../../file_path_special.h"
#include "../../gfx/drivers_font_renderer/bitmap.h"
@ -7989,6 +7990,20 @@ static enum menu_action rgui_parse_menu_entry_action(
if ( (rgui->flags & RGUI_FLAG_SHOW_FULLSCREEN_THUMBNAIL)
&& (rgui->is_quick_menu))
new_action = MENU_ACTION_NOOP;
#ifdef HAVE_AUDIOMIXER
if (action == MENU_ACTION_UP || action == MENU_ACTION_DOWN)
{
if (menu_entries_get_size() != 1)
audio_driver_mixer_play_scroll_sound(action == MENU_ACTION_UP);
}
else
{
size_t selection = menu_navigation_get_selection();
if ((action == MENU_ACTION_SCROLL_UP && selection != 0) ||
(action == MENU_ACTION_SCROLL_DOWN && selection != menu_entries_get_size() - 1))
audio_driver_mixer_play_scroll_sound(action == MENU_ACTION_SCROLL_UP);
}
#endif
break;
case MENU_ACTION_LEFT:
case MENU_ACTION_RIGHT:

View File

@ -55,6 +55,7 @@
#include "../../file_path_special.h"
#include "../../configuration.h"
#include "../../audio/audio_driver.h"
#include "../../tasks/tasks_internal.h"
@ -4489,6 +4490,11 @@ static enum menu_action xmb_parse_menu_entry_action(
menu_driver_ctl(MENU_NAVIGATION_CTL_GET_SCROLL_ACCEL,
&scroll_accel);
#ifdef HAVE_AUDIOMIXER
if ((current_time - xmb->last_tab_switch_time) >= XMB_TAB_SWITCH_REPEAT_DELAY ||
scroll_accel <= 0)
audio_driver_mixer_play_scroll_sound(action == MENU_ACTION_RIGHT);
#endif
if (scroll_accel > 0)
{
/* Ignore input action if tab switch period
@ -4585,6 +4591,20 @@ static enum menu_action xmb_parse_menu_entry_action(
case MENU_ACTION_DOWN:
case MENU_ACTION_SCROLL_UP:
case MENU_ACTION_SCROLL_DOWN:
#ifdef HAVE_AUDIOMIXER
if (action == MENU_ACTION_UP || action == MENU_ACTION_DOWN)
{
if (menu_entries_get_size() != 1)
audio_driver_mixer_play_scroll_sound(action == MENU_ACTION_UP);
}
else
{
size_t selection = menu_navigation_get_selection();
if ((action == MENU_ACTION_SCROLL_UP && selection != 0) ||
(action == MENU_ACTION_SCROLL_DOWN && selection != menu_entries_get_size() - 1))
audio_driver_mixer_play_scroll_sound(action == MENU_ACTION_SCROLL_UP);
}
#endif
if (xmb->show_fullscreen_thumbnails && xmb->is_quick_menu)
return MENU_ACTION_NOOP;
break;