コード例 #1
0
ファイル: Room.cs プロジェクト: sergmalinov1/PokerServer
        //========GAME MANAGER======
        public void GameLogicUpdate()
        {
            switch (gameStatus)
            {
            case GameStatus.waitPlayers:
                if (playersInRoom.Count >= 2)
                {
                    gameStatus = GameStatus.start;
                }
                break;

            case GameStatus.start:
                if (playersInRoom.Count >= 2)
                {
                    deck.Shuffle();
                    stage = Stage.flop;


                    ServerSend.StartNewGame();

                    foreach (KeyValuePair <int, Client> kvp in playersInRoom)
                    {
                        Card card1    = deck.GetNextCard();
                        Card card2    = deck.GetNextCard();
                        int  playerId = kvp.Value.id;

                        kvp.Value.playerStatus = PlayerStatus.inGame;


                        //Sent client Cards, status

                        ServerSend.PlayerInGame(playerId);
                        ServerSend.Preflop(playerId, card1, card2);

                        Console.WriteLine("InGame: " + kvp.Value.username);
                        Console.WriteLine("Preflop: " + card1.ToString() + "-- " + card2.ToString());
                    }
                    gameStatus = GameStatus.rates;

                    idActivePlayer = playersInRoom[0].id;

                    ServerSend.ActivPlayer(idActivePlayer);

                    //Sent chat to all - Game start
                }

                else
                {
                    gameStatus = GameStatus.waitPlayers;
                }

                break;

            case GameStatus.distribution:
                if (playersInRoom.Count < 2)
                {
                    gameStatus = GameStatus.waitPlayers;
                }
                // Console.WriteLine("Distribution!");
                //Send each by 2 card
                //Sent first action to rate
                // gameStatus = GameStatus.rates;
                break;

            case GameStatus.rates:
                if (playersInRoom.Count < 2)
                {
                    gameStatus = GameStatus.waitPlayers;
                }

                string userWin     = "";
                int    playerCount = 0;
                foreach (KeyValuePair <int, Client> kvp in playersInRoom)
                {
                    if (kvp.Value.playerStatus == PlayerStatus.inGame)
                    {
                        playerCount += 1;
                        userWin      = kvp.Value.username;
                    }
                }

                if (playerCount < 2)
                {
                    ServerSend.WinResult(userWin.ToString());
                    gameStatus = GameStatus.start;
                }
                // отправить первому в списке чтоб делал ставку



                //first rates
                // send all rates


                // if all rate - gameStatus = GameStatus.rates; break;

                //Send next action to rate
                break;


            default:
                Console.WriteLine("неизвестный статус");
                break;
            }
        }