void Game::mainloop() { this->initialize(); SDL_Event event; bool done = false; while(!done) { while (SDL_PollEvent(&event)) { switch(event.type) { case SDL_USEREVENT: handleUserEvents(&event); break; case SDL_KEYDOWN: // Handle any key presses here. break; case SDL_MOUSEBUTTONDOWN: // Handle mouse clicks here. break; case SDL_QUIT: done = true; break; default: break; } // End switch } this->updateWorld(); this->m_r->renderScene(this->m_sr); } // End while }
// Listens to events during the whole time of the application // and distributes corresponding tasks void Application::eventLoop() { SDL_Event event; float test = 0.0f; while( (!_done) && (SDL_WaitEvent( &event )) ) { switch(event.type) { case SDL_USEREVENT: handleUserEvents( &event ); break; case SDL_KEYUP: handleKeyUpEvents( &event.key.keysym ); break; case SDL_KEYDOWN: handleKeyDownEvents( &event.key.keysym ); break; case SDL_VIDEORESIZE: resize( event.resize.w, event.resize.h ); break; case SDL_QUIT: _done=true; break; // Manage the mouse motion case SDL_MOUSEMOTION: _xMousePosition += (float)event.motion.xrel/(float)_windowWidth * 1.2f; test = _yMousePosition - (float)event.motion.yrel/(float)_windowHeight * 1.2f; if((test>-M_PI) && (test<0.0f)) _yMousePosition -= (float)event.motion.yrel/(float)_windowHeight * 1.2f; break; default: break; } } }