Add volume option.

There's a rudimentary volume option for XBOX1 there though ...
Dunno what to do about that.
This commit is contained in:
Themaister 2013-12-29 12:01:23 +01:00
parent 17559a3a18
commit 2be201ecf3
4 changed files with 31 additions and 5 deletions

View File

@ -1986,6 +1986,8 @@ void menu_populate_entries(void *data, unsigned menu_type)
#endif
#ifdef _XBOX1
file_list_push(rgui->selection_buf, "Volume Level", RGUI_SETTINGS_AUDIO_VOLUME_LEVEL, 0);
#else
file_list_push(rgui->selection_buf, "Volume Level", RGUI_SETTINGS_AUDIO_VOLUME, 0);
#endif
#ifdef HAVE_RSOUND
file_list_push(rgui->selection_buf, "RSound Server IP Address", RGUI_SETTINGS_RSOUND_SERVER_IP_ADDRESS, 0);

View File

@ -140,7 +140,8 @@ typedef enum
RGUI_SETTINGS_RESTART_GAME,
RGUI_SETTINGS_AUDIO_MUTE,
RGUI_SETTINGS_AUDIO_CONTROL_RATE_DELTA,
RGUI_SETTINGS_AUDIO_VOLUME_LEVEL,
RGUI_SETTINGS_AUDIO_VOLUME_LEVEL, // XBOX1 only it seems. FIXME: Refactor this?
RGUI_SETTINGS_AUDIO_VOLUME,
RGUI_SETTINGS_CUSTOM_BGM_CONTROL_ENABLE,
RGUI_SETTINGS_RSOUND_SERVER_IP_ADDRESS,
RGUI_SETTINGS_ZIP_EXTRACT,

View File

@ -536,6 +536,28 @@ int menu_set_settings(void *data, unsigned setting, unsigned action)
g_settings.audio.rate_control = true;
}
break;
case RGUI_SETTINGS_AUDIO_VOLUME:
{
float db_delta = 0.0f;
if (action == RGUI_ACTION_START)
{
g_extern.audio_data.volume_db = 0.0f;
g_extern.audio_data.volume_gain = 1.0f;
}
else if (action == RGUI_ACTION_LEFT)
db_delta -= 1.0f;
else if (action == RGUI_ACTION_RIGHT)
db_delta += 1.0f;
if (db_delta != 0.0f)
{
g_extern.audio_data.volume_db += db_delta;
g_extern.audio_data.volume_db = max(g_extern.audio_data.volume_db, -80.0f);
g_extern.audio_data.volume_db = min(g_extern.audio_data.volume_db, 12.0f);
g_extern.audio_data.volume_gain = db_to_gain(g_extern.audio_data.volume_db);
}
break;
}
case RGUI_SETTINGS_DEBUG_TEXT:
if (action == RGUI_ACTION_START)
g_settings.fps_show = false;
@ -1881,6 +1903,9 @@ void menu_set_settings_label(char *type_str, size_t type_str_size, unsigned *w,
strlcpy(type_str, (g_extern.console.sound.volume_level) ? "Loud" : "Normal", type_str_size);
break;
#endif
case RGUI_SETTINGS_AUDIO_VOLUME:
snprintf(type_str, type_str_size, "%.1f dB", g_extern.audio_data.volume_db);
break;
case RGUI_SETTINGS_RSOUND_SERVER_IP_ADDRESS:
strlcpy(type_str, g_settings.audio.device, type_str_size);
break;

View File

@ -2669,10 +2669,8 @@ static void check_volume(void)
db_change -= 0.5f;
g_extern.audio_data.volume_db += db_change;
if (g_extern.audio_data.volume_db > 12.0f)
g_extern.audio_data.volume_db = 12.0f;
else if (g_extern.audio_data.volume_db < -80.0f)
g_extern.audio_data.volume_db = -80.0f;
g_extern.audio_data.volume_db = max(g_extern.audio_data.volume_db, -80.0f);
g_extern.audio_data.volume_db = min(g_extern.audio_data.volume_db, 12.0f);
char msg[256];
snprintf(msg, sizeof(msg), "Volume: %.1f dB", g_extern.audio_data.volume_db);