// Берем карты из колоды в фазе набора в количестве 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; }
// Переносим карты из колоды в руку каждого игрока в количестве равной количеству жизней 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; }
// Берем карту из колоды. Передаем сюда масть карты и цифру для проверки в карте из колоды, времено храним эту карту, чтобы потом сбросить 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); }
// Сбрасываем карту в сброс 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)); }
// Помещаем карту в указаное игровое поле, также есть возможность запретить уничтожение родителя карты 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)); }