View difference between Paste ID: j4ai4Xr8 and 5EsZzD5F
SHOW: | | - or go back to the newest paste.
1
    public class Ball
2
    {
3
        private Rectangle ballRect;   
4
        private AIBat rightBat;
5
        private Bat leftBat;
6
        private Rectangle rectangle3;
7
8
        /// <summary>
9
        /// Constructor for the ball
10
        /// </summary>
11
        public Ball(ContentManager contentManager, Vector2 ScreenSize, Bat bat, AIBat aiBat)
12
        {
13
            speed = 15f;
14
            texture = contentManager.Load<Texture2D>(@"gfx/balls/redBall");
15
            direction = 0;
16
            ballRect = new Rectangle(0, 0, texture.Width, texture.Height);
17
            resetBallPos = new Vector2(ScreenSize.X / 2 + origin.X, ScreenSize.Y / 2 + origin.Y);
18
            ballPosition = resetBallPos;
19
            rand = new Random();
20
            isVisible = true;
21
            origin = new Vector2(texture.Width / 2 , texture.Height / 2);
22
            leftBat = bat; // Creates a new instance of leftBat so that I can access Position.X/Y for LeftBatPatcicles()
23
            rightBat = aiBat;// Creates a new instance of leftBat so that I can access Position.X/Y for RightBatPatcicles()
24
            Rectangle rectangle3 = new Rectangle();
25
        }
26
27
     
28
        public void Draw(SpriteBatch spriteBatch)
29
        {
30
            if (isVisible)
31
            {
32
                // Draws the rotaing ball
33
                spriteBatch.Draw(texture, ballPosition, ballRect, Color.White,
34
                                  RotationAngle, origin, 1.0f, SpriteEffects.None, 0);
35
                // Draws the short particle
36
           //     shortParticle.Draw(spriteBatch);
37
                spriteBatch.Draw(texture, rectangle3, Color.Yellow);
38
39
            }
40
        }
41
42
        /// <summary>
43
        /// Updates position of the ball. Used in Update() for GameplayScreen.
44
        /// </summary>
45
        public void UpdatePosition(GameTime gameTime)
46
        {
47
            ballRect.X = (int)ballPosition.X;
48
            ballRect.Y = (int)ballPosition.Y;
49
            oldBallPos.X = ballPosition.X;
50
            oldBallPos.Y = ballPosition.Y;
51
        
52
            ballPosition.X += speed * ((float)Math.Cos(direction));
53
54
            ballPosition.Y += speed * ((float)Math.Sin(direction));
55
            bool collided = CheckWallHit();
56
57
            // Stops the issue where ball was oscillating on the ceiling or floor
58
            if (collided)
59
            {
60
                ballPosition.X = oldBallPos.X + speed * (float)Math.Cos(direction);
61
                ballPosition.Y = oldBallPos.Y + speed * (float)Math.Sin(direction);
62
            }
63
            
64
            // When the ball and bat collide, draw the rectangle where they intersect
65
            BatCollisionRect();          
66
67
            // The time since Update was called last.
68
            float elapsed = (float)gameTime.ElapsedGameTime.TotalSeconds;
69
70
            // Rotation for the ball
71
            RotationAngle += elapsed;
72
            float circle = MathHelper.Pi * 2;
73
            RotationAngle = RotationAngle % circle;        
74
        }
75
76
        
77
        /// <summary>
78
        /// Used to determine the location where the particles will initialize when the ball and bat collide
79
        /// </summary>
80-
        /// Checks for the collision between the bat and the ball. Sends ball in the appropriate
80+
81-
        /// direction
81+
82
            if (ballRect.Intersects(leftBat.batRect))
83-
        public void BatHit(int block)
83+
84
             rectangle3 = Rectangle.Intersect(ballRect, leftBat.batRect);
85-
            if (direction > Math.PI * 1.5f || direction < Math.PI * 0.5f)
85+
86
        }
87-
                RightBatParticles();
87+