private static void StartNewRound()
        {
            foreach (var card in CutCards)
            {
                Deck.Cards.Push(card);
            }
            foreach (var card in FloppedCards)
            {
                Deck.Cards.Push(card);
            }

            Deck.Cards = Shuffle(Deck.Cards);

            Round.NewRound();

            foreach (var player in Round.Players)
            {
                DealHand(player);
            }

            PlayerActionEventArgs args = new PlayerActionEventArgs {
            };

            PokerEventsMediator.OnUpdateGraphics(null, args);

            t1 = new Thread(StartBets);
            t1.Start();
        }
        private static void DealCards(object sender, EventArgs e)
        {
            switch (stage)
            {
            case 0: DealFlop();
                break;

            case 1:
                DealOneCard();
                break;

            case 2:
                DealOneCard();
                break;
            }

            FlopEventArgs flopArgs = new FlopEventArgs {
                FloppedCards = FloppedCards
            };

            PokerEventsMediator.OnFlop(null, flopArgs);

            if (stage <= 2)
            {
                t1 = new Thread(StartBets);
                t1.Start();
                Clock.InitClock(15);
            }
            else if (stage > 2)
            {
                //show hands, calculate winner
                Clock.StopClock();
            }
        }
        public static void IncreasePot(int amount, int playerNr)
        {
            Pot += amount;
            Players[playerNr].Chips -= amount;

            BetEventArgs args = new BetEventArgs {
                BetAmount = amount, PlaceAtTable = playerNr
            };

            PokerEventsMediator.OnBet(null, args);
        }
        public static void StartBets()
        {
            int placeAtTable = 0;

            LastBet = 0;

            for (int i = 0; i < Round.Players.Count; i++)
            {
                Clock.InitClock(15);

                action = PlayerAction.Wait;
                PlayerDataEventArgs args = new PlayerDataEventArgs
                {
                    Chips        = Round.Players[i].Chips,
                    PlaceAtTable = placeAtTable++,
                    LastBet      = LastBet
                };
                PokerEventsMediator.OnStartBet(null, args);

                while (action == PlayerAction.Wait)
                {
                    Thread.Sleep(10);
                }

                switch (action)
                {
                case PlayerAction.Check:
                    break;

                case PlayerAction.Bet:
                    Round.IncreasePot(PlayerBet, i);

                    LastBet = PlayerBet - LastBet;
                    if (PlayerBet > LastBet)
                    {
                        //start new betting round where index 0 = next player
                    }
                    break;

                case PlayerAction.Fold:
                    Round.Players.RemoveAt(i--);
                    break;
                }
            }

            PokerEventsMediator.OnBetsStageEnded(null, EventArgs.Empty);
            stage++;
        }