From ea76b6988ccafaa6a4d4ed90f2489d0e49e1f180 Mon Sep 17 00:00:00 2001 From: Benjamin Barenblat Date: Sat, 5 Sep 2015 09:32:30 -0400 Subject: Imported Upstream version 0.40.24 --- g_src/music_and_sound_fmodex.h | 102 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100755 g_src/music_and_sound_fmodex.h (limited to 'g_src/music_and_sound_fmodex.h') diff --git a/g_src/music_and_sound_fmodex.h b/g_src/music_and_sound_fmodex.h new file mode 100755 index 0000000..444d555 --- /dev/null +++ b/g_src/music_and_sound_fmodex.h @@ -0,0 +1,102 @@ +//copyright (c) 2006 by tarn adams + +#define SOUND_CHANNELNUM 16 + +#include +#include + +#ifndef NO_FMOD + +#include +#include + +/* The maximums can be no larger than the largest value + * of a signed integer. + */ +#define MAXSONGNUM 1000 +#define MAXSOUNDNUM 1000 +#define FSOUND_STEREOPAN 0 + +struct fmodSound { + FMOD::Sound *sound; + FMOD::Channel *channel; +}; + + + +class musicsoundst +{ + public: + enum linux_sound_system { + ALSA, + OSS, + ESD, + }; + + int SoftChannelNumber; + + musicsoundst() : song(-1), system(NULL), masterchannelgroup(NULL), sound_system(ALSA) + { + int s; + for (s = 0; s < MAXSONGNUM; s++) { + mod[s].sound = NULL; + mod[s].channel = NULL; + } + + for (s = 0; s < MAXSOUNDNUM; s++) { + samp[s].sound = NULL; + samp[s].channel = NULL; + } + } + ~musicsoundst() + { + deinitsound(); + } + + void startbackgroundmusic(int new_song); + void stopbackgroundmusic(); + void playsound(int s,int channel=-1); + void playsound(int s,int min_channel,int max_channel,int force_channel); + void initsound(); + void deinitsound(); + void set_song(string &filename,int slot); + void set_sound(string &filename,int slot,int pan=-1,int priority=0); + void set_sound_params(int slot,int p1,int vol,int pan,int priority); + void stop_sound(int channel); + void stop_sound() { + masterchannelgroup->stop(); + } + void set_master_volume(long newvol); + void update() { + if (!on) { + return; + } + + system->update(); + } + + void set_sound_system(musicsoundst::linux_sound_system system) { + sound_system = system; + } + + private: + float oldval_to_volumefloat(int val); + float oldval_to_panfloat(int val); + int oldval_to_priority(int val); + + int song; + char musicactive; + char soundpriority; + int soundplaying; + + char on; + + FMOD::System *system; + FMOD::ChannelGroup *masterchannelgroup; + fmodSound mod[MAXSONGNUM]; + fmodSound samp[MAXSOUNDNUM]; + + musicsoundst::linux_sound_system sound_system; +}; +#endif + -- cgit v1.2.3