Example #1
0
        public void SendMessage(TcpClient client, CheckersMessage message)
        {
            Connection tempConnection = new Connection(client);

            tempConnection.SendMessage(message);
            tempConnection.Shutdown();
        }
Example #2
0
    private void HandleServerMessage(CheckersMessage message)
    {
        if (message.ProtocolVersion != 1)
        {
            // don't know how to handle other versions!
            return;
        }
        switch (message.MessageType)
        {
        case MessageType.Join:
            // set player identity
            Player = message.Side;
            break;

        case MessageType.Move:
            // server says a move was done, so represent that in the game
            ApplyMove(new Move(message));
            break;

        case MessageType.PlayerConnected:
            if (message.Side != Player)
            {
                Debugging.Print("opponent connected.");
                OpponentConnected = true;
            }
            break;

        default:
            break;
        }
    }
Example #3
0
 public MessageDispatcher()
 {
     DummyMessage = new CheckersMessage()
     {
         ProtocolVersion = 0
     };
     RedPlayerConnection   = null;
     WhitePlayerConnection = null;
 }
Example #4
0
 private void HandleResignMessage(CheckersMessage message, Side sender)
 {
     // inform players of resignation and end game.
     Dispatcher.SendMessage(Side.Red, new CheckersMessage()
     {
         ProtocolVersion = 1,
         MessageType     = MessageType.GameOutcome,
         GameOutcome     = (sender == Side.Red ? GameOutcome.RedResign : GameOutcome.WhiteResign)
     });
 }
Example #5
0
 public bool SendMessage(Side side, CheckersMessage message)
 {
     if (side == Side.Red && PlayerConnected(Side.Red))
     {
         RedPlayerConnection.SendMessage(message);
         return(true);
     }
     else if (side == Side.White && PlayerConnected(Side.White))
     {
         WhitePlayerConnection.SendMessage(message);
         return(true);
     }
     return(false);
 }
Example #6
0
        private void HandleMessage(CheckersMessage message, Side sender)
        {
            switch (message.MessageType)
            {
            case MessageType.Move:
                HandleMoveMessage(message, sender);
                break;

            case MessageType.Resign:
                HandleResignMessage(message, sender);
                break;

            default:
                break;
            }
        }
Example #7
0
        private void HandleMoveMessage(CheckersMessage message, Side sender)
        {
            if (sender == Match.currentTurn)
            {
                CheckersMatch.Move theMove = new CheckersMatch.Move(message);
                if (Match.IsValidPartialMove(theMove) &&                                        // valid move?
                    Match.Board[theMove.StartLocation].Player == sender)                        // checker belongs to player?
                {
                    Console.WriteLine("Got a VALID move message from the player whose turn it is!");
                    Match.ApplyMove(theMove);

                    // send messages to players notifying them a move was made.
                    Dispatcher.SendMessage(Side.Red, theMove.ToMessage());
                    Dispatcher.SendMessage(Side.White, theMove.ToMessage());
                }
            }
            else
            {
                // not sender's turn; do nothing. else block to explicitly recognize this
            }
        }
Example #8
0
 public void SendMessage(CheckersMessage message)
 {
     ToSend.Enqueue(message);
 }
Example #9
0
 public Move(CheckersMessage moveMessage)
 {
     StartLocation = new BoardLocation(moveMessage.StartRow, moveMessage.StartCol);
     EndLocation   = new BoardLocation(moveMessage.EndRow, moveMessage.EndCol);
 }
Example #10
0
 public void SendMessage(CheckersMessage message)
 {
     Debugging.Print("Sending message " + message.ToString());
     ToSend.Enqueue(message);
 }