private void PlayerConnected(VirusPlayer player) { Dispatcher.Invoke(() => { InTextBox.Text += "Player " + player.Name + " connected with color " + player.Color.Name + "\n"; TextScrollViewer.ScrollToBottom(); }); }
private void TextMessageRecieved(VirusPlayer player, string text) { Dispatcher.Invoke(() => { InTextBox.Text += player.Name + ":\n" + text + "\n"; TextScrollViewer.ScrollToBottom(); }); }
private void PlayerDisconnected(VirusPlayer player) { Dispatcher.Invoke(() => { InTextBox.Text += "Player " + player.Name + " disconnected\n"; TextScrollViewer.ScrollToBottom(); EndGame(); }); }
private void NameUpdated(VirusPlayer player, string orig) { Dispatcher.Invoke(() => { InTextBox.Text += "Player " + orig + " changed name to " + player.Name + "\n"; viruscontrol.Refresh(); TextScrollViewer.ScrollToBottom(); }); }
private void ColorUpdated(VirusPlayer player, System.Drawing.Color orig) { Dispatcher.Invoke(() => { InTextBox.Text += "Player " + player.Name + " changed color to " + player.Color.Name + "\n"; TextScrollViewer.ScrollToBottom(); viruscontrol.Refresh(); }); }
public VirusLobby(VirusPlayer player) { Player = player; ListeningStarted = false; ConnectionStarted = false; Connected = false; GameStarted = false; }
private void StartGame(VirusPlayer[] players) { Dispatcher.Invoke(() => { viruscontrol.StartGame( new VirusNameSpace.Virus(lobby.PlayerCount, 10), PerformedMoveCallback, null, EndGame, player.ID, players); }); }
public MainWindow() { InitializeComponent(); messageBox.KeyDown += new KeyEventHandler(messageBox_keyDown); player = new VirusPlayer("Player1", rand.Next().ToString(), System.Drawing.Color.Red); lobby = new VirusLobby(player); lobby.OnBadMessageRecieved += new VirusLobby.TextFunction(BadMessage); lobby.OnColorChanged += new VirusLobby.PlayerUpdateColorFunction(ColorUpdated); lobby.OnEveryoneReadyChanged += new VirusLobby.BoolFunction(EveryoneReadyUpdated); lobby.OnGameMove += new VirusLobby.GameMoveFunction(GameMove); lobby.OnNameChanged += new VirusLobby.PlayerUpdateTextFunction(NameUpdated); lobby.OnPlayerConnected += new VirusLobby.PlayerUpdateFunction(PlayerConnected); lobby.OnPlayerDisconnected += new VirusLobby.PlayerUpdateFunction(PlayerDisconnected); lobby.OnStartGame += new VirusLobby.StartFunction(StartGame); lobby.OnTextMessageRecieved += new VirusLobby.TextMessageFunction(TextMessageRecieved); }
private void ListenForClients() { this.tcpListener.Start(); while (ListeningStarted) { try { TcpClient cl = this.tcpListener.AcceptTcpClient(); //blocks until a client has connected to the server VirusPlayer client = new VirusPlayer(cl); //Players.Add(client); //create a thread to handle communication with connected client Thread clientThread = new Thread(new ParameterizedThreadStart(AwaitCommunicationMaster)); clientThread.Start(client); } catch { } } this.tcpListener.Stop(); }
public void StartConnection(IPAddress ip) { if (Master) { throw new ApplicationException("Master tried to connect to another master"); } TcpClient client = new TcpClient(); IPEndPoint serverEndPoint = new IPEndPoint(ip, Port); client.Connect(serverEndPoint); VirusPlayer pclient = new VirusPlayer(client); MasterPlayer = pclient; SendInitialiseMessage(Player); Thread clientThread = new Thread(new ParameterizedThreadStart(AwaitCommunicationClient)); clientThread.Start(pclient); ConnectionStarted = true; }
private void SendReadyMessage(VirusPlayer player) { byte[] buffer = encoder.GetBytes(CodeReady + player.ID + " " + (player.Ready ? "1" : "0")); SendMessage(buffer); }
private void SendNameMessage(VirusPlayer player, string name) { byte[] buffer = encoder.GetBytes(CodeName + player.ID + " [" + name + "]"); SendMessage(buffer); }
private void HandleMessageClient(string message, MessageType type) { VirusPlayer origin = null; string text = ""; string id = ""; string name = ""; Color color = Color.Red; bool ready; string[] sequence; int x, y, dx, dy = 0; switch (type) { case MessageType.Initialise: if (TryParseInitialiseMessage(message, out id, out name, out color)) { origin = GetPlayerFromID(id); if (origin == null) { Players.Add(new VirusPlayer(name, id, color)); } else { if (OnBadMessageRecieved != null) { OnBadMessageRecieved("Got a second initialise message for player id: " + origin.ID); } } } else { if (OnBadMessageRecieved != null) { OnBadMessageRecieved("Couldn't parse new initialise message from master"); } } break; case MessageType.Text: if (TryParseTextMessage(message, out id, out text)) { origin = GetPlayerFromID(id); if (origin == null) { if (OnBadMessageRecieved != null) { OnBadMessageRecieved("Got text message without origin"); } } else if (OnTextMessageRecieved != null) { OnTextMessageRecieved(origin, text); } } else { if (OnBadMessageRecieved != null) { OnBadMessageRecieved("Couldn't parse text message from master"); } } break; case MessageType.Color: if (TryParseColorMessage(message, out id, out color)) { origin = GetPlayerFromID(id); if (origin == null) { if (OnBadMessageRecieved != null) { OnBadMessageRecieved("Got color message without origin"); } } else { Color orig = origin.Color; origin.Color = color; if (OnColorChanged != null) { OnColorChanged(origin, orig); } } } else { if (OnBadMessageRecieved != null) { OnBadMessageRecieved("Couldn't parse color message from master"); } } break; case MessageType.Name: if (TryParseNameMessage(message, out id, out name)) { origin = GetPlayerFromID(id); if (origin == null) { if (OnBadMessageRecieved != null) { OnBadMessageRecieved("Got name message without origin"); } } else { string orig = origin.Name; origin.Name = name; if (OnNameChanged != null) { OnNameChanged(origin, orig); } } } else { if (OnBadMessageRecieved != null) { OnBadMessageRecieved("Couldn't parse name message from master"); } } break; case MessageType.Ready: if (TryParseReadyMessage(message, out id, out ready)) { origin = GetPlayerFromID(id); if (origin == null) { if (OnBadMessageRecieved != null) { OnBadMessageRecieved("Got ready message without origin"); } } else { bool orig = origin.Ready; origin.Ready = ready; if (OnReadyChanged != null) { OnReadyChanged(origin, orig); } } } else { if (OnBadMessageRecieved != null) { OnBadMessageRecieved("Couldn't parse ready message from master"); } } break; case MessageType.StartGame: if (TryParseStartGameMessage(message, out sequence)) { if (PlayerCount == sequence.Length) { VirusPlayer[] list = new VirusPlayer[PlayerCount]; VirusPlayer[] all = AllPlayers; for (int i = 0; i < PlayerCount; i++) { foreach (VirusPlayer p in all) { if (p.ID == sequence[i]) { list[i] = p; break; } } } GameStarted = true; if (OnStartGame != null) { OnStartGame(list); } } else if (OnBadMessageRecieved != null) { OnBadMessageRecieved("Start game message from master had different number of players than locally"); } } else { if (OnBadMessageRecieved != null) { OnBadMessageRecieved("Couldn't parse start game message from master"); } } break; case MessageType.GameMessage: if (TryParseGameMessage(message, out id, out x, out y, out dx, out dy)) { if (id == Player.ID) { break; } origin = GetPlayerFromID(id); if (origin == null) { if (OnBadMessageRecieved != null) { OnBadMessageRecieved("Got game message without origin"); } } else if (OnGameMove != null) { OnGameMove(origin, x, y, dx, dy); } } else { if (OnBadMessageRecieved != null) { OnBadMessageRecieved("Couldn't parse game message from master"); } } break; case MessageType.Disconnect: if (TryParseDisconnectMessage(message, out id)) { origin = GetPlayerFromID(id); if (origin == null) { if (OnBadMessageRecieved != null) { OnBadMessageRecieved("Got disconnect message without origin"); } } else if (origin.ID == MasterPlayer.ID) { origin.TcpClient.Close(); origin.Connected = false; } else { if (OnPlayerDisconnected != null) { OnPlayerDisconnected(origin); } Players.Remove(origin); GameStarted = false; } } else { if (OnBadMessageRecieved != null) { OnBadMessageRecieved("Couldn't parse ready message from master"); } } break; default: if (OnBadMessageRecieved != null) { OnBadMessageRecieved("Couldn't recognise message from master"); } break; } }
private void SendDisconnectMessage(VirusPlayer player) { byte[] buffer = encoder.GetBytes(CodeDisconnect + player.ID); SendMessage(buffer); }
private void SendColorMessage(VirusPlayer player, Color color) { byte[] buffer = encoder.GetBytes(CodeColor + player.ID + " " + color.Name); SendMessage(buffer); }
private void SendInitialiseMessage(VirusPlayer player) { byte[] buffer = encoder.GetBytes(CodeInitialise + player.ID + " [" + player.Name + "] " + player.Color.Name); SendMessage(buffer); }
private void AwaitCommunicationMaster(object client) { VirusPlayer player = (VirusPlayer)client; TcpClient tcpClient = player.TcpClient; NetworkStream clientStream = tcpClient.GetStream(); while (player.Connected) { String message = ""; try { //blocks until a client sends a message message = ReadMessage(clientStream); } catch { //a socket error has occured player.Connected = false; break; } if (message == "") { continue; } MessageType type = VirusLobby.ParseMessageType(message); // -- The player should start by initialising if (!player.Initialised) { if (type != MessageType.Initialise) { player.Connected = false; break; } bool success = TryParseInitialiseMessage(message, out player.ID, out player.Name, out player.Color); if (!success) { player.Connected = false; break; } player.Initialised = true; Players.Add(player); Connected = true; if (OnPlayerConnected != null) { OnPlayerConnected(player); } List <VirusPlayer> list = new List <VirusPlayer>(); List <VirusPlayer> list2 = new List <VirusPlayer>(); list.Add(player); foreach (VirusPlayer p in Players) { if (p.ID != player.ID) { SendInitialiseMessage(p, list); //send init message to new player about the existing players list2.Add(p); } } SendInitialiseMessage(Player, list); //send init message to new player about the host SendInitialiseMessage(player, list2); //send init message to existing players about the new player bool allreadyprev = true; foreach (VirusPlayer p in Players) { if (p.ID != player.ID) { if (!p.Ready) { allreadyprev = false; } } } bool allreadynow = true; foreach (VirusPlayer p in Players) { if (!p.Ready) { allreadynow = false; } } if (allreadynow != allreadyprev) { if (OnEveryoneReadyChanged != null) { OnEveryoneReadyChanged(allreadynow); } } continue; } // -- Player is already initialised, so the message needs other handling HandleMessageMaster(player, message, type); } player.TcpClient.Close(); if (OnPlayerDisconnected != null) { try { OnPlayerDisconnected(player); } catch { } } Players.Remove(player); SendDisconnectMessage(player); }
private void GameMove(VirusPlayer player, int x, int y, int dx, int dy) { Dispatcher.Invoke(() => { viruscontrol.NetworkMove(x, y, dx, dy); }); }
private void SendGameMessage(VirusPlayer player, int x, int y, int dx, int dy) { byte[] buffer = encoder.GetBytes(CodeGameMessage + player.ID + " " + x + " " + y + " " + dx + " " + dy); SendMessage(buffer); }
private void HandleMessageMaster(VirusPlayer player, string message, MessageType type) { string text = ""; string id = ""; string name = ""; Color color = Color.Red; bool ready; int x, y, dx, dy = 0; switch (type) { // ###### ------ Initialise ------ ###### // case MessageType.Initialise: if (OnBadMessageRecieved != null) { OnBadMessageRecieved("Got a second initialise message from player with id " + player.ID); } break; // ###### ------ Text ------ ###### // case MessageType.Text: if (TryParseTextMessage(message, out id, out text)) { if (player.ID != id) { if (OnBadMessageRecieved != null) { OnBadMessageRecieved("Got text message with id " + id + " from player with id " + player.ID); } } else { if (OnTextMessageRecieved != null) { OnTextMessageRecieved(player, text); } SendTextMessage(player, text); } } else { if (OnBadMessageRecieved != null) { OnBadMessageRecieved("Couldn't parse text message from player with id " + player.ID); } } break; // ###### ------ Color ------ ###### // case MessageType.Color: if (TryParseColorMessage(message, out id, out color)) { if (player.ID != id) { if (OnBadMessageRecieved != null) { OnBadMessageRecieved("Got color message with id " + id + " from player with id " + player.ID); } } else { Color orig = player.Color; player.Color = color; if (OnColorChanged != null) { OnColorChanged(player, orig); } SendColorMessage(player, color); } } else { if (OnBadMessageRecieved != null) { OnBadMessageRecieved("Couldn't parse color message from player with id " + player.ID); } } break; // ###### ------ Name ------ ###### // case MessageType.Name: if (TryParseNameMessage(message, out id, out name)) { if (player.ID != id) { if (OnBadMessageRecieved != null) { OnBadMessageRecieved("Got name message with id " + id + " from player with id " + player.ID); } } else { string orig = Player.Name; player.Name = name; if (OnNameChanged != null) { OnNameChanged(player, orig); } SendNameMessage(player, name); } } else { if (OnBadMessageRecieved != null) { OnBadMessageRecieved("Couldn't parse name message from player with id " + player.ID); } } break; // ###### ------ Ready ------ ###### // case MessageType.Ready: if (TryParseReadyMessage(message, out id, out ready)) { if (player.ID != id) { if (OnBadMessageRecieved != null) { OnBadMessageRecieved("Got ready message with id " + id + " from player with id " + player.ID); } } else { bool allreadyprev = true; foreach (VirusPlayer p in Players) { if (!p.Ready) { allreadyprev = false; } } bool orig = player.Ready; player.Ready = ready; if (OnReadyChanged != null) { OnReadyChanged(player, orig); } SendReadyMessage(player); bool allreadynow = true; foreach (VirusPlayer p in Players) { if (!p.Ready) { allreadynow = false; } } if (allreadynow != allreadyprev) { if (OnEveryoneReadyChanged != null) { OnEveryoneReadyChanged(allreadynow); } } } } else { if (OnBadMessageRecieved != null) { OnBadMessageRecieved("Couldn't parse ready message from player with id " + player.ID); } } break; // ###### ------ StartGame ------ ###### // case MessageType.StartGame: if (OnBadMessageRecieved != null) { OnBadMessageRecieved("Got start game message from player with id " + player.ID); } break; // ###### ------ GameMessage ------ ###### // case MessageType.GameMessage: if (TryParseGameMessage(message, out id, out x, out y, out dx, out dy)) { if (player.ID != id) { if (OnBadMessageRecieved != null) { OnBadMessageRecieved("Got game message with id " + id + " from player with id " + player.ID); } } else { if (OnGameMove != null) { OnGameMove(player, x, y, dx, dy); } SendGameMessage(player, x, y, dx, dy); } } else { if (OnBadMessageRecieved != null) { OnBadMessageRecieved("Couldn't parse game message from player with id " + player.ID); } } break; // ###### ------ Disconnect ------ ###### // case MessageType.Disconnect: player.TcpClient.Close(); player.Connected = false; //if (OnBadMessageRecieved != null) // OnBadMessageRecieved("Got disconnect message from player with id " + player.ID); break; // ###### ------ default ------ ###### // default: if (OnBadMessageRecieved != null) { OnBadMessageRecieved("Couldn't recognise message from player with id " + player.ID); } break; } }
private void SendTextMessage(VirusPlayer player, string text) { byte[] buffer = encoder.GetBytes(CodeText + player.ID + " [" + text + "]"); SendMessage(buffer); }
private void HandleMessageClient(string message, MessageType type) { VirusPlayer origin = null; string text = ""; string id = ""; string name = ""; Color color = Color.Red; bool ready; string[] sequence; int x, y, dx, dy = 0; switch (type) { case MessageType.Initialise: if (TryParseInitialiseMessage(message, out id, out name, out color)) { origin = GetPlayerFromID(id); if (origin == null) { Players.Add(new VirusPlayer(name, id, color)); } else { if (OnBadMessageRecieved != null) OnBadMessageRecieved("Got a second initialise message for player id: " + origin.ID); } } else { if (OnBadMessageRecieved != null) OnBadMessageRecieved("Couldn't parse new initialise message from master"); } break; case MessageType.Text: if (TryParseTextMessage(message, out id, out text)) { origin = GetPlayerFromID(id); if (origin == null) { if (OnBadMessageRecieved != null) OnBadMessageRecieved("Got text message without origin"); } else if (OnTextMessageRecieved != null) OnTextMessageRecieved(origin, text); } else { if (OnBadMessageRecieved != null) OnBadMessageRecieved("Couldn't parse text message from master"); } break; case MessageType.Color: if (TryParseColorMessage(message, out id, out color)) { origin = GetPlayerFromID(id); if (origin == null) { if (OnBadMessageRecieved != null) OnBadMessageRecieved("Got color message without origin"); } else { Color orig = origin.Color; origin.Color = color; if (OnColorChanged != null) OnColorChanged(origin, orig); } } else { if (OnBadMessageRecieved != null) OnBadMessageRecieved("Couldn't parse color message from master"); } break; case MessageType.Name: if (TryParseNameMessage(message, out id, out name)) { origin = GetPlayerFromID(id); if (origin == null) { if (OnBadMessageRecieved != null) OnBadMessageRecieved("Got name message without origin"); } else { string orig = origin.Name; origin.Name = name; if (OnNameChanged != null) OnNameChanged(origin, orig); } } else { if (OnBadMessageRecieved != null) OnBadMessageRecieved("Couldn't parse name message from master"); } break; case MessageType.Ready: if (TryParseReadyMessage(message, out id, out ready)) { origin = GetPlayerFromID(id); if (origin == null) { if (OnBadMessageRecieved != null) OnBadMessageRecieved("Got ready message without origin"); } else { bool orig = origin.Ready; origin.Ready = ready; if (OnReadyChanged != null) OnReadyChanged(origin, orig); } } else { if (OnBadMessageRecieved != null) OnBadMessageRecieved("Couldn't parse ready message from master"); } break; case MessageType.StartGame: if (TryParseStartGameMessage(message, out sequence)) { if(PlayerCount == sequence.Length){ VirusPlayer[] list = new VirusPlayer[PlayerCount]; VirusPlayer[] all = AllPlayers; for (int i = 0; i < PlayerCount; i++ ) { foreach (VirusPlayer p in all) { if (p.ID == sequence[i]) { list[i] = p; break; } } } GameStarted = true; if (OnStartGame != null) OnStartGame(list); } else if (OnBadMessageRecieved != null) OnBadMessageRecieved("Start game message from master had different number of players than locally"); } else { if (OnBadMessageRecieved != null) OnBadMessageRecieved("Couldn't parse start game message from master"); } break; case MessageType.GameMessage: if (TryParseGameMessage(message, out id, out x, out y, out dx, out dy)) { if (id == Player.ID) break; origin = GetPlayerFromID(id); if (origin == null) { if (OnBadMessageRecieved != null) OnBadMessageRecieved("Got game message without origin"); } else if (OnGameMove != null) OnGameMove(origin, x, y, dx, dy); } else { if (OnBadMessageRecieved != null) OnBadMessageRecieved("Couldn't parse game message from master"); } break; case MessageType.Disconnect: if (TryParseDisconnectMessage(message, out id)) { origin = GetPlayerFromID(id); if (origin == null) { if (OnBadMessageRecieved != null) OnBadMessageRecieved("Got disconnect message without origin"); } else if (origin.ID == MasterPlayer.ID) { origin.TcpClient.Close(); origin.Connected = false; } else { if (OnPlayerDisconnected != null) OnPlayerDisconnected(origin); Players.Remove(origin); GameStarted = false; } } else { if (OnBadMessageRecieved != null) OnBadMessageRecieved("Couldn't parse ready message from master"); } break; default: if (OnBadMessageRecieved != null) OnBadMessageRecieved("Couldn't recognise message from master"); break; } }
private void AwaitCommunicationClient(object client) { VirusPlayer player = (VirusPlayer)client; TcpClient tcpClient = player.TcpClient; NetworkStream clientStream = tcpClient.GetStream(); while (player.Connected) { String message = ""; try { //blocks until a client sends a message message = ReadMessage(clientStream); } catch { //a socket error has occured player.Connected = false; break; } if (message == "") { continue; } MessageType type = VirusLobby.ParseMessageType(message); // -- The player should start by initialising if (!player.Initialised) { if (type != MessageType.Initialise) { player.Connected = false; break; } bool success = TryParseInitialiseMessage(message, out player.ID, out player.Name, out player.Color); if (!success) { player.Connected = false; break; } player.Initialised = true; Players.Add(player); MasterPlayer = player; Connected = true; if (OnPlayerConnected != null) { OnPlayerConnected(player); } continue; } // -- Player is already initialised, so the message needs other handling HandleMessageClient(message, type); } //player.TcpClient.Close(); if (OnPlayerDisconnected != null) { try { OnPlayerDisconnected(player); } catch { } } Players.Clear(); GameStarted = false; }
private void HandleMessageMaster(VirusPlayer player, string message, MessageType type) { string text = ""; string id = ""; string name = ""; Color color = Color.Red; bool ready; int x, y, dx, dy = 0; switch (type) { // ###### ------ Initialise ------ ###### // case MessageType.Initialise: if (OnBadMessageRecieved != null) OnBadMessageRecieved("Got a second initialise message from player with id " + player.ID); break; // ###### ------ Text ------ ###### // case MessageType.Text: if (TryParseTextMessage(message, out id, out text)) { if (player.ID != id) { if (OnBadMessageRecieved != null) OnBadMessageRecieved("Got text message with id " + id + " from player with id " + player.ID); } else { if (OnTextMessageRecieved != null) OnTextMessageRecieved(player, text); SendTextMessage(player, text); } } else { if (OnBadMessageRecieved != null) OnBadMessageRecieved("Couldn't parse text message from player with id " + player.ID); } break; // ###### ------ Color ------ ###### // case MessageType.Color: if (TryParseColorMessage(message, out id, out color)) { if (player.ID != id) { if (OnBadMessageRecieved != null) OnBadMessageRecieved("Got color message with id " + id + " from player with id " + player.ID); } else { Color orig = player.Color; player.Color = color; if (OnColorChanged != null) OnColorChanged(player, orig); SendColorMessage(player, color); } } else { if (OnBadMessageRecieved != null) OnBadMessageRecieved("Couldn't parse color message from player with id " + player.ID); } break; // ###### ------ Name ------ ###### // case MessageType.Name: if (TryParseNameMessage(message, out id, out name)) { if (player.ID != id) { if (OnBadMessageRecieved != null) OnBadMessageRecieved("Got name message with id " + id + " from player with id " + player.ID); } else { string orig = Player.Name; player.Name = name; if (OnNameChanged != null) OnNameChanged(player, orig); SendNameMessage(player, name); } } else { if (OnBadMessageRecieved != null) OnBadMessageRecieved("Couldn't parse name message from player with id " + player.ID); } break; // ###### ------ Ready ------ ###### // case MessageType.Ready: if (TryParseReadyMessage(message, out id, out ready)) { if (player.ID != id) { if (OnBadMessageRecieved != null) OnBadMessageRecieved("Got ready message with id " + id + " from player with id " + player.ID); } else { bool allreadyprev = true; foreach (VirusPlayer p in Players) if (!p.Ready) allreadyprev = false; bool orig = player.Ready; player.Ready = ready; if (OnReadyChanged != null) OnReadyChanged(player, orig); SendReadyMessage(player); bool allreadynow = true; foreach (VirusPlayer p in Players) if (!p.Ready) allreadynow = false; if (allreadynow != allreadyprev) if (OnEveryoneReadyChanged != null) OnEveryoneReadyChanged(allreadynow); } } else { if (OnBadMessageRecieved != null) OnBadMessageRecieved("Couldn't parse ready message from player with id " + player.ID); } break; // ###### ------ StartGame ------ ###### // case MessageType.StartGame: if (OnBadMessageRecieved != null) OnBadMessageRecieved("Got start game message from player with id " + player.ID); break; // ###### ------ GameMessage ------ ###### // case MessageType.GameMessage: if (TryParseGameMessage(message, out id, out x, out y, out dx, out dy)) { if (player.ID != id) { if (OnBadMessageRecieved != null) OnBadMessageRecieved("Got game message with id " + id + " from player with id " + player.ID); } else { if (OnGameMove != null) OnGameMove(player, x, y, dx, dy); SendGameMessage(player, x, y, dx, dy); } } else { if (OnBadMessageRecieved != null) OnBadMessageRecieved("Couldn't parse game message from player with id " + player.ID); } break; // ###### ------ Disconnect ------ ###### // case MessageType.Disconnect: player.TcpClient.Close(); player.Connected = false; //if (OnBadMessageRecieved != null) // OnBadMessageRecieved("Got disconnect message from player with id " + player.ID); break; // ###### ------ default ------ ###### // default: if (OnBadMessageRecieved != null) OnBadMessageRecieved("Couldn't recognise message from player with id " + player.ID); break; } }
public void StartConnection(IPAddress ip) { if(Master) throw new ApplicationException("Master tried to connect to another master"); TcpClient client = new TcpClient(); IPEndPoint serverEndPoint = new IPEndPoint(ip, Port); client.Connect(serverEndPoint); VirusPlayer pclient = new VirusPlayer(client); MasterPlayer = pclient; SendInitialiseMessage(Player); Thread clientThread = new Thread(new ParameterizedThreadStart(AwaitCommunicationClient)); clientThread.Start(pclient); ConnectionStarted = true; }