void GamePlay::Loop(sf::RenderWindow* target,TextureManager* textureManager) { sf::Event MyEvent; MyTimer fps = MyTimer(1000/resource::consts::FPS); int frame = 0; fps.StartTimer(); int key_down = 0; while(_running) { if(frame % resource::consts::FPS == 0) { while(target->GetEvent(MyEvent)) { _player->UpdateKey(MyEvent,_offSet,_map); switch(MyEvent.Type) { case sf::Event::KeyPressed: key_down = 1; switch(MyEvent.Key.Code) { case sf::Key::Escape: _running = false; break; } break; case sf::Event::KeyReleased: key_down = false; break; } } if(!key_down) { _player->UpdateVelocity(_map); } target->Clear(); _player->UpdatePosition(); _player->CollosionLogic(_map); Render(target,textureManager); } target->Display(); frame++; if( fps.GetTicks() < 1000 / resource::consts::FPS ) { //Sleep the remaining frame time // SDL_Delay( ( 1000 / resource::consts::FPS ) - fps.GetTicks() ); } } }