diff options
author | Alexander Baldeck <alexander@archlinux.org> | 2004-09-29 07:46:01 +0000 |
---|---|---|
committer | Alexander Baldeck <alexander@archlinux.org> | 2004-09-29 07:46:01 +0000 |
commit | 55bb2e71ca2497e0f63b1917d4a5eb512f04a867 (patch) | |
tree | 50a66a042ce764383f3be75ad9d0c2502e0a4950 | |
parent | 92f7df43e255dda51f5ece57d2141645bd693afb (diff) | |
download | mana-client-55bb2e71ca2497e0f63b1917d4a5eb512f04a867.tar.gz mana-client-55bb2e71ca2497e0f63b1917d4a5eb512f04a867.tar.bz2 mana-client-55bb2e71ca2497e0f63b1917d4a5eb512f04a867.tar.xz mana-client-55bb2e71ca2497e0f63b1917d4a5eb512f04a867.zip |
added simple soundpool
-rw-r--r-- | src/sound/sound.cpp | 105 | ||||
-rw-r--r-- | src/sound/sound.h | 36 |
2 files changed, 71 insertions, 70 deletions
diff --git a/src/sound/sound.cpp b/src/sound/sound.cpp index 900262d8..3df95e65 100644 --- a/src/sound/sound.cpp +++ b/src/sound/sound.cpp @@ -1,4 +1,4 @@ -/** +/* The Mana World Copyright 2004 The Mana World Development Team @@ -128,32 +128,6 @@ void TmwSound::SetAdjVol(int adigi, int amid, int amod) { } /** - preloads a sound-item into buffer - char *fpath -> full path to file - char type -> type of item (TMWSOUND_MOD, TMWSOUND_MID, TMWSOUND_SFX) - - NOTE: - only TMWSOUND_SFX items get preloaded. everything - else will only store the full path to the file -*/ -TMWSOUND_SID TmwSound::LoadItem(char *fpath, char type) { - POOL_ITEM item; - if(type == TMWSOUND_SFX) { - item.data = (void*)load_sample(fpath); - if(item.data == NULL) - throw(sprintf("Unable to load sample: %s\n", fpath)); - } - - items++; - item.id = items; - item.type = type; - item.fname = fpath; - - soundpool.push_front(item); - return item.id; -} - -/** start BGM using a midi file char *in -> full path of midi file int loop -> how many times should the midi be looped? (-1 = infinite) @@ -161,12 +135,12 @@ TMWSOUND_SID TmwSound::LoadItem(char *fpath, char type) { NOTE: playing midi does not steal away any voices but does not work w/ most soundcards w/o software - emulation. this means than linux-users will most + emulation. this means that *nix-users will most probably be left out. do not use this unless we find a way to always get it to work. :-) at this point of time only standard RMI midi files - can be played. so no m$ extensions like GS and stuff. + can be played. so no m$ extensions like GS and such. */ void TmwSound::StartMIDI(char *in, int loop) { if(isOk==-1) @@ -182,21 +156,22 @@ void TmwSound::StartMIDI(char *in, int loop) { } /** - start BGM using a mod file - char *in -> full path of mod file - int loop -> how many times should the midi be looped? (-1 = infinite) + start BGM using a mod file + char *in -> full path of mod file + int loop -> how many times should the midi be looped? (-1 = infinite) - NOTE: - playing mod is a pretty good choice. most of the work - is being done by the cpu so it's not dependend on the - sound-card how things sound as long as it works. ;-) + NOTE: + playing mod is a pretty good choice. most of the work + is being done by the cpu so it's not dependend on the + sound-card how things sound. if it works, it just + works! ;-) - JGMOD supports several formats: - MOD - S3M - XM - Unreal - and S3M (in UMX extension) + JGMOD supports several formats: + MOD + S3M + XM + Unreal + and S3M (in UMX extension) */ void TmwSound::StartMOD(char * in, int loop) { if(isOk==-1) @@ -268,6 +243,35 @@ void TmwSound::StartWAV(char * in, int pan) { } /** + preloads a sound-item into buffer + char *fpath -> full path to file + char type -> type of item (TMWSOUND_MOD, TMWSOUND_MID, TMWSOUND_SFX) + + NOTE: + only TMWSOUND_SFX items get preloaded. everything + else will only store the full path to the file. + + please make sure that the object is not loaded more + than once since the function will not be able to run + checks for its own! +*/ +TMWSOUND_SID TmwSound::LoadItem(char *fpath, char type) { + POOL_ITEM item; + if(type == TMWSOUND_SFX) { + if(!(item.data = (void*)load_sample(fpath))) + throw(sprintf("Unable to load sample: %s\n", fpath)); + } + + items++; + item.id = items; + item.type = type; + item.fname = fpath; + + soundpool.push_front(item); + return item.id; +} + +/** deinstall all sound functionality NOTE: @@ -277,17 +281,14 @@ void TmwSound::StartWAV(char * in, int pan) { memory (e.g. garbage-collection) feel free to use it. :-P */ -int TmwSound::Close(void) { - if(isOk==-1) - return -1; - mod = NULL; - mid = NULL; - sfx = NULL; - +void TmwSound::Close(void) { + mod = NULL; + mid = NULL; + sfx = NULL; + remove_mod(); - remove_sound(); - isOk = -1; - return 0; + remove_sound(); + isOk = -1; } /** PRIVATE */ diff --git a/src/sound/sound.h b/src/sound/sound.h index 4fbe3e45..4c5f13d5 100644 --- a/src/sound/sound.h +++ b/src/sound/sound.h @@ -1,4 +1,4 @@ -/** +/* The Mana World Copyright 2004 The Mana World Development Team @@ -36,6 +36,15 @@ #include <string> using namespace std; +/** mod file */ +#define TMWSOUND_MOD 1 +/** midi file */ +#define TMWSOUND_MID 2 +/** sample file */ +#define TMWSOUND_SFX 3 + +typedef unsigned short TMWSOUND_SID ; + /** rewrite of non-existend sdl-soundengine using allegro @@ -43,21 +52,11 @@ using namespace std; Author: kth5 aka Alexander Baldeck pipe your question, suggestions and flames to: kth5@gawab.com - - NOTE: - i documented all functions in their implementation. ;-) */ - -#define TMWSOUND_MOD 1 -#define TMWSOUND_MID 2 -#define TMWSOUND_SFX 3 - -typedef unsigned short TMWSOUND_SID ; - class TmwSound { public: void Init(int, int); - int Close(); + void Close(); void StartMIDI(char *, int); void StartMOD(char *, int); @@ -71,11 +70,11 @@ class TmwSound { TmwSound() {isOk=-1;} - /* if allegro is shut down or object is deleted any BGM is + /** if allegro is shut down or object is deleted any BGM is stopped and SFX run out */ ~TmwSound() {StopBGM(); Close();}; private: - /* initial value is -1 which means error or noninitialzed. + /** initial value is -1 which means error or noninitialzed. you can only play sounds and bgm if this is 0. that should be the case after calling Init() successfully */ int isOk; @@ -92,14 +91,15 @@ class TmwSound { int vol_midi; int vol_mod; + /** structure can hold a sound item's attributes and data (sample-only) */ typedef struct POOL_ITEM { - /* incremental id of pool item */ + /** incremental id of pool item */ TMWSOUND_SID id; - /* type of item */ + /** type of item */ char type; - /* (file-)name of sfx only kept for human reasons ^_^ */ + /** (file-)name of sfx only kept for human reasons ^_^ */ string fname; - /* generic data casted before used */ + /** generic data */ void * data; }; |