int CreditsScene::exec() { m_doExit = false; LoopTiming times; times.start_common = SDL_GetTicks(); bool frameSkip = g_AppSettings.frameSkip; GlRenderer::setClearColor(0.0f, 0.0f, 0.0f, 1.0f); // Black background color while(m_isRunning) { times.start_common = SDL_GetTicks(); processEvents(); update(); times.stop_render = 0; times.start_render = 0; /**********************Process rendering of stuff****************************/ if((PGE_Window::vsync) || (times.doUpdate_render <= 0.0)) { times.start_render = SDL_GetTicks(); /**********************Render everything***********************/ render(); GlRenderer::flush(); GlRenderer::repaint(); times.stop_render = SDL_GetTicks(); times.doUpdate_render = frameSkip ? uTickf + (times.stop_render - times.start_render) : 0; } times.doUpdate_render -= uTickf; if(times.stop_render < times.start_render) { times.stop_render = 0; times.start_render = 0; } /****************************************************************************/ if((!PGE_Window::vsync) && (uTick > times.passedCommonTime())) SDL_Delay(uTick - times.passedCommonTime()); } return 0; }
int TitleScene::exec() { LoopTiming times; times.start_common = SDL_GetTicks(); bool frameSkip = g_AppSettings.frameSkip; menustates.clear(); menuChain.clear(); //Set black color clearer GlRenderer::setClearColor(0.f, 0.f, 0.f, 1.0f); for(int i = menuFirst; i < menuLast; i++) menustates[static_cast<CurrentMenu>(i)] = menustate(0, 0); setMenu(menu_main); //Hide mouse cursor PGE_Window::setCursorVisibly(false); while(m_isRunning) { //Refresh frameskip flag frameSkip = g_AppSettings.frameSkip; times.start_common = SDL_GetTicks(); processEvents(); processMenu(); update(); times.stop_render = 0; times.start_render = 0; /**********************Process rendering of stuff****************************/ if((PGE_Window::vsync) || (times.doUpdate_render <= 0.0)) { times.start_render = SDL_GetTicks(); /**********************Render everything***********************/ render(); if(!m_doExit) renderMouse(); GlRenderer::flush(); GlRenderer::repaint(); times.stop_render = SDL_GetTicks(); times.doUpdate_render = frameSkip ? uTickf + (times.stop_render - times.start_render) : 0; } times.doUpdate_render -= uTickf; if(times.stop_render < times.start_render) { times.stop_render = 0; times.start_render = 0; } /****************************************************************************/ if((!PGE_Window::vsync) && (uTick > times.passedCommonTime())) SDL_Delay(uTick - times.passedCommonTime()); } menu.clear(); PGE_Window::clean(); //Show mouse cursor PGE_Window::setCursorVisibly(true); return ret; }