void Controlador_game_over::loop(Input_base& input, float delta) { if(input.es_senal_salida() || input.es_input_down(Input::I_ESCAPE)) { abandonar_aplicacion(); } else { tiempo+=delta; alpha=(tiempo * 255) / 2.0f; if(alpha > 255) alpha=255; alpha_the_end=(tiempo * 255) / 5.0f; if(alpha_the_end > 255) alpha_the_end=255; rep_game_over.establecer_alpha(alpha); rep_the_end.establecer_alpha(alpha_the_end); if(input.hay_eventos_teclado_down() && alpha > 200) { solicitar_cambio_estado(Director_estados::t_estados::intro); } } }
Input_usuario Recogedor_input::recoger_input_usuario(Input_base& input) const { auto proc=[&input](Input_usuario::t_estados& e, int t) { if(input.es_input_down(t)) e=Input_usuario::t_estados::down; else if(input.es_input_pulsado(t)) e=Input_usuario::t_estados::pulsado; }; Input_usuario resultado; proc(resultado.usar, Input::I_USAR_SELECCION); proc(resultado.recargar_escudo, Input::I_RECARGA_ESCUDO); proc(resultado.estasis, Input::I_ESTASIS); if(input.es_input_pulsado(Input::I_DERECHA)) resultado.mov_horizontal=1; else if(input.es_input_pulsado(Input::I_IZQUIERDA)) resultado.mov_horizontal=-1; // else if(input.es_input_up(Input::I_DERECHA)) resultado.keyup_horizontal=1; // else if(input.es_input_up(Input::I_IZQUIERDA)) resultado.keyup_horizontal=-1; if(input.es_input_pulsado(Input::I_ARRIBA)) resultado.mov_vertical=-1; else if(input.es_input_pulsado(Input::I_ABAJO)) resultado.mov_vertical=1; // else if(input.es_input_pulsado(Input::I_ARRIBA)) resultado.keyup_vertical=-1; // else if(input.es_input_pulsado(Input::I_ABAJO)) resultado.keyup_vertical=1; return resultado; }
void Controlador_juego::loop(Input_base& input, float delta) { if(input.es_senal_salida() || input.es_input_down(Input::I_ESCAPE)) { abandonar_aplicacion(); } else { contador_tiempo.turno(delta); Recogedor_input RI; Input_usuario iu=RI.recoger_input_usuario(input); if(iu.usar) { Logica_disparador lp(proyectiles_enemigos, jugador); lp.insertar_disparo_jugador(proyectiles_jugador); } procesar_jugador(jugador, delta, iu); //TODO TODO TODO... if(jugador.acc_salud() <= 0.0) { abandonar_aplicacion(); } //TODO TODO TODO... if(!contador_tiempo.es_tiempo_restante()) { abandonar_aplicacion(); } controlar_y_efectuar_salida_sala(jugador); logica_proyectiles(delta); logica_mundo(delta); } }