diff options
Diffstat (limited to 'engines/tony/tony.cpp')
-rw-r--r-- | engines/tony/tony.cpp | 82 |
1 files changed, 72 insertions, 10 deletions
diff --git a/engines/tony/tony.cpp b/engines/tony/tony.cpp index 0a2143ba8b..9dda1b9d4d 100644 --- a/engines/tony/tony.cpp +++ b/engines/tony/tony.cpp @@ -144,32 +144,65 @@ void TonyEngine::PlayMusic(int nChannel, const char *fn, int nFX, bool bLoop, in } void TonyEngine::PlaySFX(int nChannel, int nFX) { - warning("TonyEngine::PlaySFX"); + if (m_sfx[nChannel] == NULL) + return; + + switch (nFX) { + case 0: + m_sfx[nChannel]->SetLoop(false); + break; + + case 1: + m_sfx[nChannel]->SetLoop(true); + break; + } + + m_sfx[nChannel]->Play(); } void TonyEngine::StopMusic(int nChannel) { - warning("TonyEngine::StopMusic"); + warning("TODO TonyEngine::StopMusic"); } void TonyEngine::StopSFX(int nChannel) { - warning("TonyEngine::StopSFX"); + warning("TODO TonyEngine::StopSFX"); } void TonyEngine::PlayUtilSFX(int nChannel, int nFX) { - warning("TonyEngine::PlayUtilSFX"); + warning("TODO TonyEngine::PlayUtilSFX"); } void TonyEngine::StopUtilSFX(int nChannel) { - warning("TonyEngine::StopUtilSFX"); + warning("TODO TonyEngine::StopUtilSFX"); } void TonyEngine::PreloadSFX(int nChannel, char* fn) { - warning("TonyEngine::PreloadSFX"); + if (m_sfx[nChannel] != NULL) { + m_sfx[nChannel]->Stop(); + m_sfx[nChannel]->Release(); + m_sfx[nChannel] = NULL; + } + + _theSound.CreateSfx(&m_sfx[nChannel]); + +/* + // Mette il path giusto + GetDataDirectory(DD_UTILSFX, path_buffer); + _splitpath(path_buffer,drive,dir,NULL,NULL); + _splitpath(fn,NULL,NULL,fname,ext); + _makepath(path_buffer,drive,dir,fname,ext); + + m_sfx[nChannel]->LoadFile(path_buffer, FPCODEC_ADPCM); +*/ + m_sfx[nChannel]->LoadFile(fn, FPCODEC_ADPCM); } FPSFX *TonyEngine::CreateSFX(byte *buf) { - warning("TonyEngine::CreateSFX"); - return NULL; + FPSFX *sfx; + + _theSound.CreateSfx(&sfx); + sfx->LoadFile(buf,FPCODEC_WAV); + return sfx; } void TonyEngine::PreloadUtilSFX(int nChannel, char *fn) { @@ -185,11 +218,40 @@ void TonyEngine::UnloadAllUtilSFX(void) { } void TonyEngine::InitMusic() { - warning("TODO: TonyEngine::InitMusic"); + int i; + + _theSound.Init(/*m_wnd*/); + _theSound.SetMasterVolume(63); + + for (i = 0; i < 6; i++) + _theSound.CreateStream(&m_stream[i]); + + for (i = 0; i < MAX_SFX_CHANNELS; i++) { + m_sfx[i] = m_utilSfx[i] = NULL; + } + + // Crea la critical section per la musica + csMusic = g_system->createMutex(); + + // Carica effetti sonori +// PreloadUtilSFX(0,"AccendiOpzione.ADP"); +// PreloadUtilSFX(1,"ApriInterfaccia.ADP"); + + PreloadUtilSFX(0, "U01.ADP"); // invertiti!! + PreloadUtilSFX(1, "U02.ADP"); } void TonyEngine::CloseMusic() { - warning("TODO: TonyEngine::CloseMusic"); + for (int i = 0; i < 6; i++) { + m_stream[i]->Stop(); + m_stream[i]->UnloadFile(); + m_stream[i]->Release(); + } + + g_system->deleteMutex(csMusic); + + UnloadAllSFX(); + UnloadAllUtilSFX(); } void TonyEngine::PauseSound(bool bPause) { |