void Snake(string name, Client client) { bool found = false; foreach (Client element in clients) { if (element.name == name && element.gameID == -1) { found = true; PacketData.ChatMessagePacket packet1 = new PacketData.ChatMessagePacket("You have challanged " + element.name); send(packet1, client); packet1 = new PacketData.ChatMessagePacket(client.name + " has challanged you to a game of Snake. Do you accept? /accept or /decline"); send(packet1, element); games.Add(new Game(GameType.GT_SNAKE, client.id, element.id)); client.gameID = games.Count - 1; element.gameID = games.Count - 1; } } if (found == false) { PacketData.ChatMessagePacket packet1 = new PacketData.ChatMessagePacket("Person you are trying to play with is either in a game or do not exist"); send(packet1, client); } }
private void ProcessEndConnectionCommand(List <String> commandParameters, int clientID, ref List <int> recievers, ref List <String> messages) { String name = _clients[clientID].GetName(); SendPacket(new PacketData.Packet(PacketData.PacketType.TERMINATE_CLIENT), _clients[clientID]); Console.WriteLine(name + " disconnected."); for (int i = 0; i < _games.Count; i++) { if (_games[i].GetClient1().GetID() == clientID || _games[i].GetClient2().GetID() == clientID) { _games[i].Close(); _games.RemoveAt(i); break; } } _clients[clientID].SetShouldTerminate(true); PacketData.ChatMessagePacket sendPacket = new PacketData.ChatMessagePacket("<AAAA00[" + name + "]><777700 left the server>"); for (int i = 0; i < _clients.Count; i++) { SendPacket(sendPacket, _clients[i]); } return; }
public void Start() { while (true) { tcpListener.Start(backlog); Console.WriteLine("started listening"); Socket tcpSocket = tcpListener.AcceptSocket(); Client client = new Client(tcpSocket); client.id = clients.Count; client.name = "Client " + client.id.ToString(); clients.Add(client); Console.WriteLine("Connection Accepted"); foreach (Client element in clients) { PacketData.ChatMessagePacket packet = new PacketData.ChatMessagePacket(client.name + " joined the chat"); send(packet, element); } Thread tcp = new Thread(new ParameterizedThreadStart(TCPClientMethod)); tcp.Start(client); } }
//submit text button private void SubmitButton_Click(object sender, EventArgs e) { string input = SubmitText.Text; PacketData.ChatMessagePacket packet = new PacketData.ChatMessagePacket(SubmitText.Text); _client.TCPSend(packet); SubmitText.Clear(); }
private void ProcessServerResponse() { int numOfIncomingBytes = 0; while ((numOfIncomingBytes = _binaryReader.ReadInt32()) != 0) { byte[] buffer = _binaryReader.ReadBytes(numOfIncomingBytes); System.IO.MemoryStream memoryStream = new System.IO.MemoryStream(); System.Runtime.Serialization.Formatters.Binary.BinaryFormatter binaryFormatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); memoryStream.Seek(0, System.IO.SeekOrigin.Begin); memoryStream.Position = 0; memoryStream.Write(buffer, 0, numOfIncomingBytes); memoryStream.Seek(0, System.IO.SeekOrigin.Begin); memoryStream.Position = 0; PacketData.Packet rawPacket = binaryFormatter.Deserialize(memoryStream) as PacketData.Packet; switch (rawPacket.type) { case PacketData.PacketType.CHAT_MESSAGE: PacketData.ChatMessagePacket chatPacket = (PacketData.ChatMessagePacket)rawPacket; _chatWindow.UpdateChatWindow(chatPacket.message); break; case PacketData.PacketType.CLEAR_WINDOW: _chatWindow.ClearChatWindow(); break; case PacketData.PacketType.TERMINATE_CLIENT: _listenerThread.Abort(); break; case PacketData.PacketType.BOMBERMAN_SERVER_TO_CLIENT: PacketData.BombermanServerToClientPacket bombermanServerToClientPacket = (PacketData.BombermanServerToClientPacket)rawPacket; _gameWindow.UpdateOtherPlayerWithPacket(bombermanServerToClientPacket.otherPlayer); _gameWindow.AddOtherPlayersBombs(bombermanServerToClientPacket.otherPlayerBombs); break; case PacketData.PacketType.OPEN_BOMBERMAN_WINDOW: PacketData.OpenBombermanWindowPacket openBomberManWindowPacket = (PacketData.OpenBombermanWindowPacket)rawPacket; _gameWindowThread = new System.Threading.Thread(() => RunBombermanGame(openBomberManWindowPacket.isPlayerOne)); _gameWindowThread.Start(); break; } } }
public void ProcessServerResponse() { int numOfIncomingBytes = 0; while ((numOfIncomingBytes = reader.ReadInt32()) != 0) { byte[] buffer = reader.ReadBytes(numOfIncomingBytes); memoryStream.Write(buffer, 0, numOfIncomingBytes); memoryStream.Position = 0; binaryFormatter.Binder = new MyBinder.MyBinder(); PacketData.Packet rawPacket = (PacketData.Packet)binaryFormatter.Deserialize(memoryStream); memoryStream.SetLength(0); switch (rawPacket.type) { case PacketData.PacketType.CHATMESSAGE: PacketData.ChatMessagePacket packet = (PacketData.ChatMessagePacket)rawPacket; messageForm.UpdateChatWindow(packet.message); break; case PacketData.PacketType.GAME: startSnakeGame(); break; case PacketData.PacketType.SNAKEGAME: Socket udpSocket = udpClient.Client; PacketData.LoginPacket loginpacket = new PacketData.LoginPacket((IPEndPoint)udpSocket.LocalEndPoint); TCPSend(loginpacket); PacketData.GameMovement gamemovement = (PacketData.GameMovement)rawPacket; snakeGame.UpdateSnake(gamemovement.input); break; case PacketData.PacketType.SCORE: PacketData.Score score = (PacketData.Score)rawPacket; snakeGame.UpdateScore(score.input); break; case PacketData.PacketType.APPLEPOS: PacketData.ApplePos pos = (PacketData.ApplePos)rawPacket; snakeGame.SetApplePos(pos.pos); break; case PacketData.PacketType.PLAYER: PacketData.Player player = (PacketData.Player)rawPacket; snakeGame.startingText(player.player); break; case PacketData.PacketType.STOPGAME: snakeGame.Close(); break; case PacketData.PacketType.QUIT: TCPStop(); //PacketData.QuitPacket quitPacket = (PacketData.QuitPacket)rawPacket; //messageForm.UpdateChatWindow(quitPacket.message); break; default: break; } } }
void UDPServerResponse() { //IPEndPoint remoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0); //Byte[] receiveBytes = udpClient.Receive(ref remoteIpEndPoint); int numOfIncomingBytes = 0; byte[] bytes = new byte[256]; while ((numOfIncomingBytes = reader.ReadInt32()) != 0) { byte[] buffer = reader.ReadBytes(numOfIncomingBytes); memoryStream.Write(buffer, 0, numOfIncomingBytes); memoryStream.Position = 0; binaryFormatter.Binder = new MyBinder.MyBinder(); PacketData.Packet rawPacket = (PacketData.Packet)binaryFormatter.Deserialize(memoryStream); memoryStream.SetLength(0); switch (rawPacket.type) { case PacketData.PacketType.LOGIN: PacketData.LoginPacket loginPacket = (PacketData.LoginPacket)rawPacket; HandlePacket(loginPacket.endPoint); break; case PacketData.PacketType.CHATMESSAGE: PacketData.ChatMessagePacket packet = (PacketData.ChatMessagePacket)rawPacket; messageForm.UpdateChatWindow(packet.message); break; case PacketData.PacketType.GAME: startSnakeGame(); break; case PacketData.PacketType.SNAKEGAME: PacketData.GameMovement gameMovement = (PacketData.GameMovement)rawPacket; snakeGame.UpdateSnake(gameMovement.input); break; case PacketData.PacketType.SCORE: PacketData.Score score = (PacketData.Score)rawPacket; snakeGame.UpdateScore(score.input); break; case PacketData.PacketType.APPLEPOS: PacketData.ApplePos pos = (PacketData.ApplePos)rawPacket; snakeGame.SetApplePos(pos.pos); break; case PacketData.PacketType.PLAYER: PacketData.Player player = (PacketData.Player)rawPacket; snakeGame.startingText(player.player); break; case PacketData.PacketType.STOPGAME: snakeGame.CloseForm(); //PacketData.StopGame stopgame = new PacketData.StopGame(); //TCPSend(stopgame); //snakeGame.Close(); break; case PacketData.PacketType.QUIT: UDPStop(); break; } } }
private void ClientMethod(object clientObj) { Client client = (Client)clientObj; List <int> recievers = new List <int>(); List <String> messages = new List <String>(); int numOfIncomingBytes = 0; while ((numOfIncomingBytes = client._binaryReader.ReadInt32()) != 0) { byte[] buffer = client._binaryReader.ReadBytes(numOfIncomingBytes); System.IO.MemoryStream memoryStream = new System.IO.MemoryStream(); System.Runtime.Serialization.Formatters.Binary.BinaryFormatter binaryFormatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); memoryStream.Seek(0, System.IO.SeekOrigin.Begin); memoryStream.Position = 0; memoryStream.Write(buffer, 0, numOfIncomingBytes); memoryStream.Position = 0; memoryStream.Seek(0, System.IO.SeekOrigin.Begin); PacketData.Packet rawPacket = binaryFormatter.Deserialize(memoryStream) as PacketData.Packet; memoryStream.SetLength(0); switch (rawPacket.type) { case PacketData.PacketType.LOGIN: PacketData.LogInPacket loginPacket = (PacketData.LogInPacket)rawPacket; Console.WriteLine(loginPacket.username + " connected."); client.SetName(loginPacket.username); for (int i = 0; i < _clients.Count; i++) { recievers.Add(i); if (i != client.GetID()) { messages.Add("<AAAA00[" + loginPacket.username + "]><777700 has joined the server>"); } else { String newPlayerMessage = _newPlayerInfo + GetCurrentUsers(client.GetID()); messages.Add(newPlayerMessage); } } for (int i = 0; i < recievers.Count; i++) { PacketData.ChatMessagePacket sendPacket = new PacketData.ChatMessagePacket(messages[i]); SendPacket(sendPacket, _clients[recievers[i]]); } break; case PacketData.PacketType.END_CONNECTION: List <String> commandParams = new List <String>(); ProcessEndConnectionCommand(commandParams, client.GetID(), ref recievers, ref messages); break; case PacketData.PacketType.BOMBERMAN_CLIENT_TO_SERVER: PacketData.BombermanClientToServerPacket bombermanClientToServerPacket = (PacketData.BombermanClientToServerPacket)rawPacket; if (client.GetCurrentGame().GetClient1() == client) { SendPacket(new PacketData.BombermanServerToClientPacket(bombermanClientToServerPacket.bombsPlaced, bombermanClientToServerPacket.player), client.GetCurrentGame().GetClient2()); //SendPacket(new PacketData.BombermanServerToClientPacket(bombermanClientToServerPacket.player), client.GetCurrentGame().GetClient2()); } else { SendPacket(new PacketData.BombermanServerToClientPacket(bombermanClientToServerPacket.bombsPlaced, bombermanClientToServerPacket.player), client.GetCurrentGame().GetClient1()); //SendPacket(new PacketData.BombermanServerToClientPacket(bombermanClientToServerPacket.player), client.GetCurrentGame().GetClient1()); } break; case PacketData.PacketType.CHAT_MESSAGE: PacketData.ChatMessagePacket packet = (PacketData.ChatMessagePacket)rawPacket; recievers.Clear(); messages.Clear(); GetRefinedMessage(packet.message, client.GetID(), ref recievers, ref messages); bool sendToAll = false; if (recievers.Count == 0) { sendToAll = true; } if (sendToAll) { PacketData.ChatMessagePacket sendPacket = new PacketData.ChatMessagePacket(messages[0]); for (int i = 0; i < _clients.Count; i++) { SendPacket(sendPacket, _clients[i]); } } else { for (int i = 0; i < recievers.Count; i++) { PacketData.ChatMessagePacket sendPacket = new PacketData.ChatMessagePacket(messages[i]); SendPacket(sendPacket, _clients[recievers[i]]); } } break; } if (_clients[client.GetID()].GetShouldTerminate()) { System.Threading.Thread listenerThread = _clients[client.GetID()]._listenerThread; _clients.Remove(_clients[client.GetID()]); for (int i = client.GetID(); i < _clients.Count; i++) { _clients[i].SetID(_clients[i].GetID() - 1); } listenerThread.Abort(); } } client.Close(); }
void UDPClientMethod(object clientObj) { int numOfIncomingBytes = 0; Client client = (Client)clientObj; byte[] bytes = new byte[256]; while ((numOfIncomingBytes = client.reader.ReadInt32()) != 0) { byte[] buffer = client.reader.ReadBytes(numOfIncomingBytes); memoryStream.Position = 0; IPEndPoint endpoint = (IPEndPoint)(client.udpSocket.RemoteEndPoint); int receiveBytes = client.udpSocket.Receive(buffer); memoryStream.Write(buffer, 0, receiveBytes); binaryFormatter.Binder = new MyBinder.MyBinder(); PacketData.Packet rawPacket = (PacketData.Packet)binaryFormatter.Deserialize(memoryStream); memoryStream.SetLength(0); switch (rawPacket.type) { case PacketData.PacketType.LOGIN: PacketData.LoginPacket packet = (PacketData.LoginPacket)rawPacket; HandlePacket(client, packet.endPoint); break; case PacketData.PacketType.CHATMESSAGE: PacketData.ChatMessagePacket chatMessage = (PacketData.ChatMessagePacket)rawPacket; if (chatMessage.message.Substring(0, 1) == "/") { Commands(chatMessage, client); } if (client.gameID != -1 && games[client.gameID].state == GameState.GS_ACTIVE) { if (games[client.gameID].type == GameType.GT_RPS) { if (client.id == games[client.gameID].clientID1 && games[client.gameID].client1Input == null) { games[client.gameID].client1Input = chatMessage.message; } if (client.id == games[client.gameID].clientID2 && games[client.gameID].client2Input == null) { games[client.gameID].client2Input = chatMessage.message; } PlayRPS(games[client.gameID].clientID1, games[client.gameID].clientID2); } } else { foreach (Client element in clients) { if (element.gameID == -1) { PacketData.ChatMessagePacket packet1 = new PacketData.ChatMessagePacket(client.name + ": " + chatMessage.message); UDPSend(packet1, element); } } } break; case PacketData.PacketType.SNAKEGAME: foreach (Game element in games) { if (element.clientID1 == client.id) { PacketData.GameMovement gamePacket = (PacketData.GameMovement)rawPacket; PlaySnake(element.clientID1, element.clientID2, gamePacket.input, "1"); } else if (element.clientID2 == client.id) { PacketData.GameMovement gamePacket = (PacketData.GameMovement)rawPacket; PlaySnake(element.clientID1, element.clientID2, gamePacket.input, "2"); } } break; case PacketData.PacketType.NICKNAME: PacketData.NickNamePakcet nickNamePacket = (PacketData.NickNamePakcet)rawPacket; PacketData.ChatMessagePacket newPacket = new PacketData.ChatMessagePacket(client.Rename(client, nickNamePacket.nickName)); foreach (Client element in clients) { UDPSend(newPacket, element); } break; case PacketData.PacketType.STOPGAME: PacketData.QuitPacket stop = (PacketData.QuitPacket)rawPacket; send(stop, client); break; } } }
void PlayRPS(int clientID1, int clientID2) { string rock = "rock"; string paper = "paper"; string scissors = "scissors"; string player1 = games[clients[clientID1].gameID].client1Input; string player2 = games[clients[clientID1].gameID].client2Input; if (games[clients[clientID1].gameID].state == GameState.GS_ACTIVE) { if (player1 == null || player2 == null) { if (player1 == null && player2 == null) { PacketData.ChatMessagePacket packet1 = new PacketData.ChatMessagePacket("Rock, Paper or Scissors"); send(packet1, clients[clientID1]); packet1 = new PacketData.ChatMessagePacket("Rock, Paper or Scissors"); send(packet1, clients[clientID2]); } } else if (player1 == player2) { PacketData.ChatMessagePacket packet1 = new PacketData.ChatMessagePacket("Draw. You both picked " + player1); send(packet1, clients[clientID1]); packet1 = new PacketData.ChatMessagePacket("Draw. You both picked " + player2); send(packet1, clients[clientID2]); games[clients[clientID1].gameID].state = GameState.GS_GAMEOVER; } else if (player1 == rock && player2 == scissors || player1 == paper && player2 == rock || player1 == scissors && player2 == paper) { PacketData.ChatMessagePacket packet1 = new PacketData.ChatMessagePacket("You Win. You picked " + player1 + " and " + clients[clientID2].name + " picked " + player2); send(packet1, clients[clientID1]); packet1 = new PacketData.ChatMessagePacket("You Lose. You picked " + player2 + " and " + clients[clientID1].name + " picked " + player1); send(packet1, clients[clientID2]); games[clients[clientID1].gameID].client1Score++; games[clients[clientID1].gameID].state = GameState.GS_GAMEOVER; } else if (player2 == rock && player1 == scissors || player2 == paper && player1 == rock || player2 == scissors && player1 == paper) { PacketData.ChatMessagePacket packet1 = new PacketData.ChatMessagePacket("You Lose. You picked " + player1 + " and " + clients[clientID2].name + " picked " + player2); send(packet1, clients[clientID1]); packet1 = new PacketData.ChatMessagePacket("You Win. You picked " + player2 + " and " + clients[clientID1].name + " picked " + player1); send(packet1, clients[clientID2]); games[clients[clientID2].gameID].client2Score++; games[clients[clientID1].gameID].state = GameState.GS_GAMEOVER; } else { PacketData.ChatMessagePacket packet1 = new PacketData.ChatMessagePacket("Someone played a invalid option. please re-enter choice"); send(packet1, clients[clientID1]); packet1 = new PacketData.ChatMessagePacket("Someone played a invalid option. please re-enter choice"); send(packet1, clients[clientID2]); games[clients[clientID1].gameID].client1Input = null; games[clients[clientID2].gameID].client2Input = null; } if (games[clients[clientID1].gameID].state == GameState.GS_GAMEOVER) { games[clients[clientID1].gameID].client1Input = null; games[clients[clientID2].gameID].client2Input = null; PacketData.ChatMessagePacket packet1 = new PacketData.ChatMessagePacket("Points: " + clients[clientID1].name + ": " + games[clients[clientID1].gameID].client1Score + " " + clients[clientID2].name + ": " + games[clients[clientID1].gameID].client2Score); send(packet1, clients[clientID1]); packet1 = new PacketData.ChatMessagePacket("Points: " + clients[clientID1].name + ": " + games[clients[clientID1].gameID].client1Score + " " + clients[clientID2].name + ": " + games[clients[clientID1].gameID].client2Score); send(packet1, clients[clientID2]); packet1 = new PacketData.ChatMessagePacket("To stop playing enter /stop or to contiue enter /continue"); send(packet1, clients[clientID1]); packet1 = new PacketData.ChatMessagePacket("To stop playing enter /stop or to contiue enter /continue"); send(packet1, clients[clientID2]); } } }
void Commands(PacketData.ChatMessagePacket packet, Client client) { string command; int space = -1; if (packet.message.Contains(" ")) { space = packet.message.IndexOf(" "); command = packet.message.Substring(0, space); } else { command = packet.message; } if (command == "/rps") { string name = packet.message.Substring(space + 1, packet.message.Length - 5); RPS(name, client); } else if (command == "/snakeGame") { string name = packet.message.Substring(space + 1, packet.message.Length - 11); Snake(name, client); } else if (command == "/accept") { if (client.gameID == -1) { PacketData.ChatMessagePacket packet1 = new PacketData.ChatMessagePacket("You have nothing to accept"); send(packet1, client); } else { games[client.gameID].state = GameState.GS_ACTIVE; if (games[client.gameID].type == GameType.GT_RPS) { PlayRPS(games[client.gameID].clientID1, games[client.gameID].clientID2); } else if (games[client.gameID].type == GameType.GT_SNAKE) { StartSnake(games[client.gameID].clientID1, games[client.gameID].clientID2); } } } else if (command == "/decline") { if (client.gameID != -1) { foreach (Client element in clients) { if (element.gameID == client.gameID) { PacketData.ChatMessagePacket packet1 = new PacketData.ChatMessagePacket("Game has been declined"); send(packet1, element); } } if (client.id == games[client.gameID].clientID1) { clients[games[client.gameID].clientID2].gameID = -1; games.Remove(games[client.gameID]); client.gameID = -1; } else if (client.id == games[client.gameID].clientID2) { clients[games[client.gameID].clientID1].gameID = -1; games.Remove(games[client.gameID]); client.gameID = -1; } } else { PacketData.ChatMessagePacket packet1 = new PacketData.ChatMessagePacket("You have nothing to decline"); send(packet1, client); } } else if (command == "/continue") { if (client.gameID != -1) { games[client.gameID].state = GameState.GS_ACTIVE; PlayRPS(games[client.gameID].clientID1, games[client.gameID].clientID2); } else { PacketData.ChatMessagePacket packet1 = new PacketData.ChatMessagePacket("You have noting to continue"); send(packet1, client); } } else if (command == "/stop") { if (client.gameID != -1) { if (games[client.gameID].type == GameType.GT_RPS) { PacketData.ChatMessagePacket packet1 = new PacketData.ChatMessagePacket("You have stopped playing RPS"); send(packet1, client); packet1 = new PacketData.ChatMessagePacket(client.name + " has to stop playing RPS. You have stopped playing RPS"); foreach (Client element in clients) { if (client.gameID == element.gameID && client.id != element.id) { send(packet1, element); } } if (client.id == games[client.gameID].clientID1) { clients[games[client.gameID].clientID2].gameID = -1; games.Remove(games[client.gameID]); client.gameID = -1; } else if (client.id == games[client.gameID].clientID2) { clients[games[client.gameID].clientID1].gameID = -1; games.Remove(games[client.gameID]); client.gameID = -1; } } if (games[client.gameID].type == GameType.GT_SNAKE) { PacketData.ChatMessagePacket packet1 = new PacketData.ChatMessagePacket("You have stopped playing snake"); send(packet1, client); packet1 = new PacketData.ChatMessagePacket(client.name + " has to stop playing snake. You have stopped playing RPS"); foreach (Client element in clients) { if (client.gameID == element.gameID && client.id != element.id) { send(packet1, element); } } PacketData.StopGame stop = new PacketData.StopGame(); send(stop, clients[games[client.gameID].clientID1]); send(stop, clients[games[client.gameID].clientID2]); if (client.id == games[client.gameID].clientID1) { clients[games[client.gameID].clientID2].gameID = -1; games.Remove(games[client.gameID]); client.gameID = -1; } else if (client.id == games[client.gameID].clientID2) { clients[games[client.gameID].clientID1].gameID = -1; games.Remove(games[client.gameID]); client.gameID = -1; } } } else { PacketData.ChatMessagePacket packet1 = new PacketData.ChatMessagePacket("You have nothing to stop"); send(packet1, client); } } else { PacketData.ChatMessagePacket packet1 = new PacketData.ChatMessagePacket("INVALID COMMAND"); send(packet1, client); } }
void TCPClientMethod(object clientObj) { int numOfIncomingBytes = 0; Client client = (Client)clientObj; while ((numOfIncomingBytes = client.reader.ReadInt32()) != 0) { byte[] buffer = client.reader.ReadBytes(numOfIncomingBytes); memoryStream.Write(buffer, 0, numOfIncomingBytes); memoryStream.Position = 0; binaryFormatter.Binder = new MyBinder.MyBinder(); PacketData.Packet rawPacket = (PacketData.Packet)binaryFormatter.Deserialize(memoryStream); memoryStream.SetLength(0); switch (rawPacket.type) { case PacketData.PacketType.CHATMESSAGE: PacketData.ChatMessagePacket packet = (PacketData.ChatMessagePacket)rawPacket; if (packet.message.Substring(0, 1) == "/") { Commands(packet, client); } if (client.gameID != -1 && games[client.gameID].state == GameState.GS_ACTIVE) { if (games[client.gameID].type == GameType.GT_RPS) { if (client.id == games[client.gameID].clientID1 && games[client.gameID].client1Input == null) { games[client.gameID].client1Input = packet.message; } if (client.id == games[client.gameID].clientID2 && games[client.gameID].client2Input == null) { games[client.gameID].client2Input = packet.message; } PlayRPS(games[client.gameID].clientID1, games[client.gameID].clientID2); } } else { foreach (Client element in clients) { if (element.gameID == -1) { PacketData.ChatMessagePacket packet1 = new PacketData.ChatMessagePacket(client.name + ": " + packet.message); send(packet1, element); } } } break; case PacketData.PacketType.NICKNAME: PacketData.NickNamePakcet nickNamePacket = (PacketData.NickNamePakcet)rawPacket; PacketData.ChatMessagePacket newPacket = new PacketData.ChatMessagePacket(client.Rename(client, nickNamePacket.nickName)); foreach (Client element in clients) { send(newPacket, element); } break; case PacketData.PacketType.SNAKEGAME: foreach (Game element in games) { if (element.clientID1 == client.id) { PacketData.GameMovement gamePacket = (PacketData.GameMovement)rawPacket; PlaySnake(element.clientID1, element.clientID2, gamePacket.input, "1"); } else if (element.clientID2 == client.id) { PacketData.GameMovement gamePacket = (PacketData.GameMovement)rawPacket; PlaySnake(element.clientID1, element.clientID2, gamePacket.input, "2"); } } break; case PacketData.PacketType.SCORE: foreach (Game element in games) { if (element.clientID1 == client.id || element.clientID2 == client.id) { PacketData.Score scorepacket = (PacketData.Score)rawPacket; SnakeScore(element.clientID1, element.clientID2, scorepacket, client); } } break; case PacketData.PacketType.APPLEPOS: foreach (Game element in games) { if (element.clientID1 == client.id || element.clientID2 == client.id) { SnakeGameApple(element.clientID1, element.clientID2); } } break; case PacketData.PacketType.PLAYER: foreach (Game element in games) { if (element.clientID1 == client.id) { PacketData.Player playerPacket = new PacketData.Player(1); send(playerPacket, client); } else if (element.clientID2 == client.id) { PacketData.Player playerPacket = new PacketData.Player(2); send(playerPacket, client); } } break; case PacketData.PacketType.LOGIN: PacketData.LoginPacket login = (PacketData.LoginPacket)rawPacket; HandlePacket(client, login.endPoint); break; case PacketData.PacketType.STOPGAME: PacketData.StopGame stop = (PacketData.StopGame)rawPacket; send(stop, client); break; case PacketData.PacketType.QUIT: PacketData.QuitPacket quit = (PacketData.QuitPacket)rawPacket; string message = client.name + " " + quit.message; PacketData.ChatMessagePacket newMessage = new PacketData.ChatMessagePacket(message); //PacketData.QuitPacket quitMessage = new PacketData.QuitPacket(client.name + quit.message); //send(quitMessage, client); client.tcpSocket.Close(); clients.Remove(client); foreach (Client element in clients) { send(newMessage, element); } break; } } }