// Este método desencadena la secuencia de ataque: Atacar_Enemigo -> Atacar_Jugador private void Atacar_Enemigo_Click(object sender, RoutedEventArgs e) { bool atk1, enem1; /* * Este timer será utilizado para controlar el tiempo de aparición * de los sprites en pantalla, así como la habilitación de los botones de ataque * * Ejemplo de secuencia de ataque: * El jugador ataca e inicia aquí el timer, a los 1500ms se dispara * el método del modelo invocado en el Tick, que elimina el sprite de su ataque * y detiene el timer. Se vuelve a reactivar cuando acto seguido el enemigo ataca. * Finalmente se detiene tras haber sido eliminado el sprite del ataque enemigo. */ timer = new DispatcherTimer(); timer.Tick += AnimacionPorTurno; timer.Interval = new TimeSpan(0, 0, 0, 0, 1500); timer.Start(); // Se determina el botón de los ataques que se ha pulsado if (sender.Equals(Atk1_Enem1)) { atk1 = true; enem1 = true; Atk1_Enem1.IsEnabled = false; Atk2_Enem1.IsEnabled = false; Atk1_Enem2.IsEnabled = false; Atk2_Enem2.IsEnabled = false; eliminado1 = modelo.AtacarAlEnemigo(miLienzo, enemigo1, jugador, atk1, enem1); } else if (sender.Equals(Atk2_Enem1)) { atk1 = false; enem1 = true; Atk1_Enem1.IsEnabled = false; Atk2_Enem1.IsEnabled = false; Atk1_Enem2.IsEnabled = false; Atk2_Enem2.IsEnabled = false; eliminado1 = modelo.AtacarAlEnemigo(miLienzo, enemigo1, jugador, atk1, enem1); } else if (sender.Equals(Atk1_Enem2)) { atk1 = true; enem1 = false; Atk1_Enem1.IsEnabled = false; Atk2_Enem1.IsEnabled = false; Atk1_Enem2.IsEnabled = false; Atk2_Enem2.IsEnabled = false; eliminado2 = modelo.AtacarAlEnemigo(miLienzo, enemigo2, jugador, atk1, enem1); } else if (sender.Equals(Atk2_Enem2)) { atk1 = false; enem1 = false; Atk1_Enem1.IsEnabled = false; Atk2_Enem1.IsEnabled = false; Atk1_Enem2.IsEnabled = false; Atk2_Enem2.IsEnabled = false; eliminado2 = modelo.AtacarAlEnemigo(miLienzo, enemigo2, jugador, atk1, enem1); } // Este flag es utilizado para controlar la reactivación de los botones y eliminar el sprite // del ataque enemigo. Se pone a true cuando la animacion del ataque enemigo ha terminado modelo.reactivarAtaques = false; // Este metodo resta visualmente los ataques fuertes disponibles del jugador modelo.RestarAtaquesFuertes(atkF1, atkF2, atkF3); }