Subsistema d'àudio: port de ../aee/core/audio refactoritzat amb namespace Ja, desacoblat d'Options via Audio::Config i extensió de Resource::Cache per preloading de música i sons; pyramid_1.ogg sona a GameScene (v0.15.0)

This commit is contained in:
JailDesigner committed 2026-04-19 23:19:20 +02:00
1 parent 6f3fafbfff
commit e2b8d0e459
16 files changed
+6796 -5

No files matched your search

+11
View File
@@ -429,6 +429,17 @@ namespace Options {
return config;
}
auto buildAudioConfig() -> ::Audio::Config {
return {
.enabled = audio.enabled,
.volume = audio.volume,
.music_enabled = audio.music.enabled,
.music_volume = audio.music.volume,
.sound_enabled = audio.sound.enabled,
.sound_volume = audio.sound.volume,
};
}
void setPostFXFile(const std::string& path) {
postfx_file_path = path;
}
+4
View File
@@ -3,6 +3,7 @@
#include <string>
#include <vector>
#include "core/audio/audio.hpp"
#include "core/rendering/screen.hpp"
#include "core/rendering/shader_backend.hpp"
#include "utils/defaults.hpp"
@@ -120,5 +121,8 @@ namespace Options {
[[nodiscard]] auto buildPostFXParams() -> Rendering::PostFXParams;
[[nodiscard]] auto buildCrtPiParams() -> Rendering::CrtPiParams;
[[nodiscard]] auto buildActiveShader() -> Rendering::ShaderType;
// `::Audio` és la classe global d'àudio (no `Options::Audio`, que és la
// struct serialitzable). Retornem la seua Config per passar-la a init().
[[nodiscard]] auto buildAudioConfig() -> ::Audio::Config;
} // namespace Options
+8
View File
@@ -7,6 +7,7 @@
#include <iterator>
#include <vector>
#include "core/audio/audio.hpp"
#include "core/input/global_inputs.hpp"
#include "core/rendering/notifier.hpp"
#include "core/rendering/render_info.hpp"
@@ -42,6 +43,13 @@ GameScene::GameScene()
constexpr auto SPAWN_X = CORRIDOR_CENTER_X - (static_cast<float>(Player::SPRITE_WIDTH) / 2.0F);
constexpr auto SPAWN_Y = CORRIDOR_CENTER_Y - static_cast<float>(Player::COLLISION_Y_OFFSET) - (static_cast<float>(Player::COLLISION_SIZE) / 2.0F);
players_.emplace_back(std::make_unique<Player>(SPAWN_X, SPAWN_Y, CONTROLS_P1));
// Música de fons de la piràmide 1 en bucle infinit. El track ja està al
// Resource::Cache (preload al Director), així que playMusic només mou el
// punter cap a jail_audio i obri l'stream.
if (Audio::get() != nullptr) {
Audio::get()->playMusic("pyramid_1.ogg", -1);
}
}
GameScene::~GameScene() = default;