public ClientCommand AcceptClientCommand() { TcpClient newTcpClient; newTcpClient = AcceptTcpClient(); if (newTcpClient != null) { ClientCommand newClientCommand = new ClientCommand(newTcpClient); return newClientCommand; } else { return null; } }
public ClientCommand AcceptClientCommand() { TcpClient newTcpClient; newTcpClient = AcceptTcpClient(); if (newTcpClient != null) { ClientCommand newClientCommand = new ClientCommand(newTcpClient); return(newClientCommand); } else { return(null); } }
public void Process(ClientCommand client) { BaseCommand bcmd = client.ReceiveLastCommand(); switch (bcmd.ID) { case 2: Intro command = bcmd as Intro; Response answer = null; if (dataOfThisGame.phaseOfGame == phase.game || dataOfThisGame.phaseOfGame == phase.result) { answer = new Response("notok", "Game has already start"); client.SendNewCommand(answer as BaseCommand); break; } bool flag = true; foreach (KeyValuePair <int, string> player in listOfPlayersAndTheirNickname) { if (player.Value == command.Name) { answer = new Response("notok", "Player with this nickname already exists"); client.SendNewCommand(answer as BaseCommand); flag = false; break; } } if (flag) { answer = new Response("ok", "welcome, " + command.Name); listOfPlayersAndTheirNickname.Add(client.id, command.Name); clients[client.id].CurrentStatus = status.on; dataOfThisGame.AddNewPlayer(command.Name); client.SendNewCommand(answer as BaseCommand); client.SendNewCommand(dataOfThisGame.FormCommandOfTimeLeft() as BaseCommand); for (int i = 1; i < ClientCommand.nextID; i++) { if (clients.ContainsKey(i) && clients[i].CurrentStatus == status.on) { clients[i].SendNewCommand(dataOfThisGame.FormCommandOfPlayersList() as BaseCommand); //Костыль. Почему так???????? Thread.Sleep(100); } } } break; case 4: Chat messageCommand = bcmd as Chat; Chat messageFromServer; messageFromServer = new Chat(messageCommand.Text.ToUpper()); client.SendNewCommand(messageFromServer as BaseCommand); break; case 10: PlayerMove movement = bcmd as PlayerMove; for (int i = 1; i < ClientCommand.nextID; i++) { if (clients.ContainsKey(i) && clients[i].CurrentStatus == status.on && client == clients[i]) { dataOfThisGame.PlayerMoved(movement.Direction, listOfPlayersAndTheirNickname[i]); } } for (int i = 1; i <= ClientCommand.nextID; i++) { if (clients.ContainsKey(i) && clients[i].CurrentStatus == status.on) { if (client == clients[i]) { client.SendNewCommand(dataOfThisGame.FormCommandOfPlayerCoords(listOfPlayersAndTheirNickname[i]) as BaseCommand); client.SendNewCommand(dataOfThisGame.FormCommandOfVisibleObjects(i - 1) as BaseCommand); } clients[i].SendNewCommand(dataOfThisGame.FormCommandOfVisiblePlayers(listOfPlayersAndTheirNickname[i]) as BaseCommand); } Thread.Sleep(100); } break; case 12: PlayerDisconnect disconnectCommand = bcmd as PlayerDisconnect; for (int j = 1; j <= ClientCommand.nextID; j++) { if (clients.ContainsKey(j) && clients[j] == client) { clients[j].Disconnect(); clients.Remove(j); Console.WriteLine("Клиент " + listOfPlayersAndTheirNickname[j] + " отключился"); dataOfThisGame.DeletePlayer(listOfPlayersAndTheirNickname[j]); listOfPlayersAndTheirNickname.Remove(j); } } client.Disconnect(); for (int q = 1; q <= ClientCommand.nextID; q++) { if (clients.ContainsKey(q)) { clients[q].SendNewCommand(dataOfThisGame.FormCommandOfPlayersList() as BaseCommand); Thread.Sleep(100); } } break; default: Console.WriteLine("Неизвестная команда"); break; } }
public void Process(ClientCommand client) { BaseCommand bcmd = client.ReceiveLastCommand(); switch (bcmd.ID) { case 2: Intro command = bcmd as Intro; Response answer = null; if (dataOfThisGame.phaseOfGame == phase.game || dataOfThisGame.phaseOfGame == phase.result) { answer = new Response("notok", "Game has already start"); client.SendNewCommand(answer as BaseCommand); break; } bool flag = true; foreach (KeyValuePair<int, string> player in listOfPlayersAndTheirNickname) { if (player.Value == command.Name) { answer = new Response("notok", "Player with this nickname already exists"); client.SendNewCommand(answer as BaseCommand); flag = false; break; } } if (flag) { answer = new Response("ok", "welcome, " + command.Name); listOfPlayersAndTheirNickname.Add(client.id, command.Name); clients[client.id].CurrentStatus = status.on; dataOfThisGame.AddNewPlayer(command.Name); client.SendNewCommand(answer as BaseCommand); client.SendNewCommand(dataOfThisGame.FormCommandOfTimeLeft() as BaseCommand); for (int i = 1; i < ClientCommand.nextID; i++) { if (clients.ContainsKey(i) && clients[i].CurrentStatus == status.on) { clients[i].SendNewCommand(dataOfThisGame.FormCommandOfPlayersList() as BaseCommand); //Костыль. Почему так???????? Thread.Sleep(100); } } } break; case 4: Chat messageCommand = bcmd as Chat; Chat messageFromServer; messageFromServer = new Chat(messageCommand.Text.ToUpper()); client.SendNewCommand(messageFromServer as BaseCommand); break; case 10: PlayerMove movement = bcmd as PlayerMove; for (int i = 1; i < ClientCommand.nextID; i++) { if (clients.ContainsKey(i) && clients[i].CurrentStatus == status.on && client == clients[i]) { dataOfThisGame.PlayerMoved(movement.Direction, listOfPlayersAndTheirNickname[i]); } } for (int i = 1; i <= ClientCommand.nextID; i++) { if (clients.ContainsKey(i) && clients[i].CurrentStatus == status.on) { if (client == clients[i]) { client.SendNewCommand(dataOfThisGame.FormCommandOfPlayerCoords(listOfPlayersAndTheirNickname[i]) as BaseCommand); client.SendNewCommand(dataOfThisGame.FormCommandOfVisibleObjects(i - 1) as BaseCommand); } clients[i].SendNewCommand(dataOfThisGame.FormCommandOfVisiblePlayers(listOfPlayersAndTheirNickname[i]) as BaseCommand); } Thread.Sleep(100); } break; case 12: PlayerDisconnect disconnectCommand = bcmd as PlayerDisconnect; for (int j = 1; j <= ClientCommand.nextID; j++) { if (clients.ContainsKey(j) && clients[j] == client) { clients[j].Disconnect(); clients.Remove(j); Console.WriteLine("Клиент " + listOfPlayersAndTheirNickname[j] + " отключился"); dataOfThisGame.DeletePlayer(listOfPlayersAndTheirNickname[j]); listOfPlayersAndTheirNickname.Remove(j); } } client.Disconnect(); for (int q = 1; q <= ClientCommand.nextID; q++) { if (clients.ContainsKey(q)) { clients[q].SendNewCommand(dataOfThisGame.FormCommandOfPlayersList() as BaseCommand); Thread.Sleep(100); } } break; default: Console.WriteLine("Неизвестная команда"); break; } }