void CheckPlayerCollision(Player player) { if (Position.X + size.X > player.Position.X && Position.X < player.Position.X + player.Size.X || player.Position.X + player.Size.X > Position.X && player.Position.X < Position.X + size.X) { if (Position.Y + size.Y > player.Position.Y && Position.Y < player.Position.Y + player.Size.Y || player.Position.Y + player.Size.Y > Position.Y && player.Position.Y < Position.Y + size.Y) { Collision(Axis.X); int x = 1; if (directionVector.X < 0) { x = -1; } directionVector = player.UpdateDirectionVector(Position, x); if (PongConnection.PlayerID == -1) { ConnectionHandler.SendBallDataToAllClients(); } } } }
public override void Update(GameTime gameTime) { if (PongConnection.running) { if (ellapsedTime < startTime) { ellapsedTime += gameTime.ElapsedGameTime.TotalSeconds; } else { Position += directionVector * (float)gameTime.ElapsedGameTime.TotalSeconds; } CheckBorderCollision(new Vector2(windowSize.X, windowSize.Y / 2), new Vector2(2, windowSize.Y), 1); CheckBorderCollision(new Vector2(0, windowSize.Y / 2), new Vector2(2, windowSize.Y), 2); CheckBorderCollision(new Vector2(windowSize.X / 2, windowSize.Y), new Vector2(windowSize.X, 2)); CheckBorderCollision(new Vector2(windowSize.X / 2, 0), new Vector2(windowSize.X, 2)); foreach (Player player in Player.players) { CheckPlayerCollision(player); } if (PongConnection.PlayerID == -1) { timeSinceBallSync += (float)gameTime.ElapsedGameTime.TotalSeconds; if (timeSinceBallSync > ballSyncIntervall) { ConnectionHandler.SendBallDataToAllClients(); } } } }
/// <summary> /// Listens to new incoming clients (aka connections). /// </summary> static void ListenToClients() { Console.WriteLine("SERVER"); while (true) { Socket newSocket = socket.Accept(); ConnectionHandler newClient = new ConnectionHandler(newSocket); while (!newClient.initalized) { Thread.Sleep(1); } if (ConnectionHandler.connections != null) { Console.WriteLine("Connections: " + ConnectionHandler.connections.Length); if (ConnectionHandler.connections.Length > 1) { running = true; ConnectionHandler.SendBallDataToAllClients(); } } } }
/// <summary> /// Initializes the game creating new Player instances and the Ball. /// </summary> public static void InitializeGame() { if (players == null) { players = new Player[2]; players[0] = new Player(10); players[1] = new Player(Singleton.GraphicsDevice.Viewport.Width - 25); ball = new Ball(Singleton.GraphicsDevice); Thread.Sleep(20); ConnectionHandler.SendBallDataToAllClients(); } }