Exemplo n.º 1
0
 void watch(const FuncT& f) {
     for(;;) {
         wait_for_data();
         f(
             wetness(),
             temperature(),
             atmospheric_pressure(),
             illumination()
         );
     }
 }
Exemplo n.º 2
0
Arquivo: cgii.c Projeto: chamun/CGII
void
draw(void)
{
    glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );

    /* 3D */
    glEnable(GL_DEPTH_TEST);
    glEnable(GL_LIGHTING);
    glEnable(GL_LIGHT0);
    glEnable(GL_COLOR_MATERIAL);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective( 60, 1, 0.05, WORLD_SIDE * 2 * 2.4142);

    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    illumination();

    gluLookAt(compass[P].x, PLAYER_HEIGHT, compass[P].y,
              compass[W].x, PLAYER_HEIGHT, compass[W].y,
              0, 1, 0);

    drawEnv();
    drawCoins();
    drawFixeds();

    glDisable(GL_COLOR_MATERIAL);
    glDisable(GL_LIGHT0);
    glDisable(GL_LIGHTING);
    glDisable(GL_DEPTH_TEST);

    /* 2D */

    /* Isso aqui só precisa ser chamado uma vez, e quando a janela muda de
     * tamanho */
    glViewport(0, 0, WINDOW_SIZE, WINDOW_SIZE);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluOrtho2D(0, WINDOW_SIZE, WINDOW_SIZE, 0);

    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    if(playing) {
        drawScoreBoard(20,20);
        if(map)
            drawMiniMap(3.5f * MAP_SIZE, 3.5f * MAP_SIZE);
    } else
        drawEnd();

    glutSwapBuffers();
}