Ejemplo n.º 1
0
        /// <summary>
        /// Menu that allows a player to stay on playing, ask for a draw or surrender
        /// </summary>
        private void PlayerMenu()
        { //should allow the player to surrender, ask for a draw or return to play.
            //remember, you can call the board paint and chess paint functions to recreate the visual board and visual pieces.
            //Should people be allowed to use the menu while it is not their turn? If they are, have to deal with a menu appearing while they e.g. moving a piece and such.
            Console.Title = Settings.GetTitle + ": Player Menu";
            string[] playerOptions =
            {
                "Stay Playing",
                "Call for Draw",
                "Game Stats",
                "Surrender"
            };
            Console.Clear();
            string title = "Options";

            isActive = false;
            string answer = Menu.MenuAccess(playerOptions, title);

            isActive = true;
            switch (answer)
            {
            case "Stay Playing":
                Console.Clear();
                ChessTable.GameRunTitle();
                ChessTable.RepaintBoardAndPieces();
                break;

            case "Call for Draw":
                if (GameStates.IsOnline)
                {
                    Network.Transmit.GeneralValueTransmission(3, Network.Transmit.OtherPlayerIpAddress);
                    GameStates.Pause = true;
                    Console.Clear();
                    Console.SetCursorPosition(Settings.MenuTitleOffset[0], Settings.MenuTitleOffset[1]);
                    Console.WriteLine("Waiting on answer");
                    while (GameStates.Pause && !GameStates.LostConnection)
                    {
                        ;
                    }
                    ChessTable.GameRunTitle();
                }
                else
                {
                    Console.Clear();
                    string   drawTitle   = "Other player wants to draw";
                    string[] drawOptions = { "Accept Draw", "Decline Draw" };
                    string   drawAnswer  = Menu.MenuAccess(drawOptions, drawTitle);
                    switch (drawAnswer)
                    {
                    case "Accept Draw":
                        GameStates.GameEnded   = true;
                        GameStates.VictoryType = null;
                        break;

                    case "Decline Draw":
                        Console.Clear();
                        ChessTable.RepaintBoardAndPieces();
                        ChessTable.GameRunTitle();
                        break;
                    }
                }
                break;

            case "Surrender":
                GameStates.GameEnded   = true;
                GameStates.VictoryType = false;
                GameStates.WhiteWin    = !white;
                if (GameStates.IsOnline /*&& !GameStates.IsTurn*/)
                {
                    if (GameStates.PlayerTeam == false)
                    {
                        GameStates.TurnCounter++;
                    }
                    Network.Transmit.GeneralValueTransmission(41, Network.Transmit.OtherPlayerIpAddress);
                }
                break;

            case "Game Stats":
                GameStatsDisplay();
                ChessTable.GameRunTitle();
                ChessTable.RepaintBoardAndPieces();
                break;
            }
        }