- Ara nomes es pot carregar una musica a la vegada. Simplifica la gestió de memòria.
This commit is contained in:
@@ -106,7 +106,8 @@ namespace gamestate
|
|||||||
|
|
||||||
} else if (command=="PLAYMUSIC") {
|
} else if (command=="PLAYMUSIC") {
|
||||||
int res = fscanf(sequence_file, " '%[^']'", text);
|
int res = fscanf(sequence_file, " '%[^']'", text);
|
||||||
audio::playMusic(audio::loadMusic(text));
|
audio::loadMusic(text);
|
||||||
|
audio::playMusic();
|
||||||
|
|
||||||
} else if (command=="FADEOUT") {
|
} else if (command=="FADEOUT") {
|
||||||
draw::fadeout();
|
draw::fadeout();
|
||||||
|
|||||||
@@ -13,6 +13,9 @@ namespace audio
|
|||||||
{
|
{
|
||||||
}; // Dummy structs
|
}; // Dummy structs
|
||||||
|
|
||||||
|
static char *buffer = nullptr;
|
||||||
|
static Mix_Music *music = nullptr;
|
||||||
|
|
||||||
// Inicialitza el sistema de só
|
// Inicialitza el sistema de só
|
||||||
void init()
|
void init()
|
||||||
{
|
{
|
||||||
@@ -32,25 +35,25 @@ namespace audio
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Carrega un arxiu de música en format OGG
|
// 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;
|
int filesize=0;
|
||||||
char *buffer = file::getFileBuffer(filename, filesize);
|
buffer = file::getFileBuffer(filename, filesize);
|
||||||
const Mix_Music* m = Mix_LoadMUS_RW(SDL_RWFromMem(buffer, filesize), 1);
|
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));
|
return true;
|
||||||
mus->buffer = buffer;
|
|
||||||
mus->music = (void*)m;
|
|
||||||
|
|
||||||
return mus;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Comença a reproduïr la música en questió
|
// 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");
|
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
|
// Carrega un só des d'un arxiu WAV
|
||||||
const sound *loadSound(const std::string filename)
|
const sound *loadSound(const std::string filename)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -23,11 +23,6 @@ namespace audio
|
|||||||
|
|
||||||
// Estructures per a gestionar música i só
|
// Estructures per a gestionar música i só
|
||||||
struct sound;
|
struct sound;
|
||||||
struct music
|
|
||||||
{
|
|
||||||
char *buffer;
|
|
||||||
void *music;
|
|
||||||
};
|
|
||||||
|
|
||||||
/// @brief Inicialitza el sistema de só
|
/// @brief Inicialitza el sistema de só
|
||||||
void init();
|
void init();
|
||||||
@@ -37,13 +32,12 @@ namespace audio
|
|||||||
|
|
||||||
/// @brief Carrega un arxiu de música en format OGG
|
/// @brief Carrega un arxiu de música en format OGG
|
||||||
/// @param filename nom de l'arxiu
|
/// @param filename nom de l'arxiu
|
||||||
/// @return punter a la música
|
/// @return true si tot be, false si ha fallat
|
||||||
music *loadMusic(const std::string filename);
|
const bool loadMusic(const std::string filename);
|
||||||
|
|
||||||
/// @brief Comença a reproduïr la música en questió
|
/// @brief Comença a reproduïr la música en questió
|
||||||
/// @param mus punter a la música
|
|
||||||
/// @param loop quants bucles farà (-1=infinit, 0=no repeteix, 1=repeteix 1 vegada...)
|
/// @param loop quants bucles farà (-1=infinit, 0=no repeteix, 1=repeteix 1 vegada...)
|
||||||
void playMusic(const music *mus, const int loop = -1);
|
void playMusic(const int loop = -1);
|
||||||
|
|
||||||
/// @brief Pausa la música que està sonant ara
|
/// @brief Pausa la música que està sonant ara
|
||||||
void pauseMusic();
|
void pauseMusic();
|
||||||
@@ -61,10 +55,6 @@ namespace audio
|
|||||||
/// @return estat actual de la música (MUSIC_INVALID, MUSIC_PLAYING, MUSIC_PAUSED o MUSIC_STOPPED)
|
/// @return estat actual de la música (MUSIC_INVALID, MUSIC_PLAYING, MUSIC_PAUSED o MUSIC_STOPPED)
|
||||||
const music_state getMusicState();
|
const music_state getMusicState();
|
||||||
|
|
||||||
/// @brief Allibera una música
|
|
||||||
/// @param mus punter a la música a alliberar
|
|
||||||
void deleteMusic(music *mus);
|
|
||||||
|
|
||||||
/// @brief Carrega un só des d'un arxiu WAV
|
/// @brief Carrega un só des d'un arxiu WAV
|
||||||
/// @param filename nom de l'arxiu
|
/// @param filename nom de l'arxiu
|
||||||
/// @return un punter al só
|
/// @return un punter al só
|
||||||
|
|||||||
Reference in New Issue
Block a user