예제 #1
0
    /// <summary>
    /// Permite jugar un ente para el bot.
    /// </summary>
    /// <returns><c>true</c>, if ente was jugared, <c>false</c> otherwise.</returns>
    bool JugarEnte()
    {
        bool movimientoHecho = false;

        for (int i = 0; i < NumEntesEnLaMesa() && !movimientoHecho; i++)
        {
            Ente cl = EntesEnLaMesa() [i];
            if (Controlador.Instance.EntePuedeUsarse(cl))
            {
                // attack a random target with a creature
                if (cl.GetType() == typeof(Magica))
                {
                    if (!((Magica)cl).EfectoActivado)
                    {
                        if (!Controlador.Instance.EsMagicaTrampa(cl))
                        {
                            Controlador.Instance.ActivarEfectoMagica(cl.ID);
                            movimientoHecho = true;
                        }
                    }
                }
                else
                {
                    Criatura criatura = (Criatura)cl;
                    if (criatura.PosicionCriatura.Equals(PosicionCriatura.ATAQUE))
                    {
                        if (!Controlador.Instance.CriaturaHaAtacado(criatura))
                        {
                            JugadorPartida enemigo = Controlador.Instance.OtroJugador(this);
                            if (enemigo.NumEntesEnLaMesa() > 0)
                            {
                                int  index        = Random.Range(0, enemigo.NumEntesEnLaMesa());
                                Ente enteObjetivo = enemigo.EntesEnLaMesa() [index];
                                if (enteObjetivo.GetType() == typeof(Criatura) || (enteObjetivo.GetType() == typeof(Magica) && !((Magica)enteObjetivo).EfectoActivado))
                                {
                                    Controlador.Instance.AtacarEnte(cl.ID, enteObjetivo.ID);
                                    movimientoHecho = true;
                                }
                            }
                            else
                            {
                                Controlador.Instance.AtacarJugador(cl.ID, enemigo.ID);
                                movimientoHecho = true;
                            }
                        }
                    }
                    else
                    {
                        Controlador.Instance.CambiarPosicionCriatura(criatura.ID);
                        movimientoHecho = true;
                    }
                }
            }
        }
        if (movimientoHecho)
        {
            InsertDelay(1f);
        }
        return(movimientoHecho);
    }
예제 #2
0
    /// <summary>
    /// Función que permite jugar una carta al jugador.
    /// </summary>
    public override void EmpezarEjecucionComanda()
    {
        //Eliminar la carta de la mano del jugador y elimina el gameobject
        HandVisual PlayerHand = Controlador.Instance.AreaJugador(p).manoVisual;
        //TODO se podria hacer que el id de la carta pase a ser el id de la criatura
        GameObject card = IDHolder.GetGameObjectWithID(cl.ID);

        PlayerHand.EliminarCarta(card);
        IDHolder.EliminarElemento(card.GetComponent <IDHolder>());
        GameObject.Destroy(card);
        //Permite la previsualizacion de cartas
        //HoverPreview.PrevisualizacionesPermitidas = true;
        OpcionesObjeto.PrevisualizacionesPermitidas = true;
        // Añade la carta en el tablero
        PlayerArea areaJugador = Controlador.Instance.AreaJugador(p);

        if (ente.GetType() == typeof(Magica))
        {
            areaJugador.tableVisual.AñadirMagica(cl.AssetCarta, ente.ID, tablePos);
        }
        else
        {
            if (((Criatura)ente).PosicionCriatura.Equals(PosicionCriatura.ATAQUE))
            {
                areaJugador.tableVisual.AñadirCriaturaAtaque(cl.AssetCarta, ente.ID, tablePos);
            }
            else
            {
                areaJugador.tableVisual.AñadirCriaturaDefensa(cl.AssetCarta, ente.ID, tablePos);
            }
        }
    }
예제 #3
0
    /// <summary>
    /// Muestra la accion (ataque, defensa, activar) correspondiente al ente en la batalla.
    /// </summary>
    /// <param name="idEnte">Identifier ente.</param>
    public void MostrarAccion(int idEnte)
    {
        Ente ente = Recursos.EntesCreadosEnElJuego[idEnte];

        if (ente.GetType() == typeof(Magica))
        {
            //Si la magica es de tipo trampa no debe salir la opcion de activar voluntariamente
            if (EntePreparado(ente) && !EsMagicaTrampa(ente))
            {
                AccionesPopUp.Instance.MostrarAccionEfecto();
                AccionesPopUp.Instance.RegistrarCallBack(ActivarEfectoMagica, idEnte);
            }
        }
        else
        {
            Criatura criatura = (Criatura)ente;
            if (criatura.PosicionCriatura.Equals(PosicionCriatura.ATAQUE))
            {
                if (!CriaturaHaAtacado(criatura))
                {
                    AccionesPopUp.Instance.MostrarAccionDefensa();
                }
            }
            else
            {
                AccionesPopUp.Instance.MostrarAccionAtaque();
            }
            AccionesPopUp.Instance.RegistrarCallBack(CambiarPosicionCriatura, idEnte);
        }
    }
예제 #4
0
    /// <summary>
    /// Mira si la criatura se encuentra en posicion de ataque.
    /// </summary>
    /// <returns><c>true</c>, if en posicion ataque was estaed, <c>false</c> otherwise.</returns>
    /// <param name="idEnte">Identifier ente.</param>
    public bool EstaEnPosicionAtaque(int idEnte)
    {
        Ente ente = Recursos.EntesCreadosEnElJuego[idEnte];

        if (ente.GetType() == typeof(Criatura))
        {
            return(((Criatura)ente).PosicionCriatura.Equals(PosicionCriatura.ATAQUE));
        }
        return(false);
    }
예제 #5
0
    /// <summary>
    /// Función que permite atacar a un ente.
    /// </summary>
    /// <param name="idAtacante">Identifier atacante.</param>
    /// <param name="idObjetivo">Identifier objetivo.</param>
    public void AtacarEnte(int idAtacante, int idObjetivo)
    {
        Ente atacante = Recursos.EntesCreadosEnElJuego[idAtacante];
        Ente objetivo = Recursos.EntesCreadosEnElJuego[idObjetivo];

        if (atacante.GetType() == typeof(Criatura))
        {
            ((Criatura)atacante).HaAtacado = true;
        }

        if (objetivo.GetType() == typeof(Criatura))
        {
            Criatura criaturaObjetivo = (Criatura)objetivo;
            AtacarCriatura((Criatura)atacante, criaturaObjetivo);
        }
        else
        {
            ActivarEfectoMagica(idObjetivo, idAtacante);
        }
    }
예제 #6
0
    /// <summary>
    /// Mira si el ente es mágico.
    /// </summary>
    /// <returns><c>true</c>, if magica was esed, <c>false</c> otherwise.</returns>
    /// <param name="idEnte">Identifier ente.</param>
    public bool EsMagica(int idEnte)
    {
        Ente ente = Recursos.EntesCreadosEnElJuego[idEnte];

        return(ente.GetType() == typeof(Magica));
    }