//************************************************************************ BOOL CGBScene::PlaySound(LPCTSTR lpWaveFile, BOOL fHint) //************************************************************************ { LPSOUND pSound = GetSound(); if ( !pSound ) return( FALSE ); BOOL fRet; if ( !pSound->IsMixing() ) fRet = pSound->StartFile((LPSTR)lpWaveFile, FALSE/*bLoop*/, -1, TRUE/*bWait*/); else { // this nonsense is here because in order to make buttons // in action strip play the click wave when they are clicked // on we need to synchronously play the sound so the click // happens while the button is down. WaveMix does not play // sounds synchronously, so we deactivate WaveMix and use // sndPlaySound stuff. CSound sound; pSound->Activate(FALSE); fRet = sound.StartFile((LPSTR)lpWaveFile, FALSE/*bLoop*/, -1, TRUE/*bWait*/); pSound->Activate(TRUE); } return(fRet); }
//************************************************************************ void CNutDropScene::PlayLevelSuccessWave() //************************************************************************ { // Get the sound to play based on the level int iCount = 0; for (int i = 0 ; i < MAX_SUCCESSWAVES ; i++) { if (m_szSuccessLevel[i][0] != '\0') iCount++; } LPSTR lpWave; if (iCount <= 0) { lpWave = m_szSuccessLevel[0]; } else { i = GetRandomNumber (iCount); lpWave = m_szSuccessLevel[i]; } if (*lpWave != '\0') { FNAME szFileName; if (GetSound() ) { m_SoundPlaying = SuccessPlaying; GetSound()->StopChannel(NORMAL_CHANNEL); if (m_nSceneNo == IDD_NUTDROPI) { // Play this wave without wavemix LPSOUND lpSound = new CSound; if ( lpSound ) { GetSound()->Activate (FALSE); lpSound->StartFile( GetPathName(szFileName, lpWave), NO/*bLoop*/, NORMAL_CHANNEL/*iChannel*/, TRUE/*bWait*/, m_hWnd); delete lpSound; GetSound()->Activate (TRUE); FORWARD_WM_COMMAND (m_hWnd, IDC_NEXT, NULL, m_nNextSceneNo, PostMessage); } } else GetSound()->StartFile(GetPathName (szFileName, lpWave), NO/*bLoop*/, NORMAL_CHANNEL/*iChannel*/, FALSE/*bWait*/, m_hWnd); } } }