protected async override void Initialize() { tcpClient.ConnectToServer(); await tcpClient.ReceiveResponseAsync(); state = "game"; InitialInfoPacket initialInfo = new InitialInfoPacket(tcpClient.LastResponse); snakeUser = new SnakeUser(initialInfo.id, initialInfo.snakes[initialInfo.id]); HEIGHT = initialInfo.height; WIDTH = initialInfo.width; CELLSIZE = initialInfo.cellSize; map = new Map(HEIGHT, WIDTH, CELLSIZE); for (int i = 0; i < initialInfo.snakeCount; i++) { map.AddSnake(new Snake(initialInfo.snakes[i], initialInfo.initialInvincibility)); } graphics.PreferredBackBufferHeight = map._height * map._cellSize; graphics.PreferredBackBufferWidth = map._width * map._cellSize; graphics.ApplyChanges(); _ = tcpClient.RunTaskAfterResponseLoopAsync(() => ResponseWrapper()); base.Initialize(); }
static void PrepareGame() { map = new MasterMap(HEIGHT, WIDTH, CELLSIZE); for (int i = 0; i < users.Count; i++) { map.AddSnakeRandomPosition(initialInvincibility); } List <Vector2> snakesPositions = new List <Vector2>(); foreach (Snake s in map.snakes) { snakesPositions.Add(s.position); } Console.WriteLine(String.Format("Map created.\nDimensions: {0}x{1}\nCell size: {2}\nPlayers: {3}", WIDTH, HEIGHT, CELLSIZE, map.snakes.Count)); Console.WriteLine(); for (int i = 0; i < users.Count; i++) { User user = users[i]; InitialInfoPacket initialInfo = new InitialInfoPacket(HEIGHT, WIDTH, CELLSIZE, users.Count, i, snakesPositions, initialInvincibility); byte[] data = Encoding.ASCII.GetBytes(initialInfo.serialized); try { user.SendData(data); } catch (Exception e) { Console.WriteLine(e); } Console.WriteLine(String.Format("Initial info sent to {0}", user.username)); } Console.WriteLine(); }