IEnumerator Start() { cards = new List <GameObject>(); distroQueues = new Dictionary <Card.Suit, List <Card> >(); distroKeys = new List <Card.Suit>(); yield return(new WaitUntil(() => GameManager.instance != null)); yield return(new WaitUntil(() => GameManager.instance.player != null)); foreach (GameObject g in allCards) { for (int i = 0; i < copies; i++) { GameObject temp = Instantiate(g, Vector3.one * 9999, Quaternion.identity, transform); GameObject temp2 = Instantiate(temp.GetComponent <HalfCard>().prefabCard, Vector3.one * 9999, Quaternion.identity, transform); temp2.GetComponent <Card>().halfCard = temp; temp.GetComponent <HalfCard>().card = temp2.GetComponent <Card>(); cards.Add(temp); Card.Suit suit = temp.GetComponent <HalfCard>().card.cardSuit; if (temp.GetComponent <HalfCard>().card.starterCard) { GameManager.instance.player.playerHand.Add(temp2.GetComponent <Card>()); break; } else { if (!distroQueues.ContainsKey(suit)) { distroQueues[suit] = new List <Card>(); distroKeys.Add(suit); } if (Random.Range(0, 1) > 0.5) { distroQueues[suit].Insert(0, temp.GetComponent <HalfCard>().card); } else { distroQueues[suit].Add(temp.GetComponent <HalfCard>().card); } } } } foreach (GameObject go in GameManager.instance.planetList) { Planet p = go.GetComponent <Planet>(); p.AddCards(DistributeCards(3, p.Suit)); } }