1
0
mirror of https://github.com/TerryCavanagh/VVVVVV.git synced 2024-06-16 09:38:29 +02:00

Add music and sound volume config options

This adds <musicvolume> and <soundvolume> tags to unlock.vvv and
settings.vvv, so users' volume preferences will be persistent across
game sessions. This does not add the user interface to change them from
in-game; the next commit will do that.
This commit is contained in:
Misa 2021-04-11 17:41:46 -07:00 committed by Ethan Lee
parent 2a3f17f1f7
commit 27874e1dc6
4 changed files with 26 additions and 2 deletions

View File

@ -4222,6 +4222,16 @@ void Game::deserializesettings(tinyxml2::XMLElement* dataNode, ScreenSettings* s
graphics.showmousecursor = help.Int(pText);
}
if (SDL_strcmp(pKey, "musicvolume") == 0)
{
music.user_music_volume = help.Int(pText);
}
if (SDL_strcmp(pKey, "soundvolume") == 0)
{
music.user_sound_volume = help.Int(pText);
}
if (SDL_strcmp(pKey, "flipButton") == 0)
{
SDL_GameControllerButton newButton;
@ -4453,6 +4463,10 @@ void Game::serializesettings(tinyxml2::XMLElement* dataNode, const ScreenSetting
xml::update_tag(dataNode, "vsync", (int) screen_settings->useVsync);
xml::update_tag(dataNode, "musicvolume", music.user_music_volume);
xml::update_tag(dataNode, "soundvolume", music.user_sound_volume);
// Delete all controller buttons we had previously.
// dataNode->FirstChildElement() shouldn't be NULL at this point...
// we've already added a bunch of elements

View File

@ -17,6 +17,9 @@ musicclass::musicclass(void)
musicVolume = 0;
FadeVolAmountPerFrame = 0;
user_music_volume = USER_VOLUME_MAX;
user_sound_volume = USER_VOLUME_MAX;
currentsong = 0;
nicechange = -1;
nicefade = false;

View File

@ -8,6 +8,9 @@
#define musicroom(rx, ry) ((rx) + ((ry) * 20))
/* The amount of "space" for the scale of the user-set volume. */
#define USER_VOLUME_MAX 256
class musicclass
{
public:
@ -52,6 +55,10 @@ public:
int FadeVolAmountPerFrame;
int musicVolume;
/* 0..USER_VOLUME_MAX */
int user_music_volume;
int user_sound_volume;
bool quick_fade;
// MMMMMM mod settings

View File

@ -771,7 +771,7 @@ static enum LoopCode loop_end(void)
}
else
{
Mix_Volume(-1,MIX_MAX_VOLUME);
Mix_Volume(-1,MIX_MAX_VOLUME * music.user_sound_volume / USER_VOLUME_MAX);
if (game.musicmuted)
{
@ -779,7 +779,7 @@ static enum LoopCode loop_end(void)
}
else
{
Mix_VolumeMusic(music.musicVolume);
Mix_VolumeMusic(music.musicVolume * music.user_music_volume / USER_VOLUME_MAX);
}
}