public void Connect() { IPEndPoint ipPoint = new IPEndPoint(IPAddress.Parse(serverIP), serverPort); Socket ClientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); ClientPlayer = new Player(); ClientSocket.Connect(ipPoint); SendPlayerPos(ClientSocket); Server.LobbyInfo LobbyInfo = ReceiveGameInfo(ClientSocket, false) as Server.LobbyInfo; //Creating Lobby string[] NullArray = new string[0]; string Title = $"Waiting for Players to connect - {LobbyInfo.NumberOfPlayers - 1 - LobbyInfo.ConnectedPlayers.Count}"; Interface.AnswerInterface(Title, NullArray);//Lobby Initialization Console.CursorTop += 2; int OrigTop = Console.CursorTop; for (int i = 0; i < LobbyInfo.ConnectedPlayers.Count; i++) { Console.SetCursorPosition(6, OrigTop + 2 * i); Console.Write("\x4 {0} - is connected.", (char)(i + 1)); } int NumOfPlayersToConnect = LobbyInfo.NumberOfPlayers - 1 - LobbyInfo.ConnectedPlayers.Count; for (int i = 0; i < NumOfPlayersToConnect; i++) { LobbyInfo = ReceiveGameInfo(ClientSocket, false) as Server.LobbyInfo; Title = $"Waiting for Players to connect - {NumOfPlayersToConnect - i}"; Interface.AnswerInterfaceTitleChange(Title); Console.SetCursorPosition(6, OrigTop + 2 * LobbyInfo.ConnectedPlayers.Count - 1); Console.Write("\x4 {0} - is connected.", (char)LobbyInfo.ConnectedPlayers.Count); } Console.Clear(); //End of Lobby stage ClientPlayer = ReceiveGameInfo(ClientSocket, false) as Player; //Player registration GameInfo = ReceiveGameInfo(ClientSocket, false) as Multiplayer.MultiplayerGame.GameInfo; //Game registration while (true) { GameInfo = ReceiveGameInfo(ClientSocket) as Multiplayer.MultiplayerGame.GameInfo; ClientPlayer.MovementAsync(GameInfo.Map); SendPlayerPos(ClientSocket); Interface.MultiplayerMapDraw(GameInfo.Map, GameInfo.Players, GameInfo.Food); Interface.MultiplayerShowPoints(GameInfo.Map, GameInfo.Players); } }
private void SendGameInfo() { Message message = new Message(); Multiplayer.MultiplayerGame.GameInfo Info = Game.GetGameInfo(); message.PacketWrapper(Foo.Serialize(Info).Data); for (int i = 0; i < ConnectedPlayers.Count; i++) { ConnectedPlayers.Keys.ToArray()[i].Send(message.Data); } }