- Ara nomes es pot carregar una musica a la vegada. Simplifica la gestió de memòria.
This commit is contained in:
@@ -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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user