Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2014
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.38 KB | None | 0 0
  1. struct Evento {
  2.     bool valido;
  3.     bool izquierda;
  4.     bool derecha;
  5.     bool saltar;
  6.     bool parar;
  7.     bool salir;
  8.     bool disparar;
  9. };
  10.  
  11.     SDL_Event evento;
  12.     const Uint8* estadoTeclas;
  13.     std::stack<bool> pila;          //pila para registrar si apreto primero izquierda o derecha
  14.     Evento* nuevoEvento = new Evento(); //struct que mandamos al server
  15.     bool primeroIzquierda;          // true si apreto izquierda antes que derecha
  16.  
  17.     while( SDL_PollEvent(&evento) != 0 ) {
  18.                 if(evento.type == SDL_QUIT){
  19.                     nuevoEvento->salir = true;
  20.                 } else if(evento.type == SDL_KEYDOWN) {
  21.                     switch( evento.key.keysym.sym )
  22.                     {
  23.                     case SDLK_LEFT:
  24.                         pila.push(1);
  25.                         break;
  26.                     case SDLK_RIGHT:
  27.                         pila.push(0);
  28.                         break;
  29.                     case SDLK_PLUS:
  30.                         camara->setEvento(evento);
  31.                         break;
  32.                     case SDLK_MINUS:
  33.                         camara->setEvento(evento);
  34.                         break;
  35.                     default:
  36.                         break;
  37.                     }
  38.                 } else if(evento.type == SDL_KEYUP) {
  39.                     camara->setEvento(evento);
  40.                     switch (evento.key.keysym.sym) {
  41.                     case SDLK_r:
  42.                         break;
  43.                     case SDLK_LEFT:
  44.                         nuevoEvento->parar = true;
  45.                         break;
  46.                     case SDLK_RIGHT:
  47.                         nuevoEvento->parar = true;
  48.                         break;
  49.                     case SDLK_PLUS:
  50.                         camara->setEvento(evento);
  51.                         break;
  52.                     case SDLK_MINUS:
  53.                         camara->setEvento(evento);
  54.                         break;
  55.                     default:
  56.                         break;
  57.                     }
  58.                 }
  59.         }
  60.  
  61.         //limpiar pila, obtengo si apreto primero izq o derecha
  62.         while (!pila.empty()) {
  63.             primeroIzquierda = pila.top();
  64.             pila.pop();
  65.         }
  66.  
  67.         estadoTeclas = SDL_GetKeyboardState(NULL);
  68.         //Respuesta continua a teclas
  69.  
  70.         if(estadoTeclas[SDL_GetScancodeFromKey(SDLK_SPACE)]){
  71.             nuevoEvento->disparar = true;
  72.         }
  73.  
  74.         if(estadoTeclas[SDL_GetScancodeFromKey(SDLK_UP)]){
  75.             nuevoEvento->saltar = true;
  76.         }
  77.  
  78.         //si estan las dos teclas apretadas
  79.         if ((estadoTeclas[SDL_GetScancodeFromKey(SDLK_LEFT)]) & (estadoTeclas[SDL_GetScancodeFromKey(SDLK_RIGHT)])) {
  80.             if  (!primeroIzquierda)
  81.                 nuevoEvento->izquierda = true;
  82.             else
  83.                 nuevoEvento->derecha = true;
  84.         }
  85.         else {
  86.             //solo izquierda apretada
  87.             if( (estadoTeclas[SDL_GetScancodeFromKey(SDLK_LEFT)])  ){
  88.                 nuevoEvento->izquierda = true;
  89.             }
  90.             //solo derecha apretada
  91.             if( (estadoTeclas[SDL_GetScancodeFromKey(SDLK_RIGHT)]) ){
  92.                 nuevoEvento->derecha = true;
  93.             }
  94.         }
  95.  
  96.         nuevoEvento->valido = true;
  97.         //quedo seteado el struct nuevoEvento para mandar al sv
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement