Millores en la gestió del "mute" en el joc

This commit is contained in:
2024-11-01 07:55:37 +01:00
parent c6e2368e82
commit da27fde366
4 changed files with 51 additions and 12 deletions

View File

@@ -241,10 +241,16 @@ void Director::bindInputs()
void Director::initJailAudio() void Director::initJailAudio()
{ {
JA_Init(48000, AUDIO_S16, 2); JA_Init(48000, AUDIO_S16, 2);
JA_EnableMusic(options.audio.music.enabled); if (options.audio.enabled)
JA_EnableSound(options.audio.sound.enabled); {
JA_SetMusicVolume(options.audio.music.volume); JA_SetMusicVolume(to_JA_volume(options.audio.music.volume));
JA_SetSoundVolume(options.audio.sound.volume); JA_SetSoundVolume(to_JA_volume(options.audio.sound.volume));
}
else
{
JA_SetMusicVolume(0);
JA_SetSoundVolume(0);
}
} }
// Arranca SDL y crea la ventana // Arranca SDL y crea la ventana

View File

@@ -56,10 +56,18 @@ namespace globalInputs
// Activa o desactiva el audio // Activa o desactiva el audio
void switchAudio() void switchAudio()
{ {
options.audio.sound.enabled = options.audio.music.enabled = !options.audio.music.enabled; options.audio.enabled = !options.audio.enabled;
JA_EnableMusic(options.audio.music.enabled); if (options.audio.enabled)
JA_EnableSound(options.audio.sound.enabled); {
Notifier::get()->showText("Audio " + boolToOnOff(options.audio.music.enabled)); JA_SetMusicVolume(to_JA_volume(options.audio.music.volume));
JA_SetSoundVolume(to_JA_volume(options.audio.sound.volume));
}
else
{
JA_SetMusicVolume(0);
JA_SetSoundVolume(0);
}
Notifier::get()->showText("Audio " + boolToOnOff(options.audio.enabled));
} }
// Comprueba los inputs que se pueden introducir en cualquier sección del juego // Comprueba los inputs que se pueden introducir en cualquier sección del juego

View File

@@ -32,10 +32,12 @@ void initOptions()
options.video.shaders = true; options.video.shaders = true;
// Opciones de audio // Opciones de audio
options.audio.enabled = true;
options.audio.volume = 100;
options.audio.music.enabled = true; options.audio.music.enabled = true;
options.audio.music.volume = 128; options.audio.music.volume = 100;
options.audio.sound.enabled = true; options.audio.sound.enabled = true;
options.audio.sound.volume = 64; options.audio.sound.volume = 50;
// Opciones de juego // Opciones de juego
options.game.difficulty = GameDifficulty::NORMAL; options.game.difficulty = GameDifficulty::NORMAL;
@@ -178,9 +180,11 @@ bool saveOptionsFile(std::string file_path)
// Opciones de audio // Opciones de audio
file << "\n\n## AUDIO\n"; file << "\n\n## AUDIO\n";
file << "## volume [0 .. 128]\n"; file << "## volume [0 .. 100]\n";
file << "\n"; file << "\n";
file << "audio.enabled=" + boolToString(options.audio.enabled) + "\n";
file << "audio.volume=" + std::to_string(options.audio.volume) + "\n";
file << "audio.music.enabled=" + boolToString(options.audio.music.enabled) + "\n"; file << "audio.music.enabled=" + boolToString(options.audio.music.enabled) + "\n";
file << "audio.music.volume=" + std::to_string(options.audio.music.volume) + "\n"; file << "audio.music.volume=" + std::to_string(options.audio.music.volume) + "\n";
file << "audio.sound.enabled=" + boolToString(options.audio.sound.enabled) + "\n"; file << "audio.sound.enabled=" + boolToString(options.audio.sound.enabled) + "\n";
@@ -269,6 +273,15 @@ bool setOptions(const std::string &var, const std::string &value)
} }
// Opciones de audio // Opciones de audio
else if (var == "audio.enabled")
{
options.audio.enabled = stringToBool(value);
}
else if (var == "audio.volume")
{
options.audio.volume = std::stoi(value);
}
else if (var == "audio.music.enabled") else if (var == "audio.music.enabled")
{ {
options.audio.music.enabled = stringToBool(value); options.audio.music.enabled = stringToBool(value);
@@ -387,4 +400,11 @@ bool setOptions(const std::string &var, const std::string &value)
} }
return success; return success;
}
// Convierte valores de 0 a 100 en valores de 0 a 128
int to_JA_volume(int vol)
{
vol = vol * 1.28f;
return std::clamp(vol, 0, 128);
} }

View File

@@ -57,6 +57,8 @@ struct OptionsAudio
{ {
OptionsMusic music; // Opciones para la música OptionsMusic music; // Opciones para la música
OptionsSound sound; // Opciones para los efectos de sonido OptionsSound sound; // Opciones para los efectos de sonido
bool enabled; // Indica si el audio está activo o no
int volume; // Volumen al que suenan el audio
}; };
// Estructura para las opciones del juego // Estructura para las opciones del juego
@@ -96,4 +98,7 @@ extern Options options;
bool loadOptionsFile(std::string file_path); bool loadOptionsFile(std::string file_path);
// Guarda el fichero de configuración // Guarda el fichero de configuración
bool saveOptionsFile(std::string file_path); bool saveOptionsFile(std::string file_path);
// Convierte valores de 0 a 100 en valores de 0 a 128
int to_JA_volume(int vol);