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 eSoundMixerGetMixer ()
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< eGameObjectm_Owner
bool m_PlayMusic
bool m_active
tSong m_CurrentSong
tPlayListm_Playlist
std::deque< eWavDatam_SoundEffects
std::deque< eChannelm_Channels
int m_numChannels

Static Private Attributes

static eSoundMixer_instance = 0
static int m_Mode = 0
static bool m_isDirty = true
static eMusicTrackm_TitleTrack = 0
static eMusicTrackm_GuiTrack = 0
static eMusicTrackm_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