void Menu::manejarEvento(SDL_Event &evento) { if (evento.type == SDL_MOUSEBUTTONDOWN) { switch (Boton::obtenerBotonSeleccionado(Menu::botones, NUM_BOTONES)) { case BOTON_INICIAR: ReproducirSonido(Snd_Click_boton, 100, 0, 0); irAEscena("nueva-partida"); break; case BOTON_CONECTAR: ReproducirSonido(Snd_Click_boton, 100, 0, 0); irAEscena("conectar"); break; case BOTON_EDITAR: ReproducirSonido(Snd_Click_boton, 100, 0, 0); irAEscena("editar"); break; case BOTON_SALIR: ReproducirSonido(Snd_Click_boton, 100, 0, 0); terminarJuego(); break; default: ; } } }
int tecla_pulsada(void) { float x,y,z; Uint8 *keys; keys = SDL_GetKeyState(NULL); if (keys[SDLK_ESCAPE]) return -1; if (keys[SDLK_w]) { velocidad_r+=0.005f; } if (keys[SDLK_s]) { velocidad_r-=0.006f; if (velocidad_r<1.0f) velocidad_r=1.0f; } if (keys[SDLK_e]) { SDL_WarpMouse(config.SCREEN_SIZE_X/2,config.SCREEN_SIZE_Y/2); } if (keys[SDLK_q]) { SDL_WarpMouse(320,240); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glGetFloatv(GL_MODELVIEW_MATRIX,&camara[0][0]); camara[2][2]=1.0f; camara[3][2]=-1.0f; } if (keys[SDLK_SPACE]) { if (disparo_laser.ttl==0) { memcpy(&disparo_laser.posicion[0],&camara[3][0],sizeof(float)*3); memcpy(&disparo_laser.direccion[0],&camara[2][0],sizeof(float)*3); disparo_laser.posicion[0]+=(0.1f* disparo_laser.direccion[0]); disparo_laser.posicion[1]+=(0.1f* disparo_laser.direccion[1]); disparo_laser.posicion[2]+=(0.1f* disparo_laser.direccion[2]); disparo_laser.ttl=get_timer(); disparo_laser.color[0]=0.0f; disparo_laser.color[1]=0.0f; disparo_laser.color[2]=1.0f; disparo_laser.color[3]=1.0f; /* Reproducimos sonido laser */ if ( audio_on == 1){ ReproducirSonido ( 0,disparo_laser.posicion, disparo_laser.direccion,1.0f, 1.0f,10.0f, AL_FALSE); } } } if (keys[SDLK_p]) { glShadeModel(GL_FLAT); } if (keys[SDLK_o]) { glShadeModel(GL_SMOOTH); } if (keys[SDLK_m]) { if ( musica_on == 0 ){ ReproducirMusica ( ); } } if (keys[SDLK_n]){ if ( audio_on == 1 ){ ReproducirSonido ( 2, PosSonidoNave1, VelSonidoNave1 ,1.0f,1.0f,0.0f,AL_TRUE); } } if (keys[SDLK_a]) { glMatrixMode(GL_MODELVIEW); x=camara[3][0]; y=camara[3][1]; z=camara[3][2]; camara[3][0]=0; camara[3][1]=0; camara[3][2]=0; camara[3][3]=1; glLoadMatrixf(&camara[0][0]); glRotatef(-60.f*intervalo,0.0f,0.0f,1.0f); glGetFloatv(GL_MODELVIEW_MATRIX,&camara[0][0]); camara[3][0]=x; camara[3][1]=y; camara[3][2]=z; camara[3][3]=1; } if (keys[SDLK_d]) { glMatrixMode(GL_MODELVIEW); x=camara[3][0]; y=camara[3][1]; z=camara[3][2]; camara[3][0]=0; camara[3][1]=0; camara[3][2]=0; camara[3][3]=1; glLoadMatrixf(&camara[0][0]); glRotatef(60.f*intervalo,0.0f,0.0f,1.0f); glGetFloatv(GL_MODELVIEW_MATRIX,&camara[0][0]); camara[3][0]=x; camara[3][1]=y; camara[3][2]=z; camara[3][3]=1; } return 0; }