afegit resource::cache
normalitzat Audio
This commit is contained in:
@@ -1,10 +1,9 @@
|
||||
#include "game/modulegame.hpp"
|
||||
|
||||
#include "core/jail/jail_audio.hpp"
|
||||
#include "core/audio/audio.hpp"
|
||||
#include "core/jail/jdraw8.hpp"
|
||||
#include "core/jail/jgame.hpp"
|
||||
#include "core/jail/jinput.hpp"
|
||||
#include "core/resources/resource_helper.hpp"
|
||||
|
||||
ModuleGame::ModuleGame() {
|
||||
this->gfx = JD8_LoadSurface(info::ctx.pepe_activat ? "gfx/frames2.gif" : "gfx/frames.gif");
|
||||
@@ -42,18 +41,14 @@ void ModuleGame::onEnter() {
|
||||
// fade interpolarien cap a una paleta amb pantalla buida.
|
||||
this->Draw();
|
||||
|
||||
const char* music = info::ctx.num_piramide == 3 ? "music/piramide_3.ogg"
|
||||
: info::ctx.num_piramide == 2 ? "music/piramide_2.ogg"
|
||||
: info::ctx.num_piramide == 6 ? "music/secreta.ogg"
|
||||
: "music/piramide_1_4_5.ogg";
|
||||
const char* current_music = JA_GetMusicFilename();
|
||||
if ((JA_GetMusicState() != JA_MUSIC_PLAYING) || !current_music ||
|
||||
strcmp(music, current_music) != 0) {
|
||||
auto buffer = ResourceHelper::loadFile(music);
|
||||
JA_PlayMusic(JA_LoadMusic(buffer.data(),
|
||||
static_cast<Uint32>(buffer.size()),
|
||||
music));
|
||||
}
|
||||
// Audio::playMusic ja és idempotent: si la pista actual coincideix amb la
|
||||
// demanada, no fa res. Per això podem cridar-lo cada onEnter sense
|
||||
// desencadenar restarts indesitjats.
|
||||
const char* music_name = info::ctx.num_piramide == 3 ? "piramide_3.ogg"
|
||||
: info::ctx.num_piramide == 2 ? "piramide_2.ogg"
|
||||
: info::ctx.num_piramide == 6 ? "secreta.ogg"
|
||||
: "piramide_1_4_5.ogg";
|
||||
Audio::get()->playMusic(music_name);
|
||||
|
||||
// Arranca el fade-in tick-based. El `PaletteFade` avança un pas (de
|
||||
// 32) per cada tick; durant aquesta fase el gameplay no corre,
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
|
||||
#include "core/jail/jail_audio.hpp"
|
||||
#include "core/audio/audio.hpp"
|
||||
#include "external/fkyaml_node.hpp"
|
||||
#include "game/defaults.hpp"
|
||||
#include "game/defines.hpp"
|
||||
@@ -76,12 +76,16 @@ namespace Options {
|
||||
}
|
||||
}
|
||||
|
||||
// Delega tots els canvis de l'estat d'àudio al wrapper Audio. Es manté
|
||||
// com a punt d'entrada únic per als callsites legacy del menú; el cos
|
||||
// ja no toca jail_audio directament.
|
||||
void applyAudio() {
|
||||
const float master = audio.enabled ? audio.volume : 0.0F;
|
||||
JA_EnableMusic(audio.music_enabled);
|
||||
JA_EnableSound(audio.sound_enabled);
|
||||
JA_SetMusicVolume(master * audio.music_volume);
|
||||
JA_SetSoundVolume(master * audio.sound_volume);
|
||||
if (::Audio::get() == nullptr) return;
|
||||
::Audio::get()->enable(audio.enabled);
|
||||
::Audio::get()->enableMusic(audio.music.enabled);
|
||||
::Audio::get()->enableSound(audio.sound.enabled);
|
||||
::Audio::get()->setMusicVolume(audio.music.volume);
|
||||
::Audio::get()->setSoundVolume(audio.sound.volume);
|
||||
}
|
||||
|
||||
// --- Funcions helper de càrrega ---
|
||||
@@ -99,17 +103,17 @@ namespace Options {
|
||||
if (node.contains("music")) {
|
||||
const auto& music = node["music"];
|
||||
if (music.contains("enabled"))
|
||||
audio.music_enabled = music["enabled"].get_value<bool>();
|
||||
audio.music.enabled = music["enabled"].get_value<bool>();
|
||||
if (music.contains("volume"))
|
||||
audio.music_volume = music["volume"].get_value<float>();
|
||||
audio.music.volume = music["volume"].get_value<float>();
|
||||
}
|
||||
|
||||
if (node.contains("sound")) {
|
||||
const auto& sound = node["sound"];
|
||||
if (sound.contains("enabled"))
|
||||
audio.sound_enabled = sound["enabled"].get_value<bool>();
|
||||
audio.sound.enabled = sound["enabled"].get_value<bool>();
|
||||
if (sound.contains("volume"))
|
||||
audio.sound_volume = sound["volume"].get_value<float>();
|
||||
audio.sound.volume = sound["volume"].get_value<float>();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -352,11 +356,11 @@ namespace Options {
|
||||
file << " enabled: " << (audio.enabled ? "true" : "false") << "\n";
|
||||
file << " volume: " << audio.volume << "\n";
|
||||
file << " music:\n";
|
||||
file << " enabled: " << (audio.music_enabled ? "true" : "false") << "\n";
|
||||
file << " volume: " << audio.music_volume << "\n";
|
||||
file << " enabled: " << (audio.music.enabled ? "true" : "false") << "\n";
|
||||
file << " volume: " << audio.music.volume << "\n";
|
||||
file << " sound:\n";
|
||||
file << " enabled: " << (audio.sound_enabled ? "true" : "false") << "\n";
|
||||
file << " volume: " << audio.sound_volume << "\n";
|
||||
file << " enabled: " << (audio.sound.enabled ? "true" : "false") << "\n";
|
||||
file << " volume: " << audio.sound.volume << "\n";
|
||||
file << "\n";
|
||||
|
||||
// GAME
|
||||
|
||||
@@ -59,13 +59,19 @@ namespace Options {
|
||||
Uint32 shadow_color{0xFF005A6B}; // Ombra daurada fosca (ABGR)
|
||||
};
|
||||
|
||||
// Opcions d'àudio
|
||||
// Opcions d'àudio (estructura compartida amb la resta de projectes)
|
||||
struct Music {
|
||||
bool enabled{Defaults::Audio::MUSIC_ENABLED};
|
||||
float volume{Defaults::Audio::MUSIC_VOLUME};
|
||||
};
|
||||
struct Sound {
|
||||
bool enabled{Defaults::Audio::SOUND_ENABLED};
|
||||
float volume{Defaults::Audio::SOUND_VOLUME};
|
||||
};
|
||||
struct Audio {
|
||||
Music music{};
|
||||
Sound sound{};
|
||||
bool enabled{Defaults::Audio::ENABLED}; // master enable
|
||||
bool music_enabled{Defaults::Audio::MUSIC_ENABLED};
|
||||
float music_volume{Defaults::Audio::MUSIC_VOLUME};
|
||||
bool sound_enabled{Defaults::Audio::SOUND_ENABLED};
|
||||
float sound_volume{Defaults::Audio::SOUND_VOLUME};
|
||||
float volume{Defaults::Audio::VOLUME};
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user