Exemplo n.º 1
0
        public void SendMessage(MessageIdentifiers id)
        {
            byte[] appended;
            byte[] identifier;
            byte[] data;
            switch (id)
            {
            case MessageIdentifiers.ReadyUpdate:
                appended = Encoding.ASCII.GetBytes("Ready");

                identifier = Encoding.ASCII.GetBytes(MessageIdentifiers.ReadyUpdate.ToString("d"));
                data       = Combine(identifier, appended);
                ClientSocket.Send(data);
                break;

            case MessageIdentifiers.GameUpdate:

                while (gameForm.waitingToSubmit == false)
                {
                }
                PlayerMove pm = gameForm.SubmitPlayerMove();

                IFormatter formatter = new BinaryFormatter();
                using (MemoryStream stream = new MemoryStream())
                {
                    formatter.Serialize(stream, pm);
                    appended = stream.ToArray();
                }
                //byte[] appended = Encoding.ASCII.GetBytes("test");

                identifier = Encoding.ASCII.GetBytes(MessageIdentifiers.GameUpdate.ToString("d"));
                data       = Combine(identifier, appended);

                var buffer = new byte[2048];

                ClientSocket.Send(data);

                //gameForm.SetOutputBox("Sent Game Update");

                //ReceiveResponse();
                break;

            default:
                break;
            }
        }
Exemplo n.º 2
0
        public void SendMessage(MessageIdentifiers id, Socket socket)
        {
            byte[] appended;
            byte[] identifier;
            byte[] data;
            switch (id)
            {
            case MessageIdentifiers.OnePlayerConnected:
                appended = Encoding.ASCII.GetBytes("Waiting For Opponent");

                identifier = Encoding.ASCII.GetBytes(MessageIdentifiers.OnePlayerConnected.ToString("d"));
                data       = Combine(identifier, appended);
                socket.Send(data);
                break;

            case MessageIdentifiers.TwoPlayersConnected:
                //------------------
                // Initialize our test class and set the message to Starting Game for player 2, serialize and send it to the client who just joined
                //------------------
                Sclass1 serializeMe = new Sclass1();
                serializeMe.SetMessage("Two Players Connected");
                serializeMe.SetPlayer(2);
                Console.WriteLine(serializeMe.GetMessage());
                IFormatter formatter = new BinaryFormatter();
                using (MemoryStream stream = new MemoryStream())
                {
                    formatter.Serialize(stream, serializeMe);
                    appended = stream.ToArray();
                }
                //byte[] appended = Encoding.ASCII.GetBytes("test");

                identifier = Encoding.ASCII.GetBytes(MessageIdentifiers.TwoPlayersConnected.ToString("d"));
                data       = Combine(identifier, appended);

                while (!Client2Ready)
                {
                }
                Client2Ready = false;

                socket.Send(data);

                //------------------
                //This one goes to the first client, letting them know the game is starting, and that they are player 1
                //------------------
                serializeMe = new Sclass1();
                serializeMe.SetMessage("Two Players Connected");
                serializeMe.SetPlayer(1);
                formatter = new BinaryFormatter();
                using (MemoryStream stream = new MemoryStream())
                {
                    formatter.Serialize(stream, serializeMe);
                    appended = stream.ToArray();
                }
                //byte[] appended = Encoding.ASCII.GetBytes("test");

                identifier = Encoding.ASCII.GetBytes(MessageIdentifiers.TwoPlayersConnected.ToString("d"));
                data       = Combine(identifier, appended);

                while (!Client1Ready)
                {
                }
                Client1Ready = false;

                player1Socket.Send(data);

                break;

            case MessageIdentifiers.GameUpdate:
                GameBoard serializeGameBoard = currentGame.GetGameBoard();
                formatter = new BinaryFormatter();
                using (MemoryStream stream = new MemoryStream())
                {
                    formatter.Serialize(stream, serializeGameBoard);
                    appended = stream.ToArray();
                }

                identifier = Encoding.ASCII.GetBytes(MessageIdentifiers.GameUpdate.ToString("d"));
                byte[] GameBoardData = Combine(identifier, appended);

                player1Socket.Send(GameBoardData);
                Client1Ready = false;
                player2Socket.Send(GameBoardData);
                Client2Ready = false;
                break;

            case MessageIdentifiers.RetryGameUpdate:
                //just send the gameboard again
                appended = Encoding.ASCII.GetBytes("Unupdated Gameboard");

                identifier = Encoding.ASCII.GetBytes(MessageIdentifiers.RetryGameUpdate.ToString("d"));
                data       = Combine(identifier, appended);
                if (currentPlayer == 1)
                {
                    player1Socket.Send(data);
                    Client1Ready = false;
                }
                else
                {
                    player2Socket.Send(data);
                    Client2Ready = false;
                }
                break;

            case MessageIdentifiers.GameOver:
                //Set the game over message
                serializeGameBoard = currentGame.GetGameBoard();
                formatter          = new BinaryFormatter();
                using (MemoryStream stream = new MemoryStream())
                {
                    formatter.Serialize(stream, serializeGameBoard);
                    appended = stream.ToArray();
                }

                identifier    = Encoding.ASCII.GetBytes(MessageIdentifiers.GameOver.ToString("d"));
                GameBoardData = Combine(identifier, appended);

                player1Socket.Send(GameBoardData);
                Client1Ready = false;
                player2Socket.Send(GameBoardData);
                Client2Ready = false;
                //do stuff to shut down server
                break;

            default:
                break;
            }
        }