Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- struct Evento {
- bool valido;
- bool izquierda;
- bool derecha;
- bool saltar;
- bool parar;
- bool salir;
- bool disparar;
- };
- SDL_Event evento;
- const Uint8* estadoTeclas;
- std::stack<bool> pila; //pila para registrar si apreto primero izquierda o derecha
- Evento* nuevoEvento = new Evento(); //struct que mandamos al server
- bool primeroIzquierda; // true si apreto izquierda antes que derecha
- while( SDL_PollEvent(&evento) != 0 ) {
- if(evento.type == SDL_QUIT){
- nuevoEvento->salir = true;
- } else if(evento.type == SDL_KEYDOWN) {
- switch( evento.key.keysym.sym )
- {
- case SDLK_LEFT:
- pila.push(1);
- break;
- case SDLK_RIGHT:
- pila.push(0);
- break;
- case SDLK_PLUS:
- camara->setEvento(evento);
- break;
- case SDLK_MINUS:
- camara->setEvento(evento);
- break;
- default:
- break;
- }
- } else if(evento.type == SDL_KEYUP) {
- camara->setEvento(evento);
- switch (evento.key.keysym.sym) {
- case SDLK_r:
- break;
- case SDLK_LEFT:
- nuevoEvento->parar = true;
- break;
- case SDLK_RIGHT:
- nuevoEvento->parar = true;
- break;
- case SDLK_PLUS:
- camara->setEvento(evento);
- break;
- case SDLK_MINUS:
- camara->setEvento(evento);
- break;
- default:
- break;
- }
- }
- }
- //limpiar pila, obtengo si apreto primero izq o derecha
- while (!pila.empty()) {
- primeroIzquierda = pila.top();
- pila.pop();
- }
- estadoTeclas = SDL_GetKeyboardState(NULL);
- //Respuesta continua a teclas
- if(estadoTeclas[SDL_GetScancodeFromKey(SDLK_SPACE)]){
- nuevoEvento->disparar = true;
- }
- if(estadoTeclas[SDL_GetScancodeFromKey(SDLK_UP)]){
- nuevoEvento->saltar = true;
- }
- //si estan las dos teclas apretadas
- if ((estadoTeclas[SDL_GetScancodeFromKey(SDLK_LEFT)]) & (estadoTeclas[SDL_GetScancodeFromKey(SDLK_RIGHT)])) {
- if (!primeroIzquierda)
- nuevoEvento->izquierda = true;
- else
- nuevoEvento->derecha = true;
- }
- else {
- //solo izquierda apretada
- if( (estadoTeclas[SDL_GetScancodeFromKey(SDLK_LEFT)]) ){
- nuevoEvento->izquierda = true;
- }
- //solo derecha apretada
- if( (estadoTeclas[SDL_GetScancodeFromKey(SDLK_RIGHT)]) ){
- nuevoEvento->derecha = true;
- }
- }
- nuevoEvento->valido = true;
- //quedo seteado el struct nuevoEvento para mandar al sv
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement