Advertisement
Guest User

Untitled

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