Example #1
0
    // Берем карты из колоды в фазе набора в количестве 2
    IEnumerator CardTaking()
    {
        PlayerStats stat = activePlayer.GetComponent <PlayerStats>();
        int         i    = 0;

        while (i < 2)
        {
            CardParametrs card = cards[Random.Range(0, cards.Length)].GetComponent <CardParametrs>();
            if (card.positionInGame == PositionInGame.Deck)
            {
                i++;
                Transform newHolder = Instantiate(cardHolder, stat.deck).transform;
                card.positionInGame = PositionInGame.InHand;
                stat.cardAmount++;
                StartCoroutine(card.CardMoving(newHolder));
                yield return(new WaitForSeconds(0.5f));
            }
            else
            {
                yield return(null);
            }
        }

        yield break;
    }
Example #2
0
    // Переносим карты из колоды в руку каждого игрока в количестве равной количеству жизней
    IEnumerator GameInitialization()
    {
        yield return(new WaitForSeconds(1f));

        foreach (var player in players)
        {
            PlayerStats stat = player.GetComponent <PlayerStats>();

            while (stat.cardAmount < stat.health)
            {
                CardParametrs card = cards[Random.Range(0, cards.Length)].GetComponent <CardParametrs>();
                if (card.positionInGame == PositionInGame.Deck) //Проверяем позицию карты, если в колоде переносим карту в руку и меняем ее состояние на в "В руке"
                {
                    Transform newHolder = Instantiate(cardHolder, stat.deck).transform;
                    card.positionInGame = PositionInGame.InHand;
                    stat.cardAmount++;
                    StartCoroutine(card.CardMoving(newHolder));
                    yield return(new WaitForSeconds(0.5f));
                }
                else
                {
                    yield return(null);
                }
            }
        }

        state = GameStates.PlayerTakeCard;
        yield break;
    }
Example #3
0
    // Берем карту из колоды. Передаем сюда масть карты и цифру для проверки в карте из колоды, времено храним эту карту, чтобы потом сбросить
    bool CardChecking(SuitCard suitCard, int[] numbers, out GameObject CheckCard)
    {
        CheckCard = null;
        foreach (var card in cards)
        {
            CheckCard = card;
            CardParametrs cardParam = card.GetComponent <CardParametrs>();
            if (cardParam.positionInGame == PositionInGame.Deck)
            {
                StartCoroutine(InGamePlacing(card, 0.5f, InGamePlace, false));

                if (suitCard == cardParam.suitCard && numbers.Contains(cardParam.number))
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            else
            {
                continue;
            }
        }

        return(false);
    }
Example #4
0
    // Сбрасываем карту в сброс
    IEnumerator DropingCard(GameObject card, float timer)
    {
        yield return(new WaitForSeconds(timer));

        GameObject oldHolder = card.transform.parent.gameObject;

        while (oldHolder == gameObject)
        {
            oldHolder = card.transform.parent.gameObject;
            yield return(null);
        }
        card.transform.SetParent(transform);
        Destroy(oldHolder);
        CardParametrs cardParam = card.GetComponent <CardParametrs>();

        cardParam.positionInGame = PositionInGame.Dropping;
        StartCoroutine(cardParam.CardMoving(droppingPlace.transform));
    }
Example #5
0
    // Помещаем карту в указаное игровое поле, также есть возможность запретить уничтожение родителя карты
    IEnumerator InGamePlacing(GameObject card, float timer, GameObject inGamePlace, bool destroy = true)
    {
        yield return(new WaitForSeconds(timer));

        GameObject oldHolder = card.transform.parent.gameObject;

        while (oldHolder == gameObject)
        {
            oldHolder = card.transform.parent.gameObject;
            yield return(null);
        }
        card.transform.SetParent(transform);
        if (destroy)
        {
            Destroy(oldHolder);
        }
        CardParametrs cardParam = card.GetComponent <CardParametrs>();

        cardParam.positionInGame = PositionInGame.InGame;
        Transform newHolder = Instantiate(cardHolder, inGamePlace.transform).transform;

        StartCoroutine(cardParam.CardMoving(newHolder));
    }