Example #1
0
    public void UpdateCardTexture(bool alwaysShow, BoardState board, Card card, CardStates State, string classType)
    {
        StringBuilder ImagePath = new StringBuilder(@"Textures/Cards/");
        ImagePath.Append(card.GetCardGFX());
        StringBuilder CardbackPath = new StringBuilder(@"Textures/");
        if (card.PlayerID == 0)
            CardbackPath.Append("Lannister cardback");
        else
            CardbackPath.Append("Stark cardback");

        int attack = board.GetCardAttack(card);
        string manaString = "<b>" + board.GetCardManaCost(card).ToString() + "</b>";
        string attackString = "<b>" + attack.ToString() + "</b>";
        string healthString = "<b>" + board.GetCardHealth(card).ToString() + "</b>";
        if (board.GetCardMaxHealth(card) > board.GetCardHealth(card))
            healthString = "<color=MAROON>" + healthString + "</color>";
           UpdateCard(alwaysShow || State == CardStates.InHand && card.PlayerID == 0,@"<b>" + card.GetName() + @"</b>", ImagePath.ToString(), CardbackPath.ToString(), manaString, attackString, attack > 0, healthString, State, classType);
    }
Example #2
0
    /*private void UpdateBoard()
    {
        foreach(Card card in Cards)
            if (card.State == CardStates.OnBoard && card.Health <= 0)
                DoDie (card.ID);
    }*/
    public static bool CanDoAction(BoardState InitialState, BoardAction Action)
    {
        if (Action.Type == "ACTION_DRAW_CARDS")
            return true;
        if (Action.Type == "ACTION_DEAL_DAMAGE")
            return true;
        if (Action.Type == "ACTION_START_TURN")
            return true;
        if (Action.Type == "ACTION_END_TURN")
            return true;
        if (Action.Type == "ACTION_PLAY_CARD")
        {
            Card ActorCard = InitialState.GetCard((int)Action.Actor);
            BoardState.Player Player = InitialState.Players[(int)Action.Player];
            return Player.CurrentMana >= InitialState.GetCardManaCost(ActorCard) && Action.Player == InitialState.ActivePlayer && ActorCard.State == CardStates.InHand;
        }
        if (Action.Type == "ACTION_ATTACK")
        {
            Card ActorCard = InitialState.GetCard((int)Action.Actor);
            int TargetID = (int)Action.Target;
            Card TargetCard = InitialState.GetCard(TargetID);

            if (ActorCard.CanAttack == false)
                return false;
            if (Action.Player != InitialState.ActivePlayer)
                return false;
            if (ActorCard.PlayerID == TargetCard.PlayerID)
                return false;
            if (InitialState.GetCardAttack(ActorCard) > 0 && (ActorCard.State == CardStates.Hero || ActorCard.State == CardStates.OnBoard) && (TargetCard.State == CardStates.Hero || TargetCard.State == CardStates.OnBoard))
                return true;

            return false;
        }
        if (Action.Type == "ACTION_DIE")
            return true;
        return true;
    }
Example #3
0
    private static double AI_GetPlayerScore(BoardState State, int playerID)
    {
        double score = 0;
        int opponentID;

        int heroHealth = State.GetCardHealth(State.GetCard(State.GetHeroID(playerID)));
        score += heroHealth * 0.5;

        if (playerID == 0)
            opponentID = 1;
        else
            opponentID = 0;

        int enemyHeroHealth = State.GetCardHealth(State.GetCard(State.GetHeroID(opponentID)));

        score = score - 0.65 * enemyHeroHealth;

        List<Card> boardCards = State.GetPlayerOnBoardMinions(playerID);
        foreach (Card card in boardCards)
        {
            int cardHealth = State.GetCardHealth(card);
            int cardAttack = State.GetCardAttack(card);

            score += 0.8 * cardHealth + 0.7 * cardAttack;
        }

        List<Card> enemyBoardCards = State.GetPlayerOnBoardMinions(opponentID);
        foreach (Card card in enemyBoardCards)
        {
            int cardHealth = State.GetCardHealth(card);
            int cardAttack = State.GetCardAttack(card);

            score = score - 2.0 * (cardAttack + cardHealth);
        }

        if (heroHealth < 1)
            score = Mathf.NegativeInfinity;
        if (enemyHeroHealth < 1)
            score = Mathf.Infinity;

        return score;
    }
Example #4
0
    void UpdateGraphics(BoardState Board, Card Card)
    {
        this.cardID = Card.ID;

        Hand.SetActive(false);
        Hero.SetActive(false);
        Minion.SetActive(false);

        #region build mana string
        StringBuilder manaString = new StringBuilder("<b>");
        int mana = Board.GetCardManaCost(Card);
        manaString.Append(mana);
        manaString.Append("</b>");
        #endregion
        #region build attack string
        StringBuilder attackString = new StringBuilder("<b>");
        int attack = Board.GetCardAttack(Card);
        attackString.Append(attack);
        attackString.Append("</b>");
        #endregion
        #region build health string
        StringBuilder healthString = new StringBuilder("<b>");
        int health = Board.GetCardHealth(Card);
        bool isDamaged = false;

        if (health < Card.GetBaseMaxHealth())
            isDamaged = true;

        if (isDamaged)
            healthString.Append("<color=RED>");

        healthString.Append(health);

        if (isDamaged)
            healthString.Append("</color>");

        healthString.Append("</b>");
        #endregion
        #region build name string
        StringBuilder nameString = new StringBuilder();
        nameString.Append(Card.GetName());
        #endregion
        #region build texture path
        StringBuilder texturePath = new StringBuilder(@"Textures/Cards");
        texturePath.Append(Card.GetCardGFX());
        #endregion

        if (Card.State == CardStates.Hero)
        {
            Hero.SetTexturePath(texturePath.ToString());
            Hero.SetAttack(attackString.ToString(), attack != 0);
            Hero.SetHealth(healthString.ToString(), true);
            Hero.SetActive(true);
        }
        else if (Card.State == CardStates.InHand || Card.State == CardStates.InDeck)
        {
            Hand.SetTexturePath(texturePath.ToString());
            Hand.SetMana(manaString.ToString());
            Hand.SetAttack(attackString.ToString());
            Hand.SetHealth(healthString.ToString());
            Hand.SetName(nameString.ToString());
            Hand.SetActive(true);
        }
        else if (Card.State == CardStates.OnBoard)
        {
            Minion.SetTexturePath(texturePath.ToString());
            Minion.SetTexturePath(Card.GetCardGFX());
            Minion.SetAttack(attackString.ToString());
            Minion.SetHealth(healthString.ToString());
        }
    }