void run()
{
    Uint32 currentTicks = 0;

    while(RUNNING)
    {
        Uint32 currentTicks = SDL_GetTicks();

        while(SDL_PollEvent(&event))
        {
            if(event.type == SDL_QUIT)
            {
                RUNNING = false;
            }

            if(event.type == SDL_KEYDOWN)
            {
                if(event.key.keysym.sym == SDLK_ESCAPE)
                {
                    RUNNING = false;
                }
            }

            Player_eventInput();
        }

        Player_gameInput();
        Map_update(); // includes entities

        screen_clear();

        Map_render(); // includes entities

        screen_display();

        if(SDL_GetTicks() - currentTicks < (1000 / GAME_FPS))
        {
            SDL_Delay((1000 / GAME_FPS) - (SDL_GetTicks() - currentTicks));
        }
    }

    SDL_DestroyRenderer(renderer);
    SDL_DestroyWindow(window);
}
Beispiel #2
0
static void Game_renderRaceView(const Game *g, size_t view_index) {
    const View *v = g->race.views + view_index;

    View_apply(v);

    Map_render(&g->race.map);
    size_t i;
    for(i=0 ; i<g->race.ship_count ; ++i) {
        Ship_render(g->race.ships+i);
        if(i==view_index) {
            Map_renderCheckpoints(&g->race.map, g->race.ships[i].next_checkpoint_index);
            Ship_renderGuides(g->race.ships+i);
        }
    }
    Game_renderWorldMouseCursor(g);

    View gui_view;
    gui_view.zoom = 1.f;
    gui_view.ortho_right = 1.f;
    gui_view.center.x = 0.f;
    gui_view.center.y = 0.f;
    gui_view.tilt = 0;
    gui_view.viewport_pos = v->viewport_pos;
    gui_view.viewport_size = v->viewport_size;
    char str[16];
    snprintf(str, sizeof(str), "speed: %4u", 
            (unsigned)(1000.f*sqrtf(
                g->race.ships[view_index].physic_solid.speed.x*g->race.ships[view_index].physic_solid.speed.x
              + g->race.ships[view_index].physic_solid.speed.y*g->race.ships[view_index].physic_solid.speed.y
            )));
    View_apply(&gui_view);
    glPushMatrix();
    glTranslatef(.8f-Monospace_getStringWidth(str, .1f)*.5f, -View_getOrthoTop(&gui_view)+.1f, 0.f);
    Monospace_renderCenteredString(str, .1f);
    glPopMatrix();
}