public void Start()
        {
            if (Application.GameSeed != null)
            {
                Seed = Application.GameSeed.Value;
            }
            Debug.Log(String.Format("[Game] Starting (Seed: {0})", Seed));
            random = new System.Random(Seed);

            Stack <Card> cardStack = new Stack <Card>(CreateDeck());

            for (int foundationPileIndex = 0; foundationPileIndex < Configuration.CardTypes.Count; foundationPileIndex++)
            {
                CreateFoundationPile();
            }

            foreach (int pileCardSize in Configuration.Tableau)
            {
                TableauCardPile tableauPile = CreateTableauPile();
                for (int pileCardIndex = 0; pileCardIndex < pileCardSize; pileCardIndex++)
                {
                    tableauPile.Push(cardStack.Pop());
                }
                Card topCard = tableauPile.Peek();
                if (topCard != null)
                {
                    topCard.Visible = true;
                }
            }

            foreach (Card card in cardStack)
            {
                stock.Push(card);
            }
        }
        private TableauCardPile CreateTableauPile()
        {
            TableauCardPile tableauPile = Instantiate(tableauPilePrefab).GetComponent <TableauCardPile>();

            tableauPile.CardMaxNumber = Configuration.CardMaxNumber;
            tableauPile.transform.SetParent(tableau);
            return(tableauPile);
        }