Пример #1
0
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]);
        }
    }
}
Пример #2
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;
}