void renderMaze(SDL_Renderer* renderer, Maze* maze) { int i; SDL_Point c; SDL_Sprite* sprite = NULL; if (maze != NULL) { // Dessiner le sol sprite = SDL_CreateSprite("Assets/tileset.bmp",renderer); if (sprite != NULL) { sprite->rect.y = 0; sprite->rect.w = TILE_SIZE; sprite->rect.h = TILE_SIZE; for (c.y = 0; c.y < maze->size.y; c.y++) { for (c.x = 0; c.x < maze->size.x; c.x++) { sprite->pos.x = c.x * TILE_SIZE; sprite->pos.y = c.y * TILE_SIZE; sprite->rect.x = maze->tab[c.x][c.y] * TILE_SIZE; SDL_RenderSprite(renderer,sprite); } } } SDL_DestroySprite(sprite); // Dessiner les fromages for (i = 0; i < maze->numCheeses; i++) { renderCheese(renderer,maze->cheeses[i]); } // Dessiner les souris for (i = 0; i < maze->numMouses; i++) { renderMouse(renderer,maze->mouses[i]); } // Dessiner les chats for (i = 0; i < maze->numCats; i++) { renderCat(renderer,maze->cats[i]); } } }
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; }