From 2d776fcd61be168e1ff0ff2e4a5e71835e7cea19 Mon Sep 17 00:00:00 2001 From: oroborus Date: Sat, 28 Jun 2008 16:38:35 +0000 Subject: - prekopanie adresarovej struktury, prva cast git-svn-id: http://opensvn.csie.org/tuxanci_ng@77 0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e --- src/audio/sound.c | 137 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 src/audio/sound.c (limited to 'src/audio/sound.c') diff --git a/src/audio/sound.c b/src/audio/sound.c new file mode 100644 index 0000000..37803c4 --- /dev/null +++ b/src/audio/sound.c @@ -0,0 +1,137 @@ + +#include +#include +#include + +#include "base/main.h" +#include "base/list.h" +#include "base/storage.h" + +#include "client/interface.h" + +#include "audio/audio.h" +#include "audio/sound.h" + +static list_t *listStorage; + +static bool_t isSoundInit = FALSE; +static bool_t var_isSoundActive = TRUE; + +bool_t isSoundInicialized() +{ + return isSoundInit; +} + +void initSound() +{ + if( isAudioInicialized() == FALSE ) + { + isSoundInit = FALSE; + return; + } + + listStorage = newStorage(); + isSoundInit = TRUE; + var_isSoundActive = TRUE; + + if( isParamFlag("--nosound") ) + { + setSoundActive(FALSE); + } + + if( isParamFlag("--sound") ) + { + setSoundActive(TRUE); + } + + printf("init sound..\n"); +} + +static Mix_Chunk* loadMixSound(char *file) +{ + Mix_Chunk *new; + char str[STR_PATH_SIZE]; + + + printf("load sound %s..\n", file); + sprintf(str, PATH_SOUND "%s", file); + + accessExistFile(str); + + new = Mix_LoadWAV(str); + + if( new == NULL ) + { + fprintf(stderr, "Nelze nahrat zvuk %s : %s\n", str, Mix_GetError()); + return NULL; + } + + return new; +} + + +static void playMixSound(Mix_Chunk *p) +{ + if( Mix_PlayChannel(-1, p, 0) == -1 ) + { + fprintf(stderr, "Nelze prehrat zvuk : %s\n", Mix_GetError()); + return; + } +} + +static void destroySound(void *p) +{ + Mix_FreeChunk((Mix_Chunk *)p); +} + +void addSound(char *file, char *name, char *group) +{ + Mix_Chunk *new; + + if( isSoundInit == FALSE ) + { + return; + } + + assert( file != NULL ); + assert( name != NULL ); + assert( group != NULL ); + + new = loadMixSound(file); + + addItemToStorage(listStorage, group, name, new ); +} + +void playSound(char *name, char *group) +{ + if( isSoundInit == FALSE || + var_isSoundActive == FALSE ) + { + return; + } + + playMixSound( getItemFromStorage(listStorage, group, name) ); +} + +void setSoundActive(bool_t n) +{ + var_isSoundActive = n; +} + +bool_t isSoundActive() +{ + return var_isSoundActive; +} + +void quitSound() +{ + if( isSoundInit == FALSE ) + { + return; + } + + destroyStorage(listStorage, destroySound); + isSoundInit = FALSE; + printf("quit sound..\n"); +} + -- cgit v1.2.3