// se aplica la estrategia solo si el aplicador esta a una distancia // valida para disparar y no ser daniado por el proyectil public void Aplicar() { Casilla posicionDelProyectil = this.aplicador.Posicion(); int[] direccionDelProyectil = this.aplicador.Direccion(); int rangoDelProyectil = Proyectil.RANGO; try { Casilla posicionAdyacente = posicionDelProyectil.CasillaAdyacenteEnLaDireccion(direccionDelProyectil); bool puedeAplicarse = true; while (rangoDelProyectil >= 0 && puedeAplicarse) { if (!posicionAdyacente.EstaVacia()) puedeAplicarse = false; rangoDelProyectil--; posicionAdyacente = posicionAdyacente.CasillaAdyacenteEnLaDireccion(direccionDelProyectil); } if (puedeAplicarse) { Proyectil proyectil = new Proyectil(); Tablero.GetInstancia().AgregarEntidad(proyectil, posicionDelProyectil.X, posicionDelProyectil.Y); proyectil.Direccionar(this.aplicador.Direccion()); proyectil.CuandoPaseElTiempo(this.aplicador.PorcentajeDeRetardo()); proyectil.AnotarLanzador(this.aplicador); } else this.aplicador.NotificarExplosion(true); } catch (CasillaFueraDeRangoError e) { e.NoHacerNada(); this.aplicador.NotificarExplosion(true); } }
public override void DaniarPorProyectil(Proyectil bomba) { this.capturado = true; }
public override void DaniarPorProyectil(Proyectil bomba) { this.resistencia = this.resistencia - bomba.GetDanio(); }
public override void DaniarPorProyectil(Proyectil bomba) { this.durabilidad = this.durabilidad - bomba.GetDanio(); }
public abstract override void DaniarPorProyectil(Proyectil bomba);
public override void DaniarPorProyectil(Proyectil bomba) { }
public override void DaniarPorProyectil(Proyectil bomba) { this.vidas--; }
public abstract void DaniarPorProyectil(Proyectil proyectil);