WPARAM MainLoop() { MSG msg; // This is where we load our accelerators for keyboard shortcuts HACCEL hAccelTable = LoadAccelerators(g_hInstance, MAKEINTRESOURCE(IDR_ACCELERATOR1)); while(g_Player.IsAlive()) // Loop until the player is dead { // Check if there was a message if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { if(msg.message == WM_QUIT) // If the message was to quit break; // Check if there was keyboard command - if not, process messages like normal if(!TranslateAccelerator(g_hWnd, hAccelTable, &msg)) { TranslateMessage(&msg); // Find out what the message does DispatchMessage(&msg); // Execute the message } // Here is where we handle the main game input HandleGameInput(); // Let's draw the map when we need to draw (if the draw flag == true). g_Map.Draw(); // Just like the g_Map.Draw() command, we will attempt to draw the menu, but it // will only be draw if it's draw flag is set to true. This is the main menu. g_Menu.Draw(); // Swap the backbuffers to display the bitmaps to the screen g_Buffer.SwapBackBuffer(FALSE); } // We want the Npcs to freely walk around so we need to move them every frame g_Map.MoveNpcs(); // Move the monsters randomly around the map g_Map.MoveMonsters(); } // If the player died because they were killed, let's display a death sound if(!g_Player.IsAlive()) { // We use PlaySound() to play our .wav files PlaySound("Death.wav", NULL, SND_FILENAME | SND_ASYNC); g_Menu.DrawMessageBox("You have perished!"); Sleep(1000); } // Clean up and free all allocated memory DeInit(); // Return from the program return(msg.wParam); }
void DoMenu( CMenu& a_roMenu ) { Audio->PlaySample( "MENU_START" ); MakeMenuBackground(); a_roMenu.Clear(); a_roMenu.Draw(); a_roMenu.Run(); if ( !g_oState.m_bQuitFlag ) { Audio->PlaySample("MENU_END"); } if ( NULL != poBackground ) { SDL_FreeSurface( poBackground ); poBackground = NULL; } }