/// <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); }