void GiveCardToHand(List <Card> deck, Transform hand) // взять новую карту
    {
        if (deck.Count == 0)
        {
            return;
        }

        Card card = deck[0];

        GameObject cardGO = Instantiate(CardPref, hand, false);

        if (hand == EnemyHand)
        {
            cardGO.GetComponent <CardInfoScript>().HideCardInfo(card);//скрытие руки соперника
            EnemyHandCards.Add(cardGO.GetComponent <CardInfoScript>());
        }
        else
        {
            cardGO.GetComponent <CardInfoScript>().ShowCardInfo(card, true);
            PlayerHandCards.Add(cardGO.GetComponent <CardInfoScript>());
            cardGO.GetComponent <AttackedCardScript>().enabled = false;
        }

        deck.RemoveAt(0);
    }
    public void RestartGame()
    {
        StopAllCoroutines();

        foreach (var card in PlayerHandCards)
        {
            Destroy(card.gameObject);
        }
        foreach (var card in PlayerFieldCards)
        {
            Destroy(card.gameObject);
        }
        foreach (var card in EnemyHandCards)
        {
            Destroy(card.gameObject);
        }
        foreach (var card in EnemyFieldCards)
        {
            Destroy(card.gameObject);
        }

        PlayerHandCards.Clear();
        PlayerFieldCards.Clear();
        EnemyHandCards.Clear();
        EnemyFieldCards.Clear();

        StartGame();
    }
Exemplo n.º 3
0
    void EnemyTurn(List <CardInfoScr> cards)
    {
        int count = cards.Count == 1 ? 1 :
                    Random.Range(0, cards.Count);

        for (int i = 0; i < count; i++)
        {
            if (EnemyFieldCards.Count > 5)
            {
                return;
            }

            cards[0].ShowCardInfo(cards[0].SelfCard, false);
            cards[0].transform.SetParent(EnemyField);

            EnemyFieldCards.Add(cards[0]);
            EnemyHandCards.Remove(cards[0]);
        }

        foreach (var activeCard in EnemyFieldCards.FindAll(x => x.SelfCard.CanAttack))
        {
            if (PlayerFieldCards.Count == 0)
            {
                return;
            }

            var enemy = PlayerFieldCards[Random.Range(0, PlayerFieldCards.Count)];

            Debug.Log(activeCard.SelfCard.Name + " (" + activeCard.SelfCard.Attack + ";" + activeCard.SelfCard.Defense + ") " + "---> " +
                      enemy.SelfCard.Name + " (" + enemy.SelfCard.Attack + ";" + enemy.SelfCard.Defense + ")");

            activeCard.SelfCard.ChangeAttackState(false);
            CardsFight(enemy, activeCard);
        }
    }
Exemplo n.º 4
0
    void GiveCardToHand(List <Card> deck, Transform hand)
    {
        if (deck.Count == 0)
        {
            return;
        }

        Card card = deck[0];

        GameObject cardGO = Instantiate(CardPref, hand, false);

        if (hand == EnemyHand)
        {
            cardGO.GetComponent <CardGiven>().HideCardInfo(card);
            EnemyHandCards.Add(cardGO.GetComponent <CardGiven>());
        }
        else
        {
            a            += 150;
            previewInGame = Instantiate(preview, new Vector3(a, b, c), transform.rotation = Quaternion.identity);
            previewInGame.transform.SetParent(GameObject.FindGameObjectWithTag("Canvas").transform, true);
            previewInGame.GetComponent <Image>().sprite = card.Logo;
            Destroy(previewInGame, 3f);
            cardGO.GetComponent <CardGiven>().ShowCardInfo(card);
            PlayerHandCards.Add(cardGO.GetComponent <CardGiven>());
        }
        deck.RemoveAt(0);
    }
Exemplo n.º 5
0
    void GiveCardToHand(List <Card> deck, Transform hand)
    {
        if (deck.Count == 0)
        {
            return;
        }

        Card card = deck[0];

        GameObject cardGO = Instantiate(CardPref, hand, false);

        if (hand == EnemyHand)
        {
            cardGO.GetComponent <CardInfoScr>().HideCardInfo(card);
            EnemyHandCards.Add(cardGO.GetComponent <CardInfoScr>());
        }
        else
        {
            cardGO.GetComponent <CardInfoScr>().ShowCardInfo(card, true);
            PlayerHandCards.Add(cardGO.GetComponent <CardInfoScr>());
            cardGO.GetComponent <AttackCard>().enabled = false;
        }


        deck.RemoveAt(0);
    }
    void CreateCardPref(Card card, Transform hand)
    {
        GameObject     cardGO = Instantiate(CardPref, hand, false);
        CardController cardC  = cardGO.GetComponent <CardController>();

        cardC.Init(card, hand == PlayerHand);

        if (cardC.IsPlayerCard)
        {
            PlayerHandCards.Add(cardC);
        }
        else
        {
            EnemyHandCards.Add(cardC);
        }
    }
    void EnemyTurn(List <CardInfoScript> cards)
    {
        int count = Random.Range(0, cards.Count + 1);

        for (int i = 0; i < count; i++) //выставление карт соперником для проверки
        {
            if (EnemyFieldCards.Count > 5 /*баг с выкладыванием бльшего кол-ва карт*/ || EnemyEnergy == 0)
            {
                break;
            }

            List <CardInfoScript> cardsList = cards.FindAll(x => EnemyEnergy >= x.SelfCard.Cost); //карты с подходящей ценой в руке

            if (cardsList.Count == 0)
            {
                break;
            }

            ReduceEnergy(false, cardsList[0].SelfCard.Cost);

            cardsList[0].ShowCardInfo(cardsList[0].SelfCard, false);
            cardsList[0].transform.SetParent(EnemyField);

            EnemyFieldCards.Add(cardsList[0]);
            EnemyHandCards.Remove(cardsList[0]);
        }

        foreach (var activeCard in EnemyFieldCards.FindAll(x => x.SelfCard.CanAttack)) // атака соперником для проверки
        {
            if (Random.Range(0, 2) == 0 && PlayerFieldCards.Count > 0)
            {
                var enemy = PlayerFieldCards[Random.Range(0, PlayerFieldCards.Count)];

                Debug.Log(activeCard.SelfCard.Name);

                activeCard.SelfCard.ChangeAttackState(false);
                CardsFight(enemy, activeCard);
            }
            else
            {
                activeCard.SelfCard.ChangeAttackState(false);
                DamageHero(activeCard, false);
            }
        }
    }
Exemplo n.º 8
0
    private void EnemyTurn(List <CardInfoScr> cards)
    {
        int count = Random.Range(0, cards.Count - 1);

        for (int i = 0; i < count; i++)
        {
            if (EnemyFieldCards.Count > 5)
            {
                return;
            }
            else
            {
                CardInfoScr currentCard = cards[0];
                currentCard.ShowCardInfo(cards[0].SelfCard, false);
                currentCard.transform.SetParent(enemyField);
                EnemyHandCards.Remove(currentCard);
                EnemyFieldCards.Add(currentCard);
            }
        }
    }
Exemplo n.º 9
0
    public void EnemyPutCard(List <CardGiven> cards)
    {
        int field  = Random.Range(0, 2);
        int counts = Random.Range(1, EnemyHandCards.Count);             // 2 card

        for (int i = 0; i < counts; i++)
        {
            if (field == 1)
            {
                if ((int.Parse(EnemyGold.text) - cards[0].Cost) > 0)
                {
                    EnemyGold.text = (int.Parse(EnemyGold.text) - cards[0].Cost).ToString();
                    cards[0].ShowCardInfo(cards[0].SelfCard);
                    cards[0].transform.SetParent(EnemyFirstField);
                }
                else
                {
                    return;
                }
            }
            else
            {
                //Debug.Log((int.Parse(EnemyGold.text) - cards[0].Cost).ToString());
                Debug.Log(cards[0].Cost);
                if ((int.Parse(EnemyGold.text) - cards[0].Cost) > 0)
                {
                    EnemyGold.text = (int.Parse(EnemyGold.text) - cards[0].Cost).ToString();
                    cards[0].ShowCardInfo(cards[0].SelfCard);
                    cards[0].transform.SetParent(EnemySecondField);
                }
                else
                {
                    return;
                }
            }

            EnemyFieldCards.Add(cards[0]);
            EnemyHandCards.Remove(cards[0]);
            attackOrPut = 1;
        }
    }
    IEnumerator EnemyTurn(List <CardInfoScr> cards)
    {
        yield return(new WaitForSeconds(1));

        int count = cards.Count == 1 ? 1 :
                    Random.Range(0, cards.Count);

        for (int i = 0; i < count; i++)
        {
            if (EnemyFieldCards.Count > 3 || EnemyHandCards.Count == 0)
            {
                break; //Огранчение до 4 карт на поле
            }
            cards[0].GetComponent <CardMovementScr>().MoveToField(EnemyField);

            yield return(new WaitForSeconds(.31f));

            cards[0].ShowCardInfo(cards[0].SelfCard, false);
            cards[0].transform.SetParent(EnemyField);

            EnemyFieldCards.Add(cards[0]);
            EnemyHandCards.Remove(cards[0]);
        }

        yield return(new WaitForSeconds(1));

        foreach (var activeCard in EnemyFieldCards.FindAll(x => x.SelfCard.CanAttack))
        {
            if (Random.Range(0, 2) == 0 && PlayerFieldCards.Count > 0)
            {
                if (PlayerFieldCards.Count == 0)
                {
                    break;
                }

                var enemy = PlayerFieldCards[Random.Range(0, PlayerFieldCards.Count)];

                activeCard.SelfCard.ChangeAttackState(false);

                activeCard.GetComponent <CardMovementScr>().MoveToTarget(enemy.transform);
                yield return(new WaitForSeconds(.5f));

                CardsFight(enemy, activeCard);
            }
            else
            {
                activeCard.SelfCard.ChangeAttackState(false);

                activeCard.GetComponent <CardMovementScr>().MoveToTarget(PlayerHero.transform);
                yield return(new WaitForSeconds(.5f));

                DamageHero(activeCard, false);
            }

            yield return(new WaitForSeconds(.2f)); // 0.2 секунды перед новой анимацией
        }

        yield return(new WaitForSeconds(1));

        ChangeTurn();
    }
Exemplo n.º 11
0
    IEnumerator EnemyTurn(List <CardInfoScr> cards)
    {
        yield return(new WaitForSeconds(1));


        int count = cards.Count == 1 ? 1 :
                    Random.Range(0, cards.Count);

        for (int i = 0; i < count; i++)
        {
            if (EnemyFieldCards.Count > 5 ||
                EnemyMana == 0 || EnemyHandCards.Count == 0)
            {
                break;
            }

            List <CardInfoScr> cardsList = cards.FindAll(x => EnemyMana >= x.SelfCard.Manacost);

            if (cardsList.Count == 0)
            {
                break;
            }


            cardsList[0].GetComponent <CardMovementScr>().MoveToField(EnemyField);

            ReduceMana(false, cardsList[0].SelfCard.Manacost);

            yield return(new WaitForSeconds(.51f));


            cardsList[0].ShowCardInfo(cardsList[0].SelfCard, false);
            cardsList[0].transform.SetParent(EnemyField);

            EnemyFieldCards.Add(cardsList[0]);
            EnemyHandCards.Remove(cardsList[0]);
        }

        yield return(new WaitForSeconds(1));

        // enemy's possibility attack hero card's
        foreach (var activeCard in EnemyFieldCards.FindAll(x => x.SelfCard.CanAttack))
        {
            if (Random.Range(0, 2) == 0 &&
                PlayerFieldCards.Count > 0)
            {
                var enemy = PlayerFieldCards[Random.Range(0, PlayerFieldCards.Count)];

                Debug.Log(activeCard.SelfCard.Name + " (" + activeCard.SelfCard.Attack + ";" + activeCard.SelfCard.Defense + " )" + "--->" +
                          enemy.SelfCard.Name + " (" + enemy.SelfCard.Attack + ";" + enemy.SelfCard.Defense + " )");

                activeCard.SelfCard.ChageAttackState(false);

                activeCard.GetComponent <CardMovementScr>().MoveToTarget(enemy.transform);
                yield return(new WaitForSeconds(.75f));

                CardsFight(enemy, activeCard);
            }
            else
            {
                Debug.Log(activeCard.SelfCard.Name + " (" + activeCard.SelfCard.Attack + ") Attacked hero");

                activeCard.SelfCard.ChageAttackState(false);


                activeCard.GetComponent <CardMovementScr>().MoveToTarget(PlayerHero.transform);
                yield return(new WaitForSeconds(.75f));

                DamageHero(activeCard, false);
            }

            yield return(new WaitForSeconds(.2f));
        }

        yield return(new WaitForSeconds(1));

        ChangeTurn();
    }
Exemplo n.º 12
0
    void EnemyTurn(List <CardInfoScr> cards)
    {
        List <CardInfoScr> cardlist = cards.FindAll(x => x.SelfCard.Preparation == 0);
        //Debug.Log("count=" + cardlist.Count);



        int n = 1;

        for (int i = 0; i < cardlist.Count; i++)
        {
            if (EnemyFieldCards.Count > 7)
            {
                return;
            }
            n = 1;
            while (n == 1)
            {
                int j = Random.Range(1, 9);
                if (j == 1 && EnemyFieldCard1.Count == 0)
                {
                    cardlist[i].ShowCardInfo(cardlist[i].SelfCard);
                    cardlist[i].transform.SetParent(EnemyField1);


                    EnemyFieldCard1.Add(cardlist[i]);
                    EnemyFieldCards.Add(cardlist[i]);
                    EnemyHandCards.Remove(cardlist[i]);


                    n = 0;
                }
                if (j == 2 && EnemyFieldCard2.Count == 0)
                {
                    cardlist[i].ShowCardInfo(cardlist[i].SelfCard);
                    cardlist[i].transform.SetParent(EnemyField2);

                    EnemyFieldCard2.Add(cardlist[i]);
                    EnemyFieldCards.Add(cardlist[i]);
                    EnemyHandCards.Remove(cardlist[i]);


                    n = 0;
                }
                if (j == 3 && EnemyFieldCard3.Count == 0)
                {
                    cardlist[i].ShowCardInfo(cardlist[i].SelfCard);
                    cardlist[i].transform.SetParent(EnemyField3);

                    EnemyFieldCard3.Add(cardlist[i]);
                    EnemyFieldCards.Add(cardlist[i]);
                    EnemyHandCards.Remove(cardlist[i]);


                    n = 0;
                }
                if (j == 4 && EnemyFieldCard4.Count == 0)
                {
                    cardlist[i].ShowCardInfo(cardlist[i].SelfCard);
                    cardlist[i].transform.SetParent(EnemyField4);

                    EnemyFieldCard4.Add(cardlist[i]);
                    EnemyFieldCards.Add(cardlist[i]);
                    EnemyHandCards.Remove(cardlist[i]);


                    n = 0;
                }
                if (j == 5 && EnemyFieldCard5.Count == 0)
                {
                    cardlist[i].ShowCardInfo(cardlist[i].SelfCard);
                    cardlist[i].transform.SetParent(EnemyField5);

                    EnemyFieldCard5.Add(cardlist[i]);
                    EnemyFieldCards.Add(cardlist[i]);
                    EnemyHandCards.Remove(cardlist[i]);


                    n = 0;
                }
                if (j == 6 && EnemyFieldCard6.Count == 0)
                {
                    cardlist[i].ShowCardInfo(cardlist[i].SelfCard);
                    cardlist[i].transform.SetParent(EnemyField6);

                    EnemyFieldCard6.Add(cardlist[i]);
                    EnemyFieldCards.Add(cardlist[i]);
                    EnemyHandCards.Remove(cardlist[i]);


                    n = 0;
                }
                if (j == 7 && EnemyFieldCard7.Count == 0)
                {
                    cardlist[i].ShowCardInfo(cardlist[i].SelfCard);
                    cardlist[i].transform.SetParent(EnemyField7);

                    EnemyFieldCard7.Add(cardlist[i]);
                    EnemyFieldCards.Add(cardlist[i]);
                    EnemyHandCards.Remove(cardlist[i]);


                    n = 0;
                }
                if (j == 8 && EnemyFieldCard8.Count == 0)
                {
                    cardlist[i].ShowCardInfo(cardlist[i].SelfCard);
                    cardlist[i].transform.SetParent(EnemyField8);

                    EnemyFieldCard8.Add(cardlist[i]);
                    EnemyFieldCards.Add(cardlist[i]);
                    EnemyHandCards.Remove(cardlist[i]);



                    n = 0;
                }
            }
        }
    }