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