- Ara nomes es pot carregar una musica a la vegada. Simplifica la gestió de memòria.

This commit is contained in:
2023-10-13 16:01:49 +02:00
parent 907fccf69c
commit 6e3a0e513e
3 changed files with 19 additions and 33 deletions

View File

@@ -13,6 +13,9 @@ namespace audio
{
}; // Dummy structs
static char *buffer = nullptr;
static Mix_Music *music = nullptr;
// Inicialitza el sistema de só
void init()
{
@@ -32,25 +35,25 @@ namespace audio
}
// Carrega un arxiu de música en format OGG
music *loadMusic(const std::string filename)
const bool loadMusic(const std::string filename)
{
if (music != nullptr) {
Mix_FreeMusic(music);
free(buffer);
}
int filesize=0;
char *buffer = file::getFileBuffer(filename, filesize);
const Mix_Music* m = Mix_LoadMUS_RW(SDL_RWFromMem(buffer, filesize), 1);
buffer = file::getFileBuffer(filename, filesize);
music = Mix_LoadMUS_RW(SDL_RWFromMem(buffer, filesize), 1);
if (m==nullptr) return nullptr;
if (music==nullptr) return false;
music *mus = (music *)malloc(sizeof(music));
mus->buffer = buffer;
mus->music = (void*)m;
return mus;
return true;
}
// Comença a reproduïr la música en questió
void playMusic(const music *mus, const int loop)
void playMusic(const int loop)
{
if (Mix_PlayMusic((Mix_Music *)mus->music, loop) == -1) {
if (Mix_PlayMusic(music, loop) == -1) {
printf("Failed Mix_PlayMusic()\n");
}
}
@@ -96,14 +99,6 @@ namespace audio
}
}
// Allibera una música
void deleteMusic(music *mus)
{
Mix_FreeMusic((Mix_Music *)mus->music);
free(mus->buffer);
free(mus);
}
// Carrega un só des d'un arxiu WAV
const sound *loadSound(const std::string filename)
{