eSoundMixer Class Reference

#include <eSoundMixer.h>

Collaboration diagram for eSoundMixer:

Collaboration graph
[legend]

List of all members.

Public Member Functions

 ~eSoundMixer ()
void Init ()
void PushButton (int soundEffect)
void PushButton (int soundEffect, eCoord location)
void SetMicrophoneOwner (eGameObject *newOwner)
void PlayContinuous (int soundEffect, eGameObject *owner)
void RemoveContinuous (int soundEffect, eGameObject *owner)
void LoadPlaylist ()
tString GetCurrentSong ()
void Update ()

Static Public Member Functions

static eSoundMixer * GetMixer ()
static void ShutDown ()
static void SetMode (MusicMode newMode)
static void SDLMusicFinished ()
static void SongFinished ()
static bool Music_play (REAL x)
static bool Music_next_song (REAL x)
static bool Music_previous_song (REAL x)
static bool Music_stop (REAL x)
static bool Music_pause (REAL x)
static bool Music_volume_up (REAL x)
static bool Music_volume_down (REAL x)
static void ChannelFinished (int channel)

Private Member Functions

void __channelFinished (int channel)
int FirstAvailableChannel ()
 eSoundMixer ()

Private Attributes

bool sound_is_there
SDL_AudioSpec audio
tJUST_CONTROLLED_PTR< eGameObject > m_Owner
bool m_PlayMusic
bool m_active
tSong m_CurrentSong
tPlayList * m_Playlist
std::deque< eWavData > m_SoundEffects
std::deque< eChannel > m_Channels
int m_numChannels

Static Private Attributes

static eSoundMixer * _instance = 0
static int m_Mode = 0
static bool m_isDirty = true
static eMusicTrack * m_TitleTrack = 0
static eMusicTrack * m_GuiTrack = 0
static eMusicTrack * m_GameTrack = 0
static bool m_musicIsPlaying = false


Detailed Description

Definition at line 99 of file eSoundMixer.h.


Constructor & Destructor Documentation

eSoundMixer::~eSoundMixer (  ) 

Definition at line 353 of file eSoundMixer.cpp.

00353                           {
00354     // do nothing destructor
00355 }

eSoundMixer::eSoundMixer (  )  [private]

Definition at line 147 of file eSoundMixer.cpp.

References m_Owner, m_Playlist, m_PlayMusic, musicActive, and NULL.

Referenced by GetMixer().

00148 {
00149 #ifdef HAVE_LIBSDL_MIXER
00150     m_Owner = NULL;
00151     m_Playlist = NULL;
00152 
00153     if(musicActive == 1) {
00154         m_PlayMusic = true;
00155     } else {
00156         m_PlayMusic = false;
00157     }
00158 #endif // DEDICATED
00159 }

Here is the caller graph for this function:


Member Function Documentation

eSoundMixer * eSoundMixer::GetMixer (  )  [static]

Definition at line 561 of file eSoundMixer.cpp.

References _instance, eSoundMixer(), and Init().

Referenced by cCockpit::cb_CurrentSong(), gCycle::DoTurn(), gExplosion::gExplosion(), gZone::gZone(), gGame::Init(), eMusicTrack::Init(), gCycle::MyInitAfterCreation(), gCycle::SyncEnemy(), gCamera::Timestep(), welcome(), zZone::zZone(), and gCycle::~gCycle().

00562                                    {
00563 #ifdef HAVE_LIBSDL_MIXER
00564     if(_instance == 0) {
00565         _instance = new eSoundMixer();
00566         _instance->Init();
00567     }
00568 
00569 #endif // DEDICATED
00570     return _instance;

Here is the call graph for this function:

Here is the caller graph for this function:

void eSoundMixer::ShutDown (  )  [static]

Definition at line 541 of file eSoundMixer.cpp.

References _instance, m_active, m_GameTrack, m_GuiTrack, m_TitleTrack, NULL, and SetMicrophoneOwner().

Referenced by main().

00542                            {
00543 #ifdef HAVE_LIBSDL_MIXER
00544     if ( _instance )
00545         _instance->SetMicrophoneOwner( NULL );
00546 
00547     if ( _instance && _instance->m_active )
00548     {
00549         Mix_CloseAudio();
00550         SDL_QuitSubSystem( SDL_INIT_AUDIO );
00551     }
00552 
00553     delete _instance;
00554     delete m_TitleTrack;
00555     delete m_GuiTrack;
00556     if(m_GameTrack) delete m_GameTrack;
00557 
00558 
00559 #endif // DEDICATED

Here is the call graph for this function:

Here is the caller graph for this function:

void eSoundMixer::Init (  ) 

Definition at line 233 of file eSoundMixer.cpp.

References a, ANNOUNCER_1, ANNOUNCER_2, ANNOUNCER_3, ANNOUNCER_GO, b, buffersize, c, ChannelFinished(), CYCLE_EXPLOSION, CYCLE_GRIND_WALL, CYCLE_MOTOR, CYCLE_TURN, tDirectories::Data(), tPath::GetReadPath(), guiTrack, LoadPlaylist(), m_active, m_Channels, m_GameTrack, m_GuiTrack, m_musicIsPlaying, m_numChannels, m_SoundEffects, m_TitleTrack, musicVolume, numSoundcardChannels, SDLMusicFinished(), SOUND_HIGH, SOUND_LOW, SOUND_MED, SOUND_OFF, sound_quality, titleTrack, and ZONE_SPAWN.

Referenced by GetMixer().

00233                        {
00234 #ifdef HAVE_LIBSDL_MIXER
00235     bool initbase = false;
00236 
00237     m_active = false;
00238 
00239     const tPath& vpath = tDirectories::Data();
00240 
00241     // We haven't started playing any music yet
00242     m_musicIsPlaying = false;
00243 
00244     tString musFile;
00245 
00246     musFile = vpath.GetReadPath( titleTrack );
00247     std::cout << titleTrack << "\n";
00248     m_TitleTrack = new eMusicTrack(musFile, true);
00249     musFile = vpath.GetReadPath( guiTrack );
00250     std::cout << guiTrack << "\n";
00251     m_GuiTrack = new eMusicTrack(musFile, true);
00252 
00253     //m_GuiTrack->Loop();
00254 
00255     // Don't load a file for this, we don't know what we're playing until it's time
00256     // to play.
00257     m_GameTrack = new eMusicTrack();
00258 
00259     LoadPlaylist();
00260 
00261     int frequency;
00262 
00263     switch (sound_quality)
00264     {
00265     case SOUND_LOW:
00266         frequency=11025; break;
00267     case SOUND_MED:
00268         frequency=22050; break;
00269     case SOUND_HIGH:
00270         frequency=44100; break;
00271     case SOUND_OFF:
00272         return; break;
00273     default:
00274         frequency=22050;
00275     }
00276 
00277     if(!SDL_WasInit( SDL_INIT_AUDIO )) {
00278         int rc;
00279         rc = se_Wrap_SDL_InitSubSystem();
00280         if ( rc < 0 ) {
00281             //std::cerr << "Couldn't initialize audio, disabling.  I'm very sorry about that.\n";
00282             initbase = false;
00283             // todo: disable audio if we can't initialize it
00284         } else {
00285             initbase = true;
00286         }
00287     } else {
00288         initbase = true;
00289     }
00290 
00291     if( !initbase ) {
00292         return;
00293     }
00294 
00295     int rc;
00296 
00297     // guesstimate the desired number of samples to calculate in advance
00298     int samples = static_cast< int >( buffersize * 512 );
00299 
00300     rc = Mix_OpenAudio( frequency, AUDIO_S16LSB,
00301                         numSoundcardChannels, samples );
00302 
00303     if(rc==0) {
00304         // don't know what to do here
00305         int a,c;
00306         Uint16 b;
00307         Mix_QuerySpec(&a,&b,&c);
00308         //std::cout << "SDL_Mixer initialized with " << c << " channels.\n";
00309     } else {
00310         //std::cout << "Couldn't initialize SDL_Mixer, disabling sound.  I'm very sorry about that, I'll try to do better next time.\n";
00311         return;
00312     }
00313 
00314     // Register music finished callback
00315     Mix_VolumeMusic( musicVolume );
00316     Mix_HookMusicFinished( &eSoundMixer::SDLMusicFinished );
00317 
00318     // Now we're done with music and initializing sdl_mixer, we'll setup the sound
00319     // effect stuff
00320     //musFile = vpath.GetReadPath( titleTrack );
00321 
00322     m_SoundEffects.resize(15);
00323     m_SoundEffects[CYCLE_TURN].LoadWavFile(vpath.GetReadPath("sound/cycle_turn.ogg") );
00324     m_SoundEffects[CYCLE_TURN].SetVolume(60);
00325     m_SoundEffects[CYCLE_EXPLOSION].LoadWavFile(vpath.GetReadPath( "sound/expl.ogg" ));
00326     m_SoundEffects[ANNOUNCER_1].LoadWavFile(vpath.GetReadPath("sound/1voicemale.ogg") );
00327     m_SoundEffects[ANNOUNCER_2].LoadWavFile(vpath.GetReadPath("sound/2voicemale.ogg") );
00328     m_SoundEffects[ANNOUNCER_3].LoadWavFile(vpath.GetReadPath("sound/3voicemale.ogg") );
00329     m_SoundEffects[ANNOUNCER_GO].LoadWavFile(vpath.GetReadPath("sound/announcerGO.ogg"));
00330     //m_SoundEffects[NEW_MATCH].LoadWavFile(vpath.GetReadPath("sound/none.ogg") );
00331     //m_SoundEffects[NEW_ROUND].LoadWavFile(vpath.GetReadPath("sound/none.ogg") );
00332     //m_SoundEffects[ROUND_WINNER].LoadWavFile(vpath.GetReadPath("sound/none.ogg") );
00333     //m_SoundEffects[MATCH_WINNER].LoadWavFile(vpath.GetReadPath("sound/none.ogg") );
00334     m_SoundEffects[ZONE_SPAWN].LoadWavFile(vpath.GetReadPath("sound/zone_spawn.ogg") );
00335     m_SoundEffects[CYCLE_MOTOR].LoadWavFile(vpath.GetReadPath("sound/cyclrun.ogg") );
00336     m_SoundEffects[CYCLE_GRIND_WALL].LoadWavFile(vpath.GetReadPath("sound/grind.ogg") );
00337 
00338     Mix_Volume(-1, 50);
00339     Mix_VolumeMusic(100);
00340 
00341     m_numChannels = Mix_AllocateChannels(40);
00342     m_Channels.resize( m_numChannels );
00343     for(int i=0; i < m_numChannels; i++) {
00344         m_Channels[i].SetId(i);
00345     }
00346     Mix_ChannelFinished( &eSoundMixer::ChannelFinished );
00347 
00348     // only now, everything is all right
00349     m_active = true;
00350 #endif
00351 }

Here is the call graph for this function:

Here is the caller graph for this function:

void eSoundMixer::SetMode ( MusicMode  newMode  )  [static]

Definition at line 374 of file eSoundMixer.cpp.

References m_isDirty, and m_Mode.

Referenced by SongFinished(), and welcome().

00374                                            {
00375 #ifdef HAVE_LIBSDL_MIXER
00376     m_Mode = newMode;
00377     m_isDirty = true;
00378 #endif // DEDICATED
00379 }

Here is the caller graph for this function:

void eSoundMixer::PushButton ( int  soundEffect  ) 

Definition at line 411 of file eSoundMixer.cpp.

References FirstAvailableChannel(), m_active, m_Channels, and m_SoundEffects.

Referenced by gGame::Analysis(), gCycle::DoTurn(), gGame::GameLoop(), gExplosion::gExplosion(), gZone::gZone(), gCycle::SyncEnemy(), and zZone::zZone().

00411                                               {
00412 #ifdef HAVE_LIBSDL_MIXER
00413     if (!m_active) return;
00414 
00415     int theChannel = FirstAvailableChannel();
00416     if( theChannel < 0) return;
00417     m_Channels[ theChannel ].PlaySound(m_SoundEffects[soundEffect]);
00418 #endif // DEDICATED
00419 }

Here is the call graph for this function:

Here is the caller graph for this function:

void eSoundMixer::PushButton ( int  soundEffect,
eCoord  location 
)

Definition at line 421 of file eSoundMixer.cpp.

References FirstAvailableChannel(), m_active, m_Channels, m_Owner, and m_SoundEffects.

00421                                                                {
00422 #ifdef HAVE_LIBSDL_MIXER
00423     if (!m_active) return;
00424 
00425     // If we don't have an owner yet, just call regular PushButton
00426     if(!m_Owner) return;
00427 
00428     int theChannel = FirstAvailableChannel();
00429 
00430     if( theChannel < 0) return;
00431     m_Channels[theChannel].Set3d(m_Owner->Position(), location, m_Owner->Direction());
00432     m_Channels[theChannel].PlaySound(m_SoundEffects[soundEffect]);
00433 #endif // DEDICATED
00434 }

Here is the call graph for this function:

void eSoundMixer::SetMicrophoneOwner ( eGameObject *  newOwner  ) 

Definition at line 161 of file eSoundMixer.cpp.

References m_Owner.

Referenced by ShutDown(), and gCamera::Timestep().

00161                                                           {
00162 #ifdef HAVE_LIBSDL_MIXER
00163     //std::cout << "Setting new microphone owner\n";
00164     m_Owner = newOwner;
00165 #endif // DEDICATED
00166 }

Here is the caller graph for this function:

void eSoundMixer::PlayContinuous ( int  soundEffect,
eGameObject *  owner 
)

Definition at line 436 of file eSoundMixer.cpp.

References FirstAvailableChannel(), m_active, m_Channels, m_Owner, m_SoundEffects, and SoundEffectString.

Referenced by gCycle::MyInitAfterCreation().

00436                                                                     {
00437 #ifdef HAVE_LIBSDL_MIXER
00438     std::cout << "Playcontinuous: " << SoundEffectString[soundEffect] << "\n";
00439     if (!m_active) return;
00440     return;
00441 
00442     int theChannel = FirstAvailableChannel();
00443     if( theChannel < 0 || m_Channels[theChannel].isBusy()) {
00444         std::cout << "Can't loop, sorry.\n";
00445         return;
00446     }
00447 
00448     m_Channels[theChannel].SetOwner(owner);
00449     // If we don't have an owner yet, we need to delay starting
00450     if(!m_Owner) m_Channels[theChannel].DelayStarting();
00451     m_Channels[theChannel].SetHome(m_Owner);
00452     m_Channels[theChannel].LoopSound(m_SoundEffects[soundEffect]);
00453 #endif
00454 }

Here is the call graph for this function:

Here is the caller graph for this function:

void eSoundMixer::RemoveContinuous ( int  soundEffect,
eGameObject *  owner 
)

Definition at line 456 of file eSoundMixer.cpp.

References m_Channels.

Referenced by gCycle::~gCycle().

00456                                                                       {
00457 #ifdef HAVE_LIBSDL_MIXER
00458     for(std::deque<eChannel>::iterator i = m_Channels.begin(); i != m_Channels.end(); ++i) {
00459         if ((*i).GetOwner() == owner) {
00460             (*i).StopSound();
00461             std::cout << "removed continuous sound\n";
00462         }
00463     }
00464 #endif
00465 }

Here is the caller graph for this function:

void eSoundMixer::SDLMusicFinished (  )  [static]

Definition at line 404 of file eSoundMixer.cpp.

References eMusicTrack::currentMusic, m_TitleTrack, and eMusicTrack::MusicFinished().

Referenced by Init().

00404                                    {
00405 #ifdef HAVE_LIBSDL_MIXER
00406     // We're guaranteed to have this, so we'll just use it
00407     m_TitleTrack->currentMusic->MusicFinished();
00408 #endif
00409 }

Here is the call graph for this function:

Here is the caller graph for this function:

void eSoundMixer::SongFinished (  )  [static]

Definition at line 381 of file eSoundMixer.cpp.

References GRID_TRACK, GUI_TRACK, m_isDirty, m_Mode, m_musicIsPlaying, SetMode(), and TITLE_TRACK.

Referenced by eMusicTrack::MusicFinished().

00381                                {
00382 #ifdef HAVE_LIBSDL_MIXER
00383     // Music stopped
00384     m_musicIsPlaying = false;
00385 
00386     switch(m_Mode) {
00387     case TITLE_TRACK:
00388         // When the title track stops, we switch to the gui track
00389         SetMode(GUI_TRACK);
00390         break;
00391     case GUI_TRACK:
00392         m_isDirty = true;
00393         break;
00394     case GRID_TRACK:
00395         m_isDirty = true;
00396         break;
00397     default:
00398         break;
00399     }
00400 #endif // DEDICATED
00401 
00402 }

Here is the call graph for this function:

Here is the caller graph for this function:

static bool eSoundMixer::Music_play ( REAL  x  )  [static]

static bool eSoundMixer::Music_next_song ( REAL  x  )  [static]

static bool eSoundMixer::Music_previous_song ( REAL  x  )  [static]

static bool eSoundMixer::Music_stop ( REAL  x  )  [static]

static bool eSoundMixer::Music_pause ( REAL  x  )  [static]

static bool eSoundMixer::Music_volume_up ( REAL  x  )  [static]

static bool eSoundMixer::Music_volume_down ( REAL  x  )  [static]

void eSoundMixer::LoadPlaylist (  ) 

Definition at line 357 of file eSoundMixer.cpp.

References customPlaylist, tDirectories::Data(), tPath::GetReadPath(), eMusicTrack::LoadPlaylist(), m_GameTrack, playListFile, eMusicTrack::SetPlaylist(), and usePlaylist.

Referenced by Init().

00357                                {
00358 #ifdef HAVE_LIBSDL_MIXER
00359     if(!m_GameTrack) return;
00360 
00361     if(usePlaylist == 1) {
00362         m_GameTrack->SetPlaylist(usePlaylist);
00363         m_GameTrack->LoadPlaylist(customPlaylist);
00364     } else {
00365         const tPath& vpath = tDirectories::Data();
00366         m_GameTrack->SetPlaylist(usePlaylist);
00367         m_GameTrack->LoadPlaylist(vpath.GetReadPath(playListFile) );
00368     }
00369 #endif
00370 }

Here is the call graph for this function:

Here is the caller graph for this function:

tString eSoundMixer::GetCurrentSong (  ) 

Definition at line 524 of file eSoundMixer.cpp.

References eMusicTrack::currentMusic, eMusicTrack::GetFileName(), m_GameTrack, NULL, pos, and tString::SubStr().

00524                                     {
00525     if(m_GameTrack != NULL)
00526         if(m_GameTrack->currentMusic != NULL) {
00527             tString const &str = m_GameTrack->currentMusic->GetFileName();
00528 #ifndef WIN32
00529             size_t pos = str.find_last_of('/');
00530 #else
00531             size_t pos = str.find_last_of('\\');
00532 #endif
00533             if(pos == tString::npos) return str;
00534             if(pos == str.size()) return tString();
00535             return str.SubStr(pos + 1);
00536         }
00537     return tString(" ");

Here is the call graph for this function:

void eSoundMixer::ChannelFinished ( int  channel  )  [static]

Definition at line 174 of file eSoundMixer.cpp.

References __channelFinished(), and _instance.

Referenced by Init().

00174                                              {
00175 #ifdef HAVE_LIBSDL_MIXER
00176     _instance->__channelFinished(channel);
00177 #endif // DEDICATED
00178 }

Here is the call graph for this function:

Here is the caller graph for this function:

void eSoundMixer::__channelFinished ( int  channel  )  [private]

Definition at line 168 of file eSoundMixer.cpp.

References m_Channels.

Referenced by ChannelFinished().

00168                                                {
00169 #ifdef HAVE_LIBSDL_MIXER
00170     m_Channels[channel].UnplaySound();
00171 #endif // DEDICATED
00172 }

Here is the caller graph for this function:

void eSoundMixer::Update (  ) 

Definition at line 467 of file eSoundMixer.cpp.

References eMusicTrack::currentMusic, eMusicTrack::FadeOut(), GRID_TRACK, GUI_TRACK, eMusicTrack::IsPlaying(), m_active, m_Channels, m_GameTrack, m_GuiTrack, m_isDirty, m_Mode, m_musicIsPlaying, m_Owner, m_TitleTrack, eMusicTrack::Next(), eChannel::numChannels, eMusicTrack::Play(), eMusicTrack::SetDirty(), TITLE_TRACK, and eMusicTrack::Update().

Referenced by welcome().

00467                          {
00468 #ifdef HAVE_LIBSDL_MIXER
00469     if (!m_active) return;
00470     // Stubbed my french fry
00471 
00472     // First we'll update all the channels
00473     for(int i=0; i<eChannel::numChannels; i++) {
00474         if( m_Channels[i].IsDelayed() ) {
00475             if( m_Owner ) {
00476                 m_Channels[i].SetHome(m_Owner);
00477                 m_Channels[i].Undelay();
00478             }
00479         }
00480         m_Channels[i].Update();
00481     }
00482 
00483     // We only act on music if the mode has changed, indicated by m_isDirty
00484     if (m_isDirty) {
00485         // Also, we only update if the music has stopped for some reason.
00486         if(!m_musicIsPlaying) {
00487 
00488             switch(m_Mode) {
00489             case TITLE_TRACK:
00490                 m_TitleTrack->Play();
00491                 m_Mode = TITLE_TRACK;
00492                 m_isDirty = false;
00493                 break;
00494             case GUI_TRACK:
00495                 m_GuiTrack->Play();
00496                 m_isDirty = false;
00497                 break;
00498             case GRID_TRACK:
00499                 if(m_GuiTrack->IsPlaying()) {
00500                     m_GuiTrack->FadeOut();
00501                     m_GameTrack->SetDirty();
00502                     m_GameTrack->Update();
00503                 } else if(m_TitleTrack->IsPlaying()) {
00504                     m_TitleTrack->FadeOut();
00505                     m_GameTrack->SetDirty();
00506                     m_GameTrack->Update();
00507                 } else {
00508                     m_GameTrack->Next();
00509                     m_GameTrack->Play();
00510                 }
00511                 m_isDirty = false;
00512                 break;
00513             default:
00514                 break;
00515             }
00516         }
00517     }
00518     // Go ahead and update the music track now.
00519     if ( m_GuiTrack && m_GuiTrack->currentMusic )
00520         m_GuiTrack->currentMusic->Update();
00521 #endif // DEDICATED
00522 }

Here is the call graph for this function:

Here is the caller graph for this function:

int eSoundMixer::FirstAvailableChannel (  )  [private]

Definition at line 180 of file eSoundMixer.cpp.

References m_Channels, m_numChannels, and tASSERT.

Referenced by PlayContinuous(), and PushButton().

00180                                        {
00181 #ifdef HAVE_LIBSDL_MIXER
00182     Uint32 oldesttime=0;
00183     int oldestchannel=-1;
00184 
00185     for( int i=0; i < m_numChannels; i++) {
00186         if( !m_Channels[i].isBusy() ) return i;
00187         else {
00188             if( m_Channels[i].StartTime() < oldesttime && !m_Channels[i].IsContinuous() ) {
00189                 oldesttime = m_Channels[i].StartTime();
00190                 oldestchannel = i;
00191             }
00192         }
00193     }
00194     //std::cout << "Couldn't get an available channel!\n";
00195 
00196     return oldestchannel;
00197     // TODO: error handling
00198     tASSERT( 0 );
00199 #endif // DEDICATED
00200     return -1;
00201 }

Here is the caller graph for this function:


Member Data Documentation

eSoundMixer * eSoundMixer::_instance = 0 [static, private]

Definition at line 156 of file eSoundMixer.h.

Referenced by ChannelFinished(), GetMixer(), and ShutDown().

bool eSoundMixer::sound_is_there [private]

Definition at line 157 of file eSoundMixer.h.

SDL_AudioSpec eSoundMixer::audio [private]

Definition at line 158 of file eSoundMixer.h.

int eSoundMixer::m_Mode = 0 [static, private]

Definition at line 160 of file eSoundMixer.h.

Referenced by SetMode(), SongFinished(), and Update().

tJUST_CONTROLLED_PTR< eGameObject > eSoundMixer::m_Owner [private]

Definition at line 161 of file eSoundMixer.h.

Referenced by eSoundMixer(), PlayContinuous(), PushButton(), SetMicrophoneOwner(), and Update().

bool eSoundMixer::m_isDirty = true [static, private]

Definition at line 165 of file eSoundMixer.h.

Referenced by SetMode(), SongFinished(), and Update().

bool eSoundMixer::m_PlayMusic [private]

Definition at line 167 of file eSoundMixer.h.

Referenced by eSoundMixer().

bool eSoundMixer::m_active [private]

Definition at line 169 of file eSoundMixer.h.

Referenced by Init(), PlayContinuous(), PushButton(), ShutDown(), and Update().

tSong eSoundMixer::m_CurrentSong [private]

Definition at line 171 of file eSoundMixer.h.

tPlayList* eSoundMixer::m_Playlist [private]

Definition at line 172 of file eSoundMixer.h.

Referenced by eSoundMixer().

std::deque<eWavData> eSoundMixer::m_SoundEffects [private]

Definition at line 174 of file eSoundMixer.h.

Referenced by Init(), PlayContinuous(), and PushButton().

std::deque<eChannel> eSoundMixer::m_Channels [private]

Definition at line 175 of file eSoundMixer.h.

Referenced by __channelFinished(), FirstAvailableChannel(), Init(), PlayContinuous(), PushButton(), RemoveContinuous(), and Update().

int eSoundMixer::m_numChannels [private]

Definition at line 176 of file eSoundMixer.h.

Referenced by FirstAvailableChannel(), and Init().

eMusicTrack * eSoundMixer::m_TitleTrack = 0 [static, private]

Definition at line 178 of file eSoundMixer.h.

Referenced by Init(), SDLMusicFinished(), ShutDown(), and Update().

eMusicTrack * eSoundMixer::m_GuiTrack = 0 [static, private]

Definition at line 179 of file eSoundMixer.h.

Referenced by Init(), ShutDown(), and Update().

eMusicTrack * eSoundMixer::m_GameTrack = 0 [static, private]

Definition at line 180 of file eSoundMixer.h.

Referenced by GetCurrentSong(), Init(), LoadPlaylist(), ShutDown(), and Update().

bool eSoundMixer::m_musicIsPlaying = false [static, private]

Definition at line 184 of file eSoundMixer.h.

Referenced by Init(), SongFinished(), and Update().


The documentation for this class was generated from the following files:
Generated on Sat Mar 15 23:29:36 2008 for Armagetron Advanced by  doxygen 1.5.4