示例#1
0
        private void HandleRegistration(Socket socket, String name)
        {
            var port   = 20000 + _players.Count;
            var player = new SocketServer(name, port);

            _players.Add(player);

            SocketHarnessMessage.SendMessage(socket, SocketHarnessMessage.MessageType.RegistrationPort, port.ToString(), Callback);
        }
示例#2
0
        private void RegisterCallback(IAsyncResult ar)
        {
            var state  = (SocketState)ar.AsyncState;
            var socket = state.Socket;

            state.ByteBuffer = new byte[10240];

            socket.BeginReceive(state.ByteBuffer, 0, state.ByteBuffer.Length, SocketFlags.None, RegistrationMessage, state);
            SocketHarnessMessage.SendMessage(socket, SocketHarnessMessage.MessageType.RegisterPlayer, _username);
        }
示例#3
0
        public void SendCommand(String command)
        {
            if (_socket != null && _socket.Connected && !killed)
            {
                SocketHarnessMessage.SendMessage(_socket, SocketHarnessMessage.MessageType.Command, command);
                Console.WriteLine("Your command has been sent to the server.  Wait for the other players and the map will update");
            }

            if (killed)
            {
                Console.WriteLine("You have been killed and can no longer send commands");
            }
        }
示例#4
0
 public override void PlayerCommandFailed(ICommand command, string reason)
 {
     if (_clientSocket.Connected)
     {
         try
         {
             SocketHarnessMessage.SendMessage(_clientSocket, SocketHarnessMessage.MessageType.CommandFailed, reason);
         }
         catch (Exception ex)
         {
             Console.WriteLine("Could not send message to client " + Name + " because it disconnected");
             Console.WriteLine(ex);
         }
     }
 }
示例#5
0
 public override void GameEnded(GameMap gameMap)
 {
     if (_clientSocket.Connected)
     {
         try
         {
             SocketHarnessMessage.SendMessage(_clientSocket, SocketHarnessMessage.MessageType.GameComplete, "");
         }
         catch (Exception ex)
         {
             Console.WriteLine("Could not send message to client " + Name + " because it disconnected");
             Console.WriteLine(ex);
         }
     }
 }
示例#6
0
 public override void PlayerKilled(GameMap gameMap)
 {
     if (_clientSocket.Connected)
     {
         try
         {
             var renderer = new ConsoleRender(gameMap);
             SocketHarnessMessage.SendMessage(_clientSocket, SocketHarnessMessage.MessageType.Killed, renderer.RenderTextGameState().ToString());
         }
         catch (Exception ex)
         {
             Console.WriteLine("Could not send message to client " + Name + " because it disconnected");
             Console.WriteLine(ex);
         }
     }
 }
示例#7
0
        public override void StartGame(GameMap gameState)
        {
            _gameMap = gameState;

            try
            {
                SocketHarnessMessage.SendMessage(_clientSocket, SocketHarnessMessage.MessageType.PlayerRegistered,
                                                 PlayerEntity.Key.ToString());
            }
            catch (Exception ex)
            {
                Console.WriteLine("Could not send message to client " + Name + " because it disconnected");
                Console.WriteLine(ex);
            }

            NewRoundStarted(_gameMap);
        }
示例#8
0
        public override void NewRoundStarted(GameMap gameState)
        {
            var renderer = new ConsoleRender(gameState);

            if (_clientSocket.Connected)
            {
                try
                {
                    SocketHarnessMessage.SendMessage(_clientSocket, SocketHarnessMessage.MessageType.GameMap,
                                                     renderer.RenderTextGameState().ToString());
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Could not send message to client " + Name + " because it disconnected");
                    Console.WriteLine(ex);
                }
            }
            else
            {
                PublishCommand(new DoNothingCommand());
            }
        }