diff options
Diffstat (limited to 'src/music.c')
| -rw-r--r-- | src/music.c | 45 |
1 files changed, 44 insertions, 1 deletions
diff --git a/src/music.c b/src/music.c index 2459787..e3a9d69 100644 --- a/src/music.c +++ b/src/music.c @@ -14,6 +14,7 @@ static list_t *listMusic; static bool_t isMusicInit = FALSE; +static bool_t isMusicActive = TRUE; static music_t *currentMusic; bool_t isMusicInicialized() @@ -23,12 +24,18 @@ bool_t isMusicInicialized() void initMusic() { - assert( isAudioInicialized() ); + if( isAudioInicialized() == FALSE ) + { + isMusicInit = FALSE; + return; + } listMusic = newList(); currentMusic = NULL; isMusicInit = TRUE; + isMusicActive = TRUE; + printf("init music..\n"); } @@ -83,6 +90,12 @@ void addMusic(char *file, char *name, int group) void stopMusic() { + if( isMusicInit == FALSE || + isMusicActive == FALSE ) + { + return; + } + if( currentMusic != NULL ) { printf("stop music %s..\n", currentMusic->name); @@ -96,6 +109,12 @@ void playMusic(char *name, int group) int i; music_t *this; + if( isMusicInit == FALSE || + isMusicActive == FALSE ) + { + return; + } + if( currentMusic != NULL && currentMusic->group == group && strcmp(currentMusic->name, name) == 0 ) @@ -125,6 +144,25 @@ void playMusic(char *name, int group) } } +void setMusicActive(bool_t n) +{ + static music_t *music = NULL; + + if( n == FALSE ) + { + music = currentMusic; + stopMusic(); + } + + if( n == TRUE ) + { + currentMusic = music; + playMixMusic(); + } + + isMusicActive = n; +} + char* getCurrentMusic() { return currentMusic->name; @@ -149,6 +187,11 @@ void delAllMusicInGroup(int group) void quitMusic() { + if( isMusicInit == FALSE ) + { + return; + } + stopMusic(); destroyListItem(listMusic, destroyMusic); isMusicInit = FALSE; |