Example #1
0
int main(int argc, char* argv[]){
  parse_args(argc, argv);
  
  init_ui();
  init_structs();
  init_plotter();

  start_debug();
  
  int x;
  while (!options.quit) {
    clear();
    set_terminal_size();    
    draw_axis();
    replot_functions();

    x = input();
    if(x == -1) break;

    refresh(); 
  } 

  clean_plotter();
  clean_ui();
  return 0;
}
Example #2
0
// handle input
void input(Level &level, Player &player) {
    SDL_Event ev;
    GLCoord newpos(player.pos);
    const Uint8 *keystate = SDL_GetKeyboardState(NULL);
    float speed = 0.1;
    if(keystate[SDL_SCANCODE_LSHIFT] || keystate[SDL_SCANCODE_RSHIFT])
        speed = 0.5;

    if(keystate[SDL_SCANCODE_W])
        move(newpos, GLCoord(0, speed, 0), player.cameraDirection);
    if(keystate[SDL_SCANCODE_A])
        move(newpos, GLCoord(-speed, 0, 0), player.cameraDirection);
    if(keystate[SDL_SCANCODE_S])
        move(newpos, GLCoord(0, -speed, 0), player.cameraDirection);
    if(keystate[SDL_SCANCODE_D])
        move(newpos, GLCoord(speed, 0, 0), player.cameraDirection);

    if(keystate[SDL_SCANCODE_LEFT])
        player.cameraDirection -= GLCoord(0, 0, 5);
    if(keystate[SDL_SCANCODE_RIGHT])
        player.cameraDirection += GLCoord(0, 0, 5);
    if(player.cameraDirection.z < 0)
        player.cameraDirection.z += 360;
    if(player.cameraDirection.z >= 360)
        player.cameraDirection.z -= 360;
    if(player.collisions) {
        newpos = check_collisions(level, player.pos, newpos);
    }
    player.pos = newpos;
    while(SDL_PollEvent(&ev)) {
        switch(ev.type) {
        case SDL_KEYDOWN:
            switch(ev.key.keysym.sym) {
            case SDLK_c:
                if(player.collisions) {
                    player.pos.z = 50;
                    glDisable(GL_FOG);
                }
                else {
                    player.pos.z = 0.5;
                    glEnable(GL_FOG);
                }
                player.collisions = !player.collisions;
                break;
            case SDLK_p:
                place(level, player.pos, player.cameraTarget - player.pos);
                break;
            case SDLK_x:
                dig(level, player.pos, player.cameraTarget - player.pos);
                break;
            case SDLK_q:
                clean_ui();
                exit(0);
            }
            break;
        }
    }
}