VERSIÓ 1.6

- [FIX] La música ja torna a sonar
This commit is contained in:
2026-03-04 09:25:52 +01:00
parent 6d09afdf09
commit e92498fd16
4 changed files with 32 additions and 18 deletions

View File

@@ -14,12 +14,18 @@ namespace audio
JA_Sound_t *chunk;
};
struct music_cache_t
{
std::string name;
JA_Music_t *chunk;
};
//char *music_buffer = nullptr;
//JA_Music_t *music = nullptr;
std::vector<sound_cache_t> sounds;
std::vector<sound_cache_t> songs;
std::vector<music_cache_t> songs;
std::string musica_actual = "";
int musica = -1;
//int musica = -1;
// Inicialitza el sistema de só
void init()
@@ -33,7 +39,7 @@ namespace audio
void quit()
{
//if (music) JA_DeleteMusic(music);
for (auto sound : songs) JA_DeleteSound(sound.chunk);
for (auto music : songs) JA_DeleteMusic(music.chunk);
songs.clear();
for (auto sound : sounds) JA_DeleteSound(sound.chunk); // Mix_FreeChunk(sound.chunk);
sounds.clear();
@@ -44,12 +50,12 @@ namespace audio
{
int size;
char *buffer = file::getFileBuffer(filename, size);
auto chunk = JA_LoadSound((uint8_t *)buffer, size);
auto chunk = JA_LoadMusic((uint8_t *)buffer, size);
free(buffer);
//auto chunk = Mix_LoadWAV_RW(SDL_RWFromMem(buffer, size), 1);
//if (!chunk) printf("ERROR: %s\n", SDL_GetError());
sound_cache_t sound = { filename, chunk };
music_cache_t sound = { filename, chunk };
songs.push_back(sound);
}
@@ -66,12 +72,15 @@ namespace audio
//free(buffer);
//JA_PlayMusic(music, loop);
//int song_index = 0;
for (auto song : songs)
{
if (song.name == filename) {
musica = JA_PlaySound(song.chunk, loop);
JA_PlayMusic(song.chunk, loop);
//musica = song_index;
musica_actual = filename;
return;
//song_index++;
}
}
}
@@ -79,24 +88,24 @@ namespace audio
// Pausa la música que està sonant ara
void pauseMusic()
{
//JA_PauseMusic(); //Mix_PauseMusic();
if (musica != -1) JA_PauseChannel(musica);
JA_PauseMusic(); //Mix_PauseMusic();
//if (musica != -1) JA_PauseChannel(musica);
}
// Continua la música pausada
void resumeMusic()
{
if (!config::isMusicEnabled()) return;
//JA_ResumeMusic(); //Mix_ResumeMusic();
if (musica != -1) JA_ResumeChannel(musica);
JA_ResumeMusic(); //Mix_ResumeMusic();
//if (musica != -1) JA_ResumeChannel(musica);
}
// Para la música que estava sonant
void stopMusic()
{
//JA_StopMusic(); //Mix_HaltMusic();
if (musica != -1) JA_StopChannel(musica);
musica = -1;
JA_StopMusic(); //Mix_HaltMusic();
//if (musica != -1) JA_StopChannel(musica);
//musica = -1;
musica_actual = "";
}