/// <summary> /// Diminuer les points de vie et changer la couleur de la texture quand /// l'Acteur est touché. /// </summary> /// <param name="degats">Les dommages infligés</param> /// <param name="ennemi">L'ennemi qui inflige les dégâts</param> public virtual void RecevoirDegats(int degats, Acteur ennemi) { pointsDeVie -= degats; touche = true; this.couleur = Color.Red; cptFlash = 0; }
/// <summary> /// Diminuer les points de vie et changer la couleur de la texture quand /// le survivant est touché. Mets à jour l'affichage des points de vie à l'écran, /// fait passer le survivant en état Offensif et fait jouer le son de blessure. /// </summary> /// <param name="degats">Les dommages infligés</param> /// <param name="ennemi">L'ennemi qui inflige les dégâts</param> public override void RecevoirDegats(int degats, Acteur ennemi) { base.RecevoirDegats(degats, ennemi); TexteVie = pointsDeVie + "/" + PointsDeVieMax; CiblePersonnage = ennemi; etat = new EtatOffensif(this); SymboleEtat = "O"; SonBlesse.Play(); }
public Acteur(Texture2D image, Vector2 position, float rotation, Vector2 limiteHautGauche, Vector2 limiteBasDroit, int pointsdeVie, float vitesse, int force, Acteur cible, Camp campAdverse, SpriteBatch batch, SpriteFont font) : base(image, position, batch, font) { this.rotation = rotation; this.centrageDuPivot = new Vector2(image.Width / 2, image.Height / 2); this.boiteCollision = new BoundingBox(new Vector3(position.X - centrageDuPivot.X, position.Y - centrageDuPivot.Y, 0), new Vector3(position.X + centrageDuPivot.X, position.Y + centrageDuPivot.Y, 0)); this.sphereCollision = new BoundingSphere(new Vector3(position.X, position.Y, 0), centrageDuPivot.X); this.limiteHautGauche = limiteHautGauche + centrageDuPivot; this.limiteBasDroit = limiteBasDroit - centrageDuPivot; this.pointsDeVie = pointsdeVie; this.vitesse = vitesse; this.force = force; this.couleur = Color.White; this.cible = cible; this.CampAdverse = campAdverse; prochaineAttaque = rythmeAttaque; touche = false; }
public virtual void Update() { prochaineAttaque--; DistanceAvecCampSurvivants = CalculerDistance(position, CampAdverse.Cible); if (CiblePersonnage != null) { // Si le zombie a tué sa cible ou ne la détecte plus, il continue à se diriger vers le camp adverse if (CiblePersonnage.PointsdeVie <= 0 || CalculerDistance(position, CiblePersonnage.Position) >= rayonDetection) { etat = new EtatNormal_Z(this); } } else { // Si le zombie n'a pas de cible, il essaie d'en trouver une nouvelle Acteur nouvelleCible = TrouverEnnemisAProximite(); if (nouvelleCible != null) { CiblePersonnage = nouvelleCible; etat = new EtatOffensif_Z(this); } } // Si le zombie a été touché, il clignote rouge if (touche) { cptFlash++; } if (cptFlash >= tempsFlashRouge) { cptFlash = 0; couleur = Color.White; } etat.OnUpdate(); }
public Zombie(Texture2D image, Vector2 positionDepart, float rotation, Vector2 limiteHautGauche, Vector2 limiteBasDroite, int vie, float vitesse, int force, Acteur cible, Camp campAdverse, SpriteBatch batch, SpriteFont font) : base(image, positionDepart, rotation, limiteHautGauche, limiteBasDroite, vie, vitesse, force, cible, campAdverse, batch, font) { etat = new EtatNormal_Z(this); }
public override void RecevoirDegats(int degats, Acteur ennemi) { base.RecevoirDegats(degats, this); TexteVie = pointsDeVie + "/" + pointsDeVieMax; }
public Coureur(Vector2 positionDepart, float rotation, Vector2 limiteHautGauche, Vector2 limiteBasDroite, Acteur cible, Camp campAdverse, SpriteBatch batch, SpriteFont font) : base(TEXTURE, positionDepart, rotation, limiteHautGauche, limiteBasDroite, VIE_MAX_COUREUR, VITESSE_COUREUR, FORCE_COUREUR, cible, campAdverse, batch, font) { rythmeAttaque = RYTHME_ATTAQUE_COUREUR; TexteVie = VIE_MAX_COUREUR + "/" + VIE_MAX_COUREUR; pointsDeVieMax = VIE_MAX_COUREUR; rayonDetection = RAYON_DETECTION_COUREUR; rayonAttaque = RAYON_ATTAQUE_COUREUR; }
public static Zombie CreerZombie(typeZombie zombie, Vector2 positionDepart, float rotation, Vector2 limiteHautGauche, Vector2 limiteBasDroite, Acteur cible, Camp campAdverse, SpriteBatch batch, SpriteFont font) { if (zombie == typeZombie.Coureur) { return(new Coureur(positionDepart, rotation, limiteHautGauche, limiteBasDroite, cible, campAdverse, batch, font)); } else { return(new Tank(positionDepart, rotation, limiteHautGauche, limiteBasDroite, cible, campAdverse, batch, font)); } }
public static Survivant CreerSurvivant(typeSurvivant type, Vector2 positionDepart, float rotation, Vector2 limiteHautGauche, Vector2 limiteBasDroite, Acteur cible, Camp campAdverse, SpriteBatch batch, SpriteFont font) { if (type == typeSurvivant.Sniper) { return(new Sniper(positionDepart, rotation, limiteHautGauche, limiteBasDroite, cible, campAdverse, batch, font)); } else if (type == typeSurvivant.Escrimeur) { return(new Escrimeur(positionDepart, rotation, limiteHautGauche, limiteBasDroite, cible, campAdverse, batch, font)); } else { return(new Soldat(positionDepart, rotation, limiteHautGauche, limiteBasDroite, cible, campAdverse, batch, font)); } }
public Sniper(Vector2 positionDepart, float rotation, Vector2 limiteHautGauche, Vector2 limiteBasDroite, Acteur cible, Camp campAdverse, SpriteBatch batch, SpriteFont font) : base(TEXTURE, positionDepart, rotation, limiteHautGauche, limiteBasDroite, VIE_MAX_SNIPER, VITESSE_SNIPER, FORCE_SNIPER, cible, campAdverse, batch, font) { rythmeAttaque = RYTHME_ATTAQUE_SNIPER; rayonAttaque = RAYON_ATTAQUE_SNIPER; rayonDetection = rayonAttaque; PointsDeVieMax = VIE_MAX_SNIPER; TexteVie = VIE_MAX_SNIPER + "/" + VIE_MAX_SNIPER; this.positionDepart = positionDepart; }