Example #1
0
        public override void Update()
        {
            prochaineAttaque--;

            // Priorité no2: Attaquer le tank près de la base s'il y en a un
            if (Alerte && !(etat is EtatAlerte))
            {
                etat = new EtatAlerte(this);
            }
            else if (!Alerte)
            {
                // Toujours chercher la cible la plus proche si le soldat n'est pas en train de se regénérer
                if (!(etat is EtatCache))
                {
                    CiblePersonnage = TrouverEnnemiPlusProche(position);
                }

                // Attaquer la cible si ce n'est pas déjà le cas
                if (CiblePersonnage != null && !(etat is EtatOffensif))
                {
                    etat = new EtatOffensif(this);
                }
            }
            // Priorité no1: Aller se cacher si <25% de point de vie
            if (pointsDeVie <= VIE_MAX_SOLDAT / 4 && !(etat is EtatCache))
            {
                //TrouverCouvertPlusProche();
                //CiblePersonnage = null;
                etat = new EtatCache(this);
            }

            base.Update();

            etat.OnUpdate();
        }
Example #2
0
        public override void Update()
        {
            prochaineAttaque--;


            // Priorité no2: Attaquer le tank près de la base s'il y en a un
            if (Alerte && !(etat is EtatAlerte))
            {
                etat = new EtatAlerte(this);
            }

            else if (!Alerte)
            {
                // Si le sniper n'a plus de cible et qu'il est dans son nid, il choisi
                // comme nouvelle cible l'ennemi le plus près de la base
                if (CiblePersonnage == null && positionDepart == Position)
                {
                    CiblePersonnage = TrouverEnnemiPlusProche(CampAmi.Cible);
                    if (CiblePersonnage != null)
                    {
                        etat = new EtatOffensif(this);
                    }
                }
            }
            // Priorité no1: Aller se cacher si <25% de point de vie
            if (pointsDeVie <= PointsDeVieMax / 4)
            {
                //TrouverCouvertPlusProche();
                etat = new EtatCache(this);
                //CiblePersonnage = null;
            }

            base.Update();

            etat.OnUpdate();
        }