Exemple #1
0
 /**
  * Détermine si la collision doit donner lieu à un combat
  * @return bool
  */
 public function isCombat()
 {
     if (!$this->qg1->getJoueur()->isEnnemi($this->qg2->getJoueur())) {
         return false;
     }
     if ($this->qg1->getIdTypeMission() == Missions::INTERCEPTION || $this->qg2->getIdTypeMission() == Missions::INTERCEPTION) {
         return true;
     }
     if ($this->qg1->getIdTypeQg() == $this->qg2->getIdTypeQg()) {
         return true;
     }
     if (($this->qg1->getIdTypeQg() == Unites::TYPE_TERRESTRE && $this->qg2->getIdTypeQg() == Unites::TYPE_AERIEN || $this->qg2->getIdTypeQg() == Unites::TYPE_TERRESTRE && $this->qg1->getIdTypeQg() == Unites::TYPE_AERIEN) && ($this->qg1->getUnites()->typeExists(Unites::DCA) || $this->qg2->getUnites()->typeExists(Unites::DCA))) {
         return true;
     }
     if (($this->qg1->getIdTypeQg() == Unites::TYPE_NAVAL && $this->qg2->getIdTypeQg() == Unites::TYPE_AERIEN || $this->qg2->getIdTypeQg() == Unites::TYPE_NAVAL && $this->qg1->getIdTypeQg() == Unites::TYPE_AERIEN) && ($this->qg1->getUnites()->typeExists(Unites::DESTROYER) || $this->qg1->getUnites()->typeExists(Unites::PORTE_AVIONS) || $this->qg1->getUnites()->typeExists(Unites::CUIRASSE) || $this->qg2->getUnites()->typeExists(Unites::DESTROYER) || $this->qg2->getUnites()->typeExists(Unites::PORTE_AVIONS) || $this->qg2->getUnites()->typeExists(Unites::CUIRASSE))) {
         return true;
     }
     return false;
 }
Exemple #2
0
 /**
  * En cas de stack, dit qui a la priorité bouger entre $qg1 et $qg2
  * Ordre des priorités :
  * - mission
  * - taille
  * - niveau
  * - rand
  * @param Qg $qg1
  * @param Qg $qg2
  * @return int -1 ou 1 . 1 : $qg2 doit bouger. -1 : $qg1 doit bouger
  */
 public static function quiBouge(Qg $qg1, Qg $qg2)
 {
     if ($qg1->getMission()->getRule('ordreResolution') < $qg2->getMission()->getRule('ordreResolution')) {
         return 1;
     } elseif ($qg1->getMission()->getRule('ordreResolution') > $qg2->getMission()->getRule('ordreResolution')) {
         return -1;
     } else {
         if ($qg1->getUnites()->count() > $qg2->getUnites()->count()) {
             return 1;
         } elseif ($qg1->getUnites()->count() < $qg2->getUnites()->count()) {
             return -1;
         }
         if ($qg1->getNiveau() > $qg2->getNiveau()) {
             return 1;
         } elseif ($qg1->getNiveau() < $qg2->getNiveau()) {
             return -1;
         } else {
             return rand(0, 1) * 2 - 1;
         }
     }
 }