public Brique(BriqueLevel Vie, int screenHeight, int screenWidth) { _screenHeight = screenHeight; _screenWidth = screenWidth; _Vie = Vie; _VieOriginelle = Vie; _BonusEventuel = new Bonus(); }
public void Update(Microsoft.Xna.Framework.GameTime gameTime, Balle _Balle, Raquette _Raquette) { if (_Vie != BriqueLevel.Morte) { if (_Raquette.ListeBonus.ContainsKey(BonusType.PowerBall)) { _Balle.PowerBall = true; } else { _Balle.PowerBall = false; } bool InvertX = false; bool InvertY = false; bool Collision = false; //Colision Balle Venant du haut et de gauche if (_Balle.Direction.Y > 0 && _Balle.Direction.X > 0) { InvertX = false; InvertY = false; Collision = false; //Colision a gauche if(CollisionRectangleGauche.Contains((int)_Balle.CenterPositionX, (int)_Balle.CenterPositionY)) { Collision = true; InvertX = true; } //Colision en haut if (CollisionRectangleHaut.Contains((int)_Balle.CenterPositionX, (int)_Balle.CenterPositionY)) { Collision = true; InvertY = true; } if (!Collision && CollisionRectangleHautGauche.Contains((int)_Balle.CenterPositionX, (int)_Balle.CenterPositionY)) { if ((Position.X - _Balle.CenterPositionX) < (Position.Y - _Balle.CenterPositionY)) //Balle plus proche du rectangle du haut { Collision = true; InvertY = true; } else //Balle plus proche du rectangle du côté { Collision = true; InvertX = true; } } } //Collision Balle venant du haut et de droite else if (_Balle.Direction.Y > 0 && _Balle.Direction.X < 0) { InvertX = false; InvertY = false; Collision = false; //Colision a droite if (CollisionRectangleDroite.Contains((int)_Balle.CenterPositionX, (int)_Balle.CenterPositionY)) { Collision = true; InvertX = true; } //Colision en haut if (CollisionRectangleHaut.Contains((int)_Balle.CenterPositionX, (int)_Balle.CenterPositionY)) { Collision = true; InvertY = true; } if (!Collision && CollisionRectangleHautDroit.Contains((int)_Balle.CenterPositionX, (int)_Balle.CenterPositionY)) { if ((_Balle.CenterPositionX - (Position.X + C_DEFAULT_BRIQUE_WIDTH)) < (Position.Y - _Balle.CenterPositionY)) //Balle plus proche du rectangle du haut { Collision = true; InvertY = true; } else //Balle plus proche du rectangle du côté { Collision = true; InvertX = true; } } } //Collision Balle venant du bas et de droite else if (_Balle.Direction.Y < 0 && _Balle.Direction.X < 0) { InvertX = false; InvertY = false; Collision = false; //Colision a droite if (CollisionRectangleDroite.Contains((int)_Balle.CenterPositionX, (int)_Balle.CenterPositionY)) { Collision = true; InvertX = true; } //Colision en bas if (CollisionRectangleBas.Contains((int)_Balle.CenterPositionX, (int)_Balle.CenterPositionY)) { Collision = true; InvertY = true; } if (!Collision && CollisionRectangleBasDroit.Contains((int)_Balle.CenterPositionX, (int)_Balle.CenterPositionY)) { if ((_Balle.CenterPositionX - (Position.X + C_DEFAULT_BRIQUE_WIDTH)) < (_Balle.CenterPositionY - (Position.Y + C_DEFAULT_BRIQUE_HEIGHT))) //Balle plus proche du rectangle du bas { Collision = true; InvertY = true; } else //Balle plus proche du rectangle du côté { Collision = true; InvertX = true; } } } //Collision Balle venant du bas et de Gauche else if (_Balle.Direction.Y < 0 && _Balle.Direction.X > 0) { InvertX = false; InvertY = false; Collision = false; //Colision a gauche if (CollisionRectangleGauche.Contains((int)_Balle.CenterPositionX, (int)_Balle.CenterPositionY)) { Collision = true; InvertX = true; } //Colision en bas if (CollisionRectangleBas.Contains((int)_Balle.CenterPositionX, (int)_Balle.CenterPositionY)) { Collision = true; InvertY = true; } if (!Collision && CollisionRectangleBasGauche.Contains((int)_Balle.CenterPositionX, (int)_Balle.CenterPositionY)) { if ((Position.X - _Balle.CenterPositionX) < (_Balle.CenterPositionY - (Position.Y + C_DEFAULT_BRIQUE_HEIGHT))) //Balle plus proche du rectangle du bas { Collision = true; InvertY = true; } else //Balle plus proche du rectangle du côté { Collision = true; InvertX = true; } } } if (Collision) { if (_Raquette.ListeBonus.ContainsKey(BonusType.PowerBall)) { _Vie = BriqueLevel.Morte; } else { if (_Vie != BriqueLevel.Incassable) { _Vie--; } _Balle.ToucheBrique(InvertX, InvertY); } _Raquette.UpdateScore(100); if (_VieOriginelle > _Vie) { MustReloadContent = true; } } foreach (Bullets Bullet in _Raquette.ListeBullets) { if (CollisionRectangleBrique.Intersects(Bullet.CollisionRectangle)) { if (_Vie != BriqueLevel.Incassable) { _Vie--; } Bullet.isObsolete = true; _Raquette.UpdateScore(100); if (_VieOriginelle > _Vie) { MustReloadContent = true; } } } if (_Vie == BriqueLevel.Morte) { _Raquette.UpdateScore(500); } } else { if (!_BonusEventuel.isObsolete) { _BonusEventuel.Update(gameTime, _Raquette); } } }