Example #1
0
    public void ReplaceAThing()
    {
        thing.SetToNothing();
        board.thingInfoArea.text = "Replace a Thing";
        List <ActionCard> playerCards = player.hand.GetAllCards();

        if (playerCards.Count == 0)
        {
            return;
        }
        ActionCard card = playerCards[Random.Range(0, playerCards.Count)];

        playerCards.Remove(card);
        MoveCard(card.gameObject, "Graveyard", 3, 0.5f);
        GameObject      cardObj    = Instantiate(board.actionCardPrefab, board.deck.transform);
        Data_ActionCard cardData   = DeckManager.instance.DealActionCard();
        ActionCard      actionCard = cardObj.GetComponent <ActionCard>();

        actionCard.SetData(cardData);
        cardObj.SetActive(false);
        actionCard.interactable = true;
        MoveCard(cardObj, "PlayerHand", 2, 0.5f);
        Debug.Log("Player has " + enemy.hand.GetCardCount() + " cards");
        player.hand.AddCard(actionCard);
    }
Example #2
0
 public void SetData(Data_ActionCard data)
 {
     this.data                = data;
     display.cardName.text    = data.cardName;
     display.manaCost.text    = data.manaCost.ToString();
     display.icon.sprite      = data.icon;
     display.description.text = data.description;
 }
Example #3
0
    public void GetAThing()
    {
        thing.SetToNothing();
        board.thingInfoArea.text = "Get a Thing";
        GameObject      cardObj    = Instantiate(board.actionCardPrefab, board.deck.transform);
        Data_ActionCard cardData   = DeckManager.instance.DealActionCard();
        ActionCard      actionCard = cardObj.GetComponent <ActionCard>();

        actionCard.SetData(cardData);
        cardObj.SetActive(false);
        actionCard.interactable = true;
        MoveCard(cardObj, "PlayerHand", 2, 0.5f);
        Debug.Log("Player has " + enemy.hand.GetCardCount() + " cards");
        player.hand.AddCard(actionCard);
    }
Example #4
0
    public bool EnemyPlay(ActionCard card)
    {
        Data_ActionCard cardData = card.GetData();

        if (curState == GameState.ENEMY_TURN && enemy.mp.GetValue() >= cardData.manaCost)
        {
            AudioManager.instance.PlaySound("Use Card");
            MoveCardCenter(card.gameObject, 2, 0.8f, true);
            MoveCard(card.gameObject, "Graveyard", 2, 0.5f);
            enemy.mp.UpdateValue(-cardData.manaCost);
            enemy.hand.RemoveCard(card);
            return(true);
        }
        return(false);
    }
Example #5
0
    private void LoadActionCards()
    {
        chances     = new List <int>();
        actionCards = new List <Data_ActionCard>();
        TextAsset dataFile = Resources.Load <TextAsset>("Data/actioncards");

        string[] lines = dataFile.text.Split('\n');
        totalChance = 0;
        int  manaCost    = 0;
        int  enemyHPLoss = 0;
        int  enemyMPLoss = 0;
        int  selfHPRegen = 0;
        int  selfMPRegen = 0;
        bool evasion     = false;
        int  block       = 0;

        for (int i = 1; i < lines.Length; i++)
        {
            Debug.Log(i);
            string[] line = lines[i].Split('\t');
            if (line.Length != 10)
            {
                continue;
            }
            Sprite icon = Resources.Load <Sprite>("Sprites/" + line[0]);
            totalChance += Convert.ToInt32(line[3]);
            manaCost     = Convert.ToInt32(line[2]);
            enemyHPLoss  = Convert.ToInt32(line[4]);
            enemyMPLoss  = Convert.ToInt32(line[5]);
            selfHPRegen  = Convert.ToInt32(line[6]);
            selfMPRegen  = Convert.ToInt32(line[7]);
            block        = Convert.ToInt32(line[9]);
            if (Convert.ToInt32(line[8]) == 0)
            {
                evasion = false;
            }
            else
            {
                evasion = true;
            }
            Data_ActionCard card = new Data_ActionCard(line[0], icon, line[1], manaCost, enemyHPLoss, enemyMPLoss, selfHPRegen, selfMPRegen, evasion, block);
            actionCards.Add(card);
            chances.Add(totalChance);
        }
    }
    public int GetMinimumManaCost()
    {
        if (cards.Count == 0)
        {
            return(0);
        }
        int min = cards[0].GetData().manaCost;

        foreach (ActionCard card in cards)
        {
            Data_ActionCard cardData = card.GetData();
            if (cardData.manaCost < min)
            {
                min = cardData.manaCost;
            }
        }
        return(min);
    }
Example #7
0
    public void DealCard(int target)
    {
        int count = Mathf.Min(round, 4);

        if (target == 0)
        {
            count -= player.hand.GetCardCount();
            if (round < 5)
            {
                count--;
            }
            //Debug.Log("Player " + target + " has " + player.hand.GetCardCount() + "cards.");
        }
        else
        {
            count -= enemy.hand.GetCardCount();
            //Debug.Log("Player " + target + " has " + enemy.hand.GetCardCount() + "cards.");
        }
        Debug.Log("Deal " + count + " cards to Player " + target);
        for (int i = 0; i < count; i++)
        {
            GameObject      cardObj    = Instantiate(board.actionCardPrefab, board.deck.transform);
            Data_ActionCard cardData   = DeckManager.instance.DealActionCard();
            ActionCard      actionCard = cardObj.GetComponent <ActionCard>();
            actionCard.SetData(cardData);
            cardObj.SetActive(false);
            if (target == 0)
            {
                actionCard.interactable = true;
                MoveCard(cardObj, "PlayerHand", 2, 0.5f);
                Debug.Log("Player has " + enemy.hand.GetCardCount() + " cards");
                player.hand.AddCard(actionCard);
            }
            else
            {
                MoveCard(cardObj, "EnemyHand", 2, 0.5f);
                enemy.hand.AddCard(actionCard);
                Debug.Log("Enemy has " + enemy.hand.GetCardCount() + " cards");
            }
        }
    }
Example #8
0
    public bool PlayerPlay(ActionCard card)
    {
        if (thingPanel.activeSelf)
        {
            return(false);
        }
        Data_ActionCard cardData = card.GetData();

        if (curState == GameState.PLAYER_TURN && player.mp.GetValue() >= cardData.manaCost)
        {
            AudioManager.instance.PlaySound("Use Card");
            card.interactable = false;
            MoveCardCenter(card.gameObject, 2, 0.8f, true);
            MoveCard(card.gameObject, "Graveyard", 2, 0.5f);
            player.mp.UpdateValue(-cardData.manaCost);
            player.hand.RemoveCard(card);
            Debug.Log("You use '" + card.GetData().cardName + "', \nand he now has " + player.hand.GetCardCount() + " cards.");
            return(true);
        }
        return(false);
    }
Example #9
0
    public void CardMotionUpdate()
    {
        CardMotion cardMotion = motionQueue.Peek();

        if (cardMotion.t < 1)
        {
            cardMotion.t += Time.deltaTime * gameSpeed * cardMotion.motionSpeed;
            // constraint it to be less than 1
            if (cardMotion.t > 1)
            {
                cardMotion.t = 1;
            }
            // Interporlation
            cardMotion.onMotion.position = (1 - cardMotion.t) * cardMotion.initialPosition + cardMotion.t * cardMotion.targetPosition;
        }
        // staying
        else if (cardMotion.stayTime > 0)
        {
            cardMotion.stayTime -= Time.deltaTime;
        }
        // end motion
        else
        {
            if (cardMotion.applyEffect)
            {
                Data_ActionCard card = cardMotion.onMotion.GetComponent <ActionCard>().GetData();
                Player          cardUser, opponent;
                if (curState == GameState.PLAYER_TURN)
                {
                    cardUser = player;
                    opponent = enemy;
                }
                else
                {
                    cardUser = enemy;
                    opponent = player;
                }
                // apply effect
                if (card.cardType.Equals("Offense"))
                {
                    AudioManager.instance.PlaySound("Offensive Card");
                    if (opponent.dodge)
                    {
                        opponent.dodge = false;
                    }
                    else if (opponent.dmgBlock > 0)
                    {
                        int nextDmg = card.enemyHPLoss - opponent.dmgBlock;
                        opponent.dmgBlock = 0;
                        if (nextDmg < 0)
                        {
                            nextDmg = 0;
                        }
                        opponent.hp.UpdateValue(-nextDmg);
                        opponent.mp.UpdateValue(-card.enemyMPLoss);
                    }
                    else
                    {
                        opponent.hp.UpdateValue(-card.enemyHPLoss);
                        opponent.mp.UpdateValue(-card.enemyMPLoss);
                    }
                }
                else
                {
                    AudioManager.instance.PlaySound("Support Card");
                    cardUser.hp.UpdateValue(card.selfHPRegen);
                    cardUser.mp.UpdateValue(card.selfMPRegen);
                    if (!cardUser.dodge)
                    {
                        cardUser.dodge = card.evasion;
                    }
                    if (cardUser.dmgBlock <= 0)
                    {
                        cardUser.dmgBlock = card.dmgBlock;
                    }
                }

                UpdateStatusInfo(enemy);
                UpdateStatusInfo(player);
            }
            if (cardMotion.targetParent != null)
            {
                cardMotion.onMotion.SetParent(cardMotion.targetParent);
            }
            motionQueue.Dequeue();
            if (motionQueue.Count > 0)
            {
                CardMotion nextMotion = motionQueue.Peek();
                if (nextMotion.onMotion == cardMotion.onMotion)
                {
                    nextMotion.initialPosition = cardMotion.targetPosition;
                    nextMotion.onMotion.SetParent(board.background.transform);
                }
            }
        }
    }