// This function checks the Sound loop, and if necessary gets some more sound INT32 AudSoundCheck() { if(!bRunPause) wav_pause(true); // resume, if needed if (!bAudOkay || nAudActive >= AUD_LEN) { return 1; } return pAudOut[nAudActive]->SoundCheck(); }
INT32 AudBlankSound() { wav_pause(false); // pause / stop if needed if (!bAudOkay || nAudActive >= AUD_LEN) { return 1; } return pAudOut[nAudActive]->BlankSound(); }
INT32 AudSoundStop() { if (nAudActive >= AUD_LEN) { return 1; } bAudPlaying = false; if (bCDEmuOkay) wav_pause(false); return pAudOut[nAudActive]->SoundStop(); }
INT32 AudSoundPlay() { if (!bAudOkay || nAudActive >= AUD_LEN) { return 1; } INT32 nRet = pAudOut[nAudActive]->SoundPlay(); if (!nRet) { bAudPlaying = true; if (bCDEmuOkay) wav_pause(true); } return nRet; }
// The main message loop int RunMessageLoop() { int bRestartVideo; MSG Msg; do { bRestartVideo = 0; // Remove pending initialisation messages from the queue while (PeekMessage(&Msg, NULL, WM_APP + 0, WM_APP + 0, PM_NOREMOVE)) { if (Msg.message != WM_QUIT) { PeekMessage(&Msg, NULL, WM_APP + 0, WM_APP + 0, PM_REMOVE); } } RunInit(); ShowWindow(hScrnWnd, nAppShowCmd); // Show the screen window nAppShowCmd = SW_NORMAL; SetForegroundWindow(hScrnWnd); GameInpCheckLeftAlt(); GameInpCheckMouse(); // Hide the cursor if(bVidDWMCore) { DWM_StutterFix(); } while (1) { if (PeekMessage(&Msg, NULL, 0, 0, PM_REMOVE)) { // A message is waiting to be processed if (Msg.message == WM_QUIT) { // Quit program break; } if (Msg.message == (WM_APP + 0)) { // Restart video bRestartVideo = 1; break; } if (bMenuEnabled && nVidFullscreen == 0) { // Handle keyboard messages for the menu if (MenuHandleKeyboard(&Msg)) { continue; } } if (Msg.message == WM_SYSKEYDOWN || Msg.message == WM_KEYDOWN) { if (Msg.lParam & 0x20000000) { // An Alt/AltGr-key was pressed switch (Msg.wParam) { #if defined (FBA_DEBUG) case 'C': { static int count = 0; if (count == 0) { count++; { char* p = NULL; if (*p) { printf("crash...\n"); } } } break; } #endif // 'Silence' & 'Sound Restored' Code (added by CaptainCPS-X) case 'S': { TCHAR buffer[15]; bMute = !bMute; if (bMute) { nAudVolume = 0;// mute sound _stprintf(buffer, FBALoadStringEx(hAppInst, IDS_SOUND_MUTE, true), nAudVolume / 100); } else { nAudVolume = nOldAudVolume;// restore volume _stprintf(buffer, FBALoadStringEx(hAppInst, IDS_SOUND_MUTE_OFF, true), nAudVolume / 100); } if (AudSoundSetVolume() == 0) { VidSNewShortMsg(FBALoadStringEx(hAppInst, IDS_SOUND_NOVOLUME, true)); } else { VidSNewShortMsg(buffer); } break; } case VK_OEM_PLUS: { if (bMute) break; // if mute, not do this nOldAudVolume = nAudVolume; TCHAR buffer[15]; nAudVolume += 100; if (GetAsyncKeyState(VK_CONTROL) & 0x80000000) { nAudVolume += 900; } if (nAudVolume > 10000) { nAudVolume = 10000; } if (AudSoundSetVolume() == 0) { VidSNewShortMsg(FBALoadStringEx(hAppInst, IDS_SOUND_NOVOLUME, true)); } else { _stprintf(buffer, FBALoadStringEx(hAppInst, IDS_SOUND_VOLUMESET, true), nAudVolume / 100); VidSNewShortMsg(buffer); } break; } case VK_OEM_MINUS: { if (bMute) break; // if mute, not do this nOldAudVolume = nAudVolume; TCHAR buffer[15]; nAudVolume -= 100; if (GetAsyncKeyState(VK_CONTROL) & 0x80000000) { nAudVolume -= 900; } if (nAudVolume < 0) { nAudVolume = 0; } if (AudSoundSetVolume() == 0) { VidSNewShortMsg(FBALoadStringEx(hAppInst, IDS_SOUND_NOVOLUME, true)); } else { _stprintf(buffer, FBALoadStringEx(hAppInst, IDS_SOUND_VOLUMESET, true), nAudVolume / 100); VidSNewShortMsg(buffer); } break; } case VK_MENU: { continue; } } } else { switch (Msg.wParam) { #if defined (FBA_DEBUG) case 'N': counter--; bprintf(PRINT_IMPORTANT, _T("*** New counter value: %04X.\n"), counter); break; case 'M': counter++; bprintf(PRINT_IMPORTANT, _T("*** New counter value: %04X.\n"), counter); break; #endif case VK_ESCAPE: { if (hwndChat) { DeActivateChat(); } else { if (bCmdOptUsed) { PostQuitMessage(0); } else { if (nVidFullscreen) { nVidFullscreen = 0; POST_INITIALISE_MESSAGE; } } } break; } case VK_RETURN: { if (hwndChat) { int i = 0; while (EditText[i]) { if (EditText[i++] != 0x20) { break; } } if (i) { Kaillera_Chat_Send(TCHARToANSI(EditText, NULL, 0)); //kailleraChatSend(TCHARToANSI(EditText, NULL, 0)); } DeActivateChat(); break; } if (GetAsyncKeyState(VK_CONTROL) & 0x80000000) { bMenuEnabled = !bMenuEnabled; POST_INITIALISE_MESSAGE; break; } break; } case VK_F1: { if (kNetGame) { break; } if (((GetAsyncKeyState(VK_CONTROL) | GetAsyncKeyState(VK_SHIFT)) & 0x80000000) == 0) { if (bRunPause) { bAppDoStep = 1; } else { bAppDoFast = 1; } } break; } case VK_BACK: { bShowFPS = !bShowFPS; if (bShowFPS) { DisplayFPS(); } else { VidSKillShortMsg(); VidSKillOSDMsg(); } break; } case 'T': { if (kNetGame && hwndChat == NULL) { if (AppMessage(&Msg)) { ActivateChat(); } } break; } } } } else { if (Msg.message == WM_SYSKEYUP || Msg.message == WM_KEYUP) { switch (Msg.wParam) { case VK_MENU: continue; case VK_F1: bAppDoFast = 0; break; } } } // Check for messages for dialogs etc. if (AppMessage(&Msg)) { if (TranslateAccelerator(hScrnWnd, hAccel, &Msg) == 0) { if (hwndChat) { TranslateMessage(&Msg); } DispatchMessage(&Msg); } } } else { bRunPause ? wav_pause(false) : wav_pause(true); // No messages are waiting SplashDestroy(0); RunIdle(); } } RunExit(); MediaExit(); if (bRestartVideo) { MediaInit(); } } while (bRestartVideo); return 0; }