예제 #1
0
 protected override void RestauraEspecial()
 {
     if (retirada)
     {
         Terreno tablero = FindObjectOfType <Terreno>();
         int     fila    = tablero.GetFilas() - 1;
         if (!aliado)
         {
             fila = 0;
         }
         for (int i = 0; i < tablero.GetColumnas() - 1; i++)
         {
             if (!tablero.GetCasilla(fila, i).EstaOcupada())
             {
                 tablero.GetCasilla(casillaX, casillaZ).Desocupar();
                 tablero.GetCasilla(fila, i).Ocupar(this);
                 SetPos(fila, i);
                 break;
             }
         }
         log.LanzaLog("A Yaiza se le ha pasado el cabreo por fin.");
         retirada = false;
         hombroDch.eulerAngles = initialHombroDchRot;
         hombroIzq.eulerAngles = initialHombroIzqRot;
         codoDch.eulerAngles   = initialCodoDchRot;
         codoIzq.eulerAngles   = initialCodoIzqRot;
     }
 }
예제 #2
0
    public void GenerateEnemies()
    {
        gm = FindObjectOfType <GameManager>();
        if (gm)
        {
            if (gm.GetJugadoresEnemigos().Count == 0)
            {
                GenerateRandomEnemies(); // enemigos aleatorios para el solo play
            }
            else
            {
                // enemigos escogidos en multiplayer
                int n = 0;
                foreach (Personaje p in gm.GetJugadoresEnemigos())
                {
                    gestor.SetEnemigo(Instantiate(p), n);
                    int z;
                    do
                    {
                        z = Random.Range(0, tablero.GetColumnas());
                    } while (tablero.GetCasilla(0, z).EstaOcupada());

                    tablero.GetCasilla(0, z).Ocupar(gestor.GetEnemigo(n));

                    gestor.GetEnemigo(n).SetPos(0, z);
                    gestor.GetEnemigo(n).Girar();
                    gestor.GetEnemigo(n).SetEnemigo();
                    gestor.GetEnemigo(n).SetColor(rojoEnemigo);
                    n++;
                }
            }
        }
    }
예제 #3
0
 public void ColocaAliados(int[] posicionesZ)
 {
     for (int i = 0; i < aliados.Length; i++)
     {
         tablero.GetCasilla(aliados[i].GetCasillaX(), aliados[i].GetCasillaZ()).Desocupar();
         aliados[i].SetPos(aliados[i].GetCasillaX(), posicionesZ[i]);
         tablero.GetCasilla(aliados[i].GetCasillaX(), aliados[i].GetCasillaZ()).Ocupar(aliados[i]);
     }
     if (GetPersonajeTurno().IsAliado() && gm.IsAliado())
     {
         gestorAcciones.PreparaTurno();
     }
 }
예제 #4
0
    public override bool AnimacionAE(Personaje objetivo)
    {
        if (!retirada)
        {
            retirada = true;
            //PlaySonidoAE();
            panelHp.SetActive(false);
            if (aliado)
            {
                transform.position = new Vector3(35, 0, 9);
            }
            else
            {
                transform.position = new Vector3(-9, 0, 9);
            }
            hombroDch.Rotate(0, -70, 10);
            hombroIzq.Rotate(0, 70, -10);
            codoDch.Rotate(95, 0, 15);
            codoIzq.Rotate(110, 0, -20);

            FindObjectOfType <Camara>().EnfocaCamaraAE(transform.position, aliado);
            Terreno tablero = FindObjectOfType <Terreno>();
            tablero.GetCasilla(casillaX, casillaZ).Desocupar();
        }
        else
        {
            avanzado += Time.deltaTime;
            if (avanzado > 2)
            {
                Restaura();
                log.LanzaLog("Yaiza se ha cansado y no quiere jugar más.");
                turnosInmune     = 2;
                turnosParalizado = 2;
                jugadaUlti       = true;
                if (aliado)
                {
                    foreach (var p in FindObjectOfType <GestorPartida>().GetAllAliados())
                    {
                        p.BonificacionDamage(2);
                    }
                }
                else
                {
                    foreach (var p in FindObjectOfType <GestorPartida>().GetAllEnemigos())
                    {
                        p.BonificacionDamage(2);
                    }
                }
                return(true);
            }
        }
        return(false);
    }
예제 #5
0
    private void MueveCasilla(int x, int z)
    {
        int movs = gestorPartida.GetPersonajeTurno().movimientos;

        if (movimientosEsteTurno == movs)
        {
            return;
        }

        int oldPosX = gestorPartida.GetPersonajeTurno().GetCasillaX();
        int oldPosZ = gestorPartida.GetPersonajeTurno().GetCasillaZ();
        int newPosX = oldPosX + x;
        int newPosZ = oldPosZ + z;

        if (tablero.PuedeMoverACasilla(newPosX, newPosZ))
        {
            movimientosEsteTurno++;
            gestorPartida.GetPersonajeTurno().SetPos(newPosX, newPosZ);

            tablero.GetCasilla(oldPosX, oldPosZ).Desocupar();
            tablero.GetCasilla(newPosX, newPosZ).Ocupar(gestorPartida.GetPersonajeTurno());
            tablero.RestauraTablero();
            if (gm.IsAliado() == gestorPartida.GetPersonajeTurno().IsAliado())
            {
                tablero.PintaCasillasAmarillas(newPosX, newPosZ, movs - movimientosEsteTurno);
            }
        }
    }
예제 #6
0
    private void IrALaCama()
    {
        Terreno tablero = FindObjectOfType <Terreno>();
        int     fila    = tablero.GetFilas() - 1;

        if (!aliado)
        {
            fila = 0;
        }
        for (int i = 0; i < tablero.GetColumnas() - 1; i++)
        {
            if (!tablero.GetCasilla(fila, i).EstaOcupada() &&
                !tablero.GetCasilla(fila, i + 1).EstaOcupada())
            {
                tablero.GetCasilla(casillaX, casillaZ).Desocupar();
                tablero.GetCasilla(fila, i).Ocupar(this);
                tablero.GetCasilla(fila, i + 1).Ocupar(this);
                SetPos(fila, i);
                FindObjectOfType <Camara>().EnfocaCamaraAE(transform.position + new Vector3(0, -0.5f, 1.5f), aliado);
                break;
            }
        }
    }