예제 #1
0
 /**
  * @param Qg $qg
  */
 public static function reindexQg(Qg $qg)
 {
     /** @var Hexa $oldPosition */
     if (isset(self::$indexParQg[$qg->getId()])) {
         $oldPosition = self::$indexParQg[$qg->getId()];
     } else {
         $oldPosition = null;
     }
     if (!is_null($oldPosition) && isset(self::$indexParHexa[$oldPosition->getId()][$qg->getId()])) {
         unset(self::$indexParHexa[$oldPosition->getId()][$qg->getId()]);
     }
     if (!$qg->isEfface()) {
         self::$indexParQg[$qg->getId()] = $qg->getPosition();
         if (!isset(self::$indexParHexa[$qg->getPosition()->getId()])) {
             self::$indexParHexa[$qg->getPosition()->getId()] = new QgCollection();
         }
         if (!isset(self::$indexParHexa[$qg->getPosition()->getId()][$qg->getId()])) {
             self::$indexParHexa[$qg->getPosition()->getId()][$qg->getId()] = $qg;
         }
     }
     /*
      * Zones d'interception
      */
     if (in_array($qg->getIdTypeMission(), Missions::missionsInterception())) {
         foreach ($qg->getPosition()->getCouronnePleine(Missions::$types[Missions::INTERCEPTION]['tailleZone']) as $hexa) {
             if (!isset(self::$indexIntercepteurs[$hexa->getId()])) {
                 self::$indexIntercepteurs[$hexa->getId()] = new QgCollection();
             }
             self::$indexIntercepteurs[$hexa->getId()]->ajout($qg);
         }
     }
 }
예제 #2
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;
 }
예제 #3
0
 /**
  * Dit qui donne sa mission au qgVirtuel en cas de combat
  * @param Qg $qg1
  * @param Qg $qg2
  * @return int -1 : $qg1, 1 : $qg2
  */
 public static function typeMissionVirtuelle(Qg $qg1, Qg $qg2)
 {
     if ($qg1->getMission()->getQgVirtuel()->isAttaquant()) {
         if (Missions::$ordreMissionsAttaquant[$qg1->getIdTypeMission()] > Missions::$ordreMissionsAttaquant[$qg2->getIdTypeMission()]) {
             return -1;
         } elseif (Missions::$ordreMissionsAttaquant[$qg1->getIdTypeMission()] < Missions::$ordreMissionsAttaquant[$qg2->getIdTypeMission()]) {
             return 1;
         } else {
             return 0;
         }
     } else {
         if (Missions::$ordreMissionsDefenseur[$qg1->getIdTypeMission()] > Missions::$ordreMissionsDefenseur[$qg2->getIdTypeMission()]) {
             return -1;
         } elseif (Missions::$ordreMissionsDefenseur[$qg1->getIdTypeMission()] < Missions::$ordreMissionsDefenseur[$qg2->getIdTypeMission()]) {
             return 1;
         } else {
             return 0;
         }
     }
 }
예제 #4
0
 /**
  * @param Qg $qg
  * @return Mission
  */
 public static function factory(Qg $qg)
 {
     switch ($qg->getIdTypeMission()) {
         case Missions::APPUI_SOL:
             return new AppuiSol($qg);
             break;
         case Missions::ASSAUT:
             return new Assaut($qg);
             break;
         case Missions::ASSAUT_AERONAVAL:
             return new AssautAeronaval($qg);
             break;
         case Missions::ASSAUT_NAVAL:
             return new AssautNaval($qg);
             break;
         case Missions::ASW:
             return new Asw($qg);
             break;
         case Missions::BLITZ:
             return new Blitz($qg);
             break;
         case Missions::BLOCUS:
             return new Blocus($qg);
             break;
         case Missions::BOMBARDEMENT:
             return new Bombardement($qg);
             break;
         case Missions::DEPLACEMENT:
             return new Deplacement($qg);
             break;
         case Missions::ESCORTE:
             return new Escorte($qg);
             break;
         case Missions::INTERCEPTION:
             return new Interception($qg);
             break;
         case Missions::INTERDICTION:
             return new Interdiction($qg);
             break;
         case Missions::PILONNAGE:
             return new Pilonnage($qg);
             break;
         case Missions::REPOS:
             return new Repos($qg);
             break;
         case Missions::RETRANCHEMENT:
             return new Retranchement($qg);
             break;
         case Missions::TORPILLAGE:
             return new Torpillage($qg);
             break;
         default:
             return new Repos($qg);
     }
 }