public FourPlayerState(ContentManager Content)
        {
            player1 = new Paddle(Content.Load<Texture2D>("rodeSpeler"), Content.Load<Texture2D>("balRood"), new Vector2(0, 400), 350, Keys.W, Keys.S, true, "Player 1");
            player2 = new Paddle(Content.Load<Texture2D>("blauweSpeler"), Content.Load<Texture2D>("balBlauw"), new Vector2(Practicum1.Screen.X - 16, 400), 350, Keys.Up, Keys.Down, true, "Player 2");
            player3 = new Paddle(Content.Load<Texture2D>("geleSpeler"), Content.Load<Texture2D>("balGeel"), new Vector2(400, 0), 350, Keys.U, Keys.I, false, "Player 3");
            player4 = new Paddle(Content.Load<Texture2D>("groeneSpeler"), Content.Load<Texture2D>("balGroen"), new Vector2(400, Practicum1.Screen.Y - 16), 350, Keys.V, Keys.B, false, "Player 4");
            
            paddleList.Add(player1);
            paddleList.Add(player2);
            paddleList.Add(player3);
            paddleList.Add(player4);

            ball = new Ball(Content.Load<Texture2D>("bal"), new Vector2(Practicum1.Screen.X / 2, Practicum1.Screen.Y / 2), 275, paddleList, "Ball");
            
            powerUp1 = new PowerUp(null, new Vector2(0, 0), Content, "Powerup 1");
            powerUp2 = new PowerUp(null, new Vector2(0, 0), Content, "Powerup 2");
            
            powerUpList.Add(powerUp1);
            powerUpList.Add(powerUp2);

            pausedText = new TextObject("Game paused.", new Vector2(Practicum1.Screen.X / 2 - 80, Practicum1.Screen.Y / 2), Color.Black, null, "Pause Text");
            pausedText.Visible = false;

            
            this.Add(player1);
            this.Add(player2);
            this.Add(player3);
            this.Add(player4);
            this.Add(ball);
            this.Add(powerUp1);
            this.Add(powerUp2);
            this.Add(pausedText);
        }
 public AIPlayerState(ContentManager Content)
 {
     player1 = new Paddle(Content.Load<Texture2D>("rodeSpeler"), Content.Load<Texture2D>("balRood"), new Vector2(0, 300), 350, Keys.W, Keys.S, true, "Player 1");
     player2 = new PaddleAI(Content.Load<Texture2D>("blauweSpeler"), Content.Load<Texture2D>("balBlauw"), new Vector2(Practicum1.Screen.X - 15, 300), 350, true, "Player 2");
     paddleList.Add(player1);
     paddleList.Add(player2);
     ball = new Ball(Content.Load<Texture2D>("bal"), new Vector2(Practicum1.Screen.X / 2, Practicum1.Screen.Y / 2), 275, paddleList, "Ball");
     this.Add(player1);
     this.Add(player2);
     this.Add(ball);
     player2.Ball = ball;
 }
 public override void Update(GameTime gameTime)
 {
     winPaddle = Practicum1.WinPaddle;
     if(winText == null)
     {
         winText = new TextObject(winPaddle.Name + " has won! Press space to return to main menu", new Vector2(Practicum1.Screen.X / 2 - 200, Practicum1.Screen.Y - 150), Color.Black, null, "winText");
         this.Add(winText);
     }
     else
     {
         winText.Text = winPaddle.Name + " has won!\nPress space to return to main menu";
     }
 }
 public TrollState(ContentManager Content)
 {
     player1 = new Paddle(Content.Load<Texture2D>("rodeSpeler"), Content.Load<Texture2D>("balRood"), new Vector2(0, 300), 350, Keys.W, Keys.S, true, "Player 1");
     player2 = new Paddle(Content.Load<Texture2D>("blauweSpeler"), Content.Load<Texture2D>("balBlauw"), new Vector2(Practicum1.Screen.X - 15, 300), 350, Keys.Up, Keys.Down, true, "Player 2");
     paddleList.Add(player1);
     paddleList.Add(player2);
     for (int i = 0; i < 100; ++i)
     {
         ballarray[i] = new Ball(Content.Load<Texture2D>("bal"), new Vector2(Practicum1.Screen.X / 2 + 5 * i, Practicum1.Screen.Y / 2 + 5 * i), 275, paddleList, "Ball" + i);
         this.Add(ballarray[i]);
     }
     this.Add(player1);
     this.Add(player2);
 }
 public void Reset(Paddle paddle)
 {
     position = new Vector2(Practicum1.Screen.X / 2, Practicum1.Screen.Y / 2);
     
     if (paddle.Name.Equals("Player 1"))
         direction = 0.75 * Math.PI + random.NextDouble() * 0.5 * Math.PI;
     else if (paddle.Name.Equals("Player 2"))
         direction = 0.25 * Math.PI - random.NextDouble() * 0.5 * Math.PI;
     else if (paddle.Name.Equals("Player 3"))
         direction = 0.25 * Math.PI + random.NextDouble() * 0.5 * Math.PI;
     else if (paddle.Name.Equals("Player 4"))
         direction = 0.75 * Math.PI - random.NextDouble() * 0.5 * Math.PI;
     lastBouncePaddle = null;
     speed = startSpeed;
 }
 public void Bounce(Paddle paddle)
 {
     if(paddle.Name.Equals("Player 1"))
     {
         float relativeIntersectY = (paddle.Position.Y + ((paddle.Sprite.Height * paddle.SpriteScale) / 2) - position.Y);
         float normalizedIntersectY = (relativeIntersectY / ((paddle.Sprite.Height * paddle.SpriteScale) / 2));
         direction = normalizedIntersectY * (-1 * Math.PI / 3);
         
     }
     else if(paddle.Name.Equals("Player 2"))
     {
         float relativeIntersectY = (paddle.Position.Y + ((paddle.Sprite.Height * paddle.SpriteScale) / 2) - position.Y);
         float normalizedIntersectY = (relativeIntersectY / (paddle.Sprite.Height * paddle.SpriteScale) / 2); 
         direction = Math.PI - normalizedIntersectY * (-1 * Math.PI / 3);
     }
     else if(paddle.Name.Equals("Player 3"))
     {
         float relativeIntersectX = (paddle.Position.X + ((paddle.Sprite.Width * paddle.SpriteScale) / 2) - position.X);
         float normalizedIntersectX = (relativeIntersectX / (paddle.Sprite.Width * paddle.SpriteScale) / 2);
         direction = (0.5 * Math.PI) - normalizedIntersectX * (-2 * Math.PI / 3);
     }
     else if (paddle.Name.Equals("Player 4"))
     {
         float relativeIntersectX = (paddle.Position.X + ((paddle.Sprite.Width * paddle.SpriteScale) / 2) - position.X);
         float normalizedIntersectX = (relativeIntersectX / (paddle.Sprite.Width * paddle.SpriteScale) / 2);
         direction = (1.5 * Math.PI) + normalizedIntersectX * (-2 * Math.PI / 3);
     }
     lastBouncePaddle = paddle;
     speed *= 1.04;
 }