예제 #1
0
 public Casilla(Punto pos)
 {
     this.posicion = pos;
     articuloContenido = null;
     transitandoEnCasilla = new List<IMovible>();
     explosivo = null;
 }
예제 #2
0
 public BombaVista(Vector2 pos, Explosivo bomba)
     : base(pos)
 {
     explosivo = bomba;
     setSpriteName();
     vivo = true;
 }
예제 #3
0
 public ProyectilVista(Vector2 pos, float rot, Explosivo bomba)
     : base(pos)
 {
     explosivo = (Proyectil)bomba;
     spriteIndex = MapaVista.Instancia().ProyectilSprite;
     rotacion = rot;
     velocidad = 0.5f;
     vivo = true;
 }
예제 #4
0
 public void AlojarExplosivo(Explosivo exp)
 {
     this.Ambiente.ObtenerCasilla(exp.Posicion).PlantarExplosivo(exp);
     this.dependientesDelTiempo.Add(exp);
 }
예제 #5
0
 public void QuitarExplosivo()
 {
     this.explosivo = null;
 }
예제 #6
0
 public void PlantarExplosivo(Explosivo unExplosivo)
 {
     this.explosivo=unExplosivo;
 }
예제 #7
0
 private List<Punto> CalcularCasillerosExplotados(Explosivo explosivo)
 {
     List<Punto> listaDevolucion = new List<Punto>();
     listaDevolucion.Add(explosivo.Posicion);
     this.AgregarCasilleros(listaDevolucion, explosivo.OndaExpansiva, explosivo.Posicion, DERECHA);
     this.AgregarCasilleros(listaDevolucion, explosivo.OndaExpansiva, explosivo.Posicion, IZQUIERDA);
     this.AgregarCasilleros(listaDevolucion, explosivo.OndaExpansiva, explosivo.Posicion, ARRIBA);
     this.AgregarCasilleros(listaDevolucion, explosivo.OndaExpansiva, explosivo.Posicion, ABAJO);
     return listaDevolucion;
 }
예제 #8
0
        public void ManejarExplosion(Explosivo explosivo)
        {
            List<Punto> puntosAfectados = CalcularCasillerosExplotados(explosivo);
            this.ObtenerCasilla(explosivo.Posicion).QuitarExplosivo();

            for (int i = 0; i < (puntosAfectados.Count); i++)
            {
                Casilla.Casilla casillaAux = this.ObtenerCasilla(puntosAfectados[i]);
                explosivo.Daniar(casillaAux.Estado);
                if (casillaAux.Estado.Destruido())
                    casillaAux.Estado = new Pasillo();
                for (int j = 0; j < casillaAux.TransitandoEnCasilla.Count; j++)
                {
                    if (casillaAux.TransitandoEnCasilla[j].EsDaniable())
                        explosivo.Daniar((IDaniable)casillaAux.TransitandoEnCasilla[j]);
                }

                int iterador = casillaAux.TransitandoEnCasilla.Count;
                while (--iterador >= 0)
                {
                    if ((casillaAux.TransitandoEnCasilla[iterador].EsDaniable()))
                    {
                        if (((IDaniable)casillaAux.TransitandoEnCasilla[iterador]).Destruido())
                            casillaAux.TransitandoEnCasilla.RemoveAt(iterador);
                    }
                }

            }
        }