Exemple #1
0
        /// <summary>
        /// Här sker spelets updatering av allt. Mynten rör sig genom att deras position uppdateras ständigt genom en metod i coin klassen som update loopar igenom med en foreach loop
        ///  Här i update går man bara igenom  listan som mynten sitter i och addar nya mynt med en timer som går av varje sekund. Bakgrundsklassen anropas också och update
        ///  kollar kollision mellan mus och respektive bakgrundsbild genom en bool. Kolission mellan paddel, boll, bonus kollas också genom att Update anropar respektive klass.
        ///  Här i Update kollas också vilken paddel som har träffat bollen och ifall bollen träffat bonusen med bools. Ifall båda boolsen är sanna så anropar update paddel klassen
        ///  och gör den paddel som har sin bool false mindre.
        /// </summary>
        /// <param name="gameTime">Provides a snapshot of timing values.</param>

        #region Update metod för main
        protected override void Update(GameTime gameTime)
        {
            //Ifall menyn är borta, börja räkna tiden
            if (menuScreen.GameState == false)
            {
                globalTimer += gameTime.ElapsedGameTime.TotalSeconds;
            }

            //För varje sekund så addas ett nytt coin objekt till coin listan, samtidigt som timern resettar sig själv
            if (menuScreen.GameState == true)
            {
                coinTimer -= gameTime.ElapsedGameTime.TotalSeconds;
                if (coinTimer <= 0)
                {
                    coins.Add(new Coin(Content.Load <Texture2D>("Coin"), new Vector2(random.Next(0, 780), 0)));
                    coinTimer = 1;
                }

                if (coins.Count > 20)
                {
                    coins.RemoveAt(19);
                }

                foreach (Coin coin in coins)
                {
                    coin.Update();
                }
            }
            //Musens position på skärmen
            state    = Mouse.GetState();
            mousePos = new Point(state.X, state.Y);

            //Ifall musens position är innanför respektive bakgrundsbild och man vänsterklickar, så väljs bakgrund
            //Intersect håller koll på vilken bakgrund det är
            #region
            if (state.LeftButton == ButtonState.Pressed && backGround1.BackGroundHitbox.Contains(mousePos))
            {
                backGround1.Intersect = true;
            }

            if (state.LeftButton == ButtonState.Pressed && backGround2.BackGroundHitbox.Contains(mousePos))
            {
                backGround2.Intersect = true;
            }

            if (state.LeftButton == ButtonState.Pressed && backGround3.BackGroundHitbox.Contains(mousePos))
            {
                backGround3.Intersect = true;
            }

            if (state.LeftButton == ButtonState.Pressed && backGround4.BackGroundHitbox.Contains(mousePos))
            {
                backGround4.Intersect = true;
            }

            if (state.LeftButton == ButtonState.Pressed && backGround5.BackGroundHitbox.Contains(mousePos))
            {
                backGround5.Intersect = true;
            }
            #endregion

            //Kollar ifall man tryckt på en bakgrund, och ifall musen är innanför objektets hitbox
            menuScreen.Update(backGround1, backGround2, backGround3, backGround4, backGround5);

            if (score1.Pause == false && globalTimer > 8)
            {
                //Kollar poängen
                score1.Update(leftPaddle, rightPaddle, ball1, Window, box, gameTime);

                //Paddlarnas rörelse och bollens rörelse ifall spelet är igång
                if (score1.StartRound == true)
                {
                    ball1.Update();
                    leftPaddle.Update(box);
                    rightPaddle.Update(box);
                }


                //Bollens kolission med paddlarna, anropar boll klassen ifall true
                if (ball1.BallHitbox.Intersects(leftPaddle.PaddleHitbox))
                {
                    ball1.Colission();
                }

                if (ball1.BallHitbox.Intersects(rightPaddle.PaddleHitbox))
                {
                    ball1.Colission();
                }

                box.Update(ball1, gameTime);

                //Kollar vilken paddel som knuffade bollen till bonusen, så att man kan avgöra vilken sida som träffade den
                //Ifall höger paddel träffade bonusen med bollen blir vänster paddel mindre och tvärtom
                #region
                if (ball1.BallHitbox.Intersects(leftPaddle.PaddleHitbox))
                {
                    leftPaddle.Intersect  = true;
                    rightPaddle.Intersect = false;
                }

                if (ball1.BallHitbox.Intersects(rightPaddle.PaddleHitbox))
                {
                    rightPaddle.Intersect = true;
                    leftPaddle.Intersect  = false;
                }

                if (leftPaddle.Intersect == true && box.Intersect == true)
                {
                    rightPaddle.PaddleHitbox = new Rectangle((int)rightPaddle.PaddlePos.X, (int)rightPaddle.PaddlePos.Y, 21, 80);
                    box.Intersect            = false;
                    rightPaddle.Small        = true;
                    rightPaddle.Big          = false;
                }

                if (rightPaddle.Intersect == true && box.Intersect == true)
                {
                    leftPaddle.PaddleHitbox = new Rectangle((int)leftPaddle.PaddlePos.X, (int)leftPaddle.PaddlePos.Y, 21, 80);
                    box.Intersect           = false;
                    leftPaddle.Small        = true;
                    leftPaddle.Big          = false;
                }
                #endregion
            }

            base.Update(gameTime);
        }