Updated and fixed audio
This commit is contained in:
@ -268,7 +268,7 @@ void ApplicationManager::shutdown() {
|
||||
m_running = false;
|
||||
|
||||
// Stop audio systems before tearing down SDL to avoid aborts/asserts
|
||||
if (auto sys = ::AudioManager::get()) sys->shutdown();
|
||||
if (auto sys = AudioManager::get()) sys->shutdown();
|
||||
SoundEffectManager::instance().shutdown();
|
||||
|
||||
// Cleanup in reverse order of initialization
|
||||
@ -382,11 +382,11 @@ bool ApplicationManager::initializeManagers() {
|
||||
|
||||
// M: Toggle/mute music; start playback if unmuting and not started yet
|
||||
if (!consume && sc == SDL_SCANCODE_M) {
|
||||
if (auto sys = ::AudioManager::get()) sys->toggleMute();
|
||||
if (auto sys = AudioManager::get()) sys->toggleMute();
|
||||
m_musicEnabled = !m_musicEnabled;
|
||||
if (m_musicEnabled && !m_musicStarted && ::AudioManager::get() && ::AudioManager::get()->getLoadedTrackCount() > 0) {
|
||||
::AudioManager::get()->shuffle();
|
||||
::AudioManager::get()->start();
|
||||
if (m_musicEnabled && !m_musicStarted && AudioManager::get() && AudioManager::get()->getLoadedTrackCount() > 0) {
|
||||
AudioManager::get()->shuffle();
|
||||
AudioManager::get()->start();
|
||||
m_musicStarted = true;
|
||||
}
|
||||
consume = true;
|
||||
@ -394,7 +394,7 @@ bool ApplicationManager::initializeManagers() {
|
||||
|
||||
// N: Skip to next song in the playlist (or restart menu track)
|
||||
if (!consume && sc == SDL_SCANCODE_N) {
|
||||
if (auto sys = ::AudioManager::get()) { sys->skipToNextTrack(); if (!m_musicStarted && sys->getLoadedTrackCount() > 0) { m_musicStarted = true; m_musicEnabled = true; } }
|
||||
if (auto sys = AudioManager::get()) { sys->skipToNextTrack(); if (!m_musicStarted && sys->getLoadedTrackCount() > 0) { m_musicStarted = true; m_musicEnabled = true; } }
|
||||
consume = true;
|
||||
}
|
||||
|
||||
@ -615,7 +615,7 @@ bool ApplicationManager::initializeGame() {
|
||||
// as lambdas that reference members here.
|
||||
|
||||
// Start background music loading similar to main.cpp: Audio init + file discovery
|
||||
if (auto sys = ::AudioManager::get()) sys->init();
|
||||
if (auto sys = AudioManager::get()) sys->init();
|
||||
// Discover available tracks (up to 100) and queue for background loading
|
||||
m_totalTracks = 0;
|
||||
std::vector<std::string> trackPaths;
|
||||
@ -631,14 +631,14 @@ bool ApplicationManager::initializeGame() {
|
||||
}
|
||||
m_totalTracks = static_cast<int>(trackPaths.size());
|
||||
for (const auto& path : trackPaths) {
|
||||
if (auto sys = ::AudioManager::get()) sys->addTrackAsync(path);
|
||||
if (auto sys = AudioManager::get()) sys->addTrackAsync(path);
|
||||
}
|
||||
if (m_totalTracks > 0) {
|
||||
if (auto sys = ::AudioManager::get()) sys->startBackgroundLoading();
|
||||
if (auto sys = AudioManager::get()) sys->startBackgroundLoading();
|
||||
// Kick off playback now; Audio will pick a track once decoded.
|
||||
// Do not mark as started yet; we'll flip the flag once a track is actually loaded.
|
||||
if (m_musicEnabled) {
|
||||
if (auto sys = ::AudioManager::get()) { sys->shuffle(); sys->start(); }
|
||||
if (auto sys = AudioManager::get()) { sys->shuffle(); sys->start(); }
|
||||
m_musicStarted = true;
|
||||
}
|
||||
m_currentTrackLoading = 1; // mark started
|
||||
@ -938,13 +938,13 @@ void ApplicationManager::setupStateHandlers() {
|
||||
// Start music as soon as at least one track has decoded (don’t wait for all)
|
||||
// Start music as soon as at least one track has decoded (don't wait for all)
|
||||
if (m_musicEnabled && !m_musicStarted) {
|
||||
if (auto sys = ::AudioManager::get()) {
|
||||
if (auto sys = AudioManager::get()) {
|
||||
if (sys->getLoadedTrackCount() > 0) { sys->shuffle(); sys->start(); m_musicStarted = true; }
|
||||
}
|
||||
}
|
||||
// Track completion status for UI
|
||||
if (!m_musicLoaded) {
|
||||
if (auto sys = ::AudioManager::get()) {
|
||||
if (auto sys = AudioManager::get()) {
|
||||
if (sys->isLoadingComplete()) m_musicLoaded = true;
|
||||
}
|
||||
}
|
||||
|
||||
@ -41,7 +41,7 @@ bool AssetManager::initialize(SDL_Renderer* renderer) {
|
||||
m_renderer = renderer;
|
||||
|
||||
// Get references to singleton systems
|
||||
m_audioSystem = ::AudioManager::get();
|
||||
m_audioSystem = AudioManager::get();
|
||||
m_soundSystem = &SoundEffectManager::instance();
|
||||
|
||||
m_initialized = true;
|
||||
|
||||
Reference in New Issue
Block a user