mirror of
https://github.com/hrydgard/ppsspp.git
synced 2025-02-18 13:21:33 +00:00
Merge pull request #18772 from hrydgard/retroachievements-volume-slider
Add volume slider for RetroAchievements sound effects
This commit is contained in:
commit
299f9b9460
@ -694,6 +694,7 @@ static const ConfigSetting soundSettings[] = {
|
||||
ConfigSetting("GlobalVolume", &g_Config.iGlobalVolume, VOLUME_FULL, CfgFlag::PER_GAME),
|
||||
ConfigSetting("ReverbVolume", &g_Config.iReverbVolume, VOLUME_FULL, CfgFlag::PER_GAME),
|
||||
ConfigSetting("AltSpeedVolume", &g_Config.iAltSpeedVolume, -1, CfgFlag::PER_GAME),
|
||||
ConfigSetting("AchievementSoundVolume", &g_Config.iAchievementSoundVolume, 6, CfgFlag::PER_GAME),
|
||||
ConfigSetting("AudioDevice", &g_Config.sAudioDevice, "", CfgFlag::DEFAULT),
|
||||
ConfigSetting("AutoAudioDevice", &g_Config.bAutoAudioDevice, true, CfgFlag::DEFAULT),
|
||||
};
|
||||
|
@ -269,6 +269,7 @@ public:
|
||||
int iGlobalVolume;
|
||||
int iReverbVolume;
|
||||
int iAltSpeedVolume;
|
||||
int iAchievementSoundVolume;
|
||||
bool bExtraAudioBuffering; // For bluetooth
|
||||
std::string sAudioDevice;
|
||||
bool bAutoAudioDevice;
|
||||
|
@ -147,7 +147,7 @@ void WavData::Read(RIFFReader &file_) {
|
||||
numFrames = numBytes / raw_bytes_per_frame; // numFrames
|
||||
|
||||
// It seems the atrac3 codec likes to read a little bit outside.
|
||||
int padding = 16;
|
||||
const int padding = 32; // 32 is the value FFMPEG uses.
|
||||
raw_data = (uint8_t *)malloc(numBytes + padding);
|
||||
raw_data_size = numBytes;
|
||||
|
||||
|
@ -592,13 +592,14 @@ void EmuScreen::sendMessage(UIMessage message, const char *value) {
|
||||
}
|
||||
}
|
||||
} else if (message == UIMessage::REQUEST_PLAY_SOUND) {
|
||||
if (g_Config.bAchievementsSoundEffects) {
|
||||
if (g_Config.bAchievementsSoundEffects && g_Config.bEnableSound) {
|
||||
float achievementVolume = g_Config.iAchievementSoundVolume * 0.1f;
|
||||
// TODO: Handle this some nicer way.
|
||||
if (!strcmp(value, "achievement_unlocked")) {
|
||||
g_BackgroundAudio.SFX().Play(UI::UISound::ACHIEVEMENT_UNLOCKED, 0.6f);
|
||||
g_BackgroundAudio.SFX().Play(UI::UISound::ACHIEVEMENT_UNLOCKED, achievementVolume * 1.0f);
|
||||
}
|
||||
if (!strcmp(value, "leaderboard_submitted")) {
|
||||
g_BackgroundAudio.SFX().Play(UI::UISound::LEADERBOARD_SUBMITTED, 0.6f);
|
||||
g_BackgroundAudio.SFX().Play(UI::UISound::LEADERBOARD_SUBMITTED, achievementVolume * 1.0f);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -625,6 +625,10 @@ void GameSettingsScreen::CreateAudioSettings(UI::ViewGroup *audioSettings) {
|
||||
reverbVolume->SetEnabledPtr(&g_Config.bEnableSound);
|
||||
reverbVolume->SetZeroLabel(a->T("Disabled"));
|
||||
|
||||
PopupSliderChoice *achievementVolume = audioSettings->Add(new PopupSliderChoice(&g_Config.iAchievementSoundVolume, VOLUME_OFF, VOLUME_FULL, VOLUME_FULL, a->T("Achievement sound volume"), screenManager()));
|
||||
achievementVolume->SetEnabledPtr(&g_Config.bEnableSound);
|
||||
achievementVolume->SetZeroLabel(a->T("Mute"));
|
||||
|
||||
// Hide the backend selector in UWP builds (we only support XAudio2 there).
|
||||
#if PPSSPP_PLATFORM(WINDOWS) && !PPSSPP_PLATFORM(UWP)
|
||||
if (IsVistaOrHigher()) {
|
||||
|
@ -35,7 +35,8 @@ AudioFileChooser::AudioFileChooser(RequesterToken token, std::string *value, con
|
||||
layoutParams_->height = ITEM_HEIGHT;
|
||||
}
|
||||
Add(new Choice(ImageID("I_PLAY"), new LinearLayoutParams(ITEM_HEIGHT, ITEM_HEIGHT)))->OnClick.Add([=](UI::EventParams &) {
|
||||
g_BackgroundAudio.SFX().Play(sound_, 0.6f);
|
||||
float achievementVolume = g_Config.iAchievementSoundVolume * 0.1f;
|
||||
g_BackgroundAudio.SFX().Play(sound_, achievementVolume);
|
||||
return UI::EVENT_DONE;
|
||||
});
|
||||
Add(new FileChooserChoice(token, value, title, BrowseFileType::SOUND_EFFECT, new LinearLayoutParams(1.0f)))->OnChange.Add([=](UI::EventParams &e) {
|
||||
@ -354,11 +355,15 @@ void RetroAchievementsSettingsScreen::CreateAccountTab(UI::ViewGroup *viewGroup)
|
||||
|
||||
void RetroAchievementsSettingsScreen::CreateCustomizeTab(UI::ViewGroup *viewGroup) {
|
||||
auto ac = GetI18NCategory(I18NCat::ACHIEVEMENTS);
|
||||
auto a = GetI18NCategory(I18NCat::AUDIO);
|
||||
|
||||
using namespace UI;
|
||||
viewGroup->Add(new ItemHeader(ac->T("Sound Effects")));
|
||||
viewGroup->Add(new AudioFileChooser(GetRequesterToken(), &g_Config.sAchievementsUnlockAudioFile, ac->T("Achievement unlocked"), UISound::ACHIEVEMENT_UNLOCKED));
|
||||
viewGroup->Add(new AudioFileChooser(GetRequesterToken(), &g_Config.sAchievementsLeaderboardSubmitAudioFile, ac->T("Leaderboard score submission"), UISound::LEADERBOARD_SUBMITTED));
|
||||
PopupSliderChoice *volume = viewGroup->Add(new PopupSliderChoice(&g_Config.iAchievementSoundVolume, VOLUME_OFF, VOLUME_FULL, VOLUME_FULL, a->T("Achievement sound volume"), screenManager()));
|
||||
volume->SetEnabledPtr(&g_Config.bEnableSound);
|
||||
volume->SetZeroLabel(a->T("Mute"));
|
||||
|
||||
static const char *positions[] = { "None", "Bottom Left", "Bottom Center", "Bottom Right", "Top Left", "Top Center", "Top Right", "Center Left", "Center Right" };
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user