Beispiel #1
0
 /**
  * Crée un faux Qg qui n'existe pas en base, pour calculer les coûts de déplacement
  * @param int $type Type de QG à créer
  */
 public function setFakeQg($type)
 {
     $this->fakeQg = new Qg();
     $this->fakeQg->setIdTypeQg($type);
     $this->fakeQg->setIdJoueur($this->qg->getIdJoueur());
     $unite = new Unite();
     switch ($type) {
         case Unites::TYPE_TERRESTRE:
             $unite->setIdType(Unites::RAVITAILLEUR_AMPHIBIE);
             break;
         case Unites::TYPE_NAVAL:
             $unite->setIdType(Unites::DESTROYER);
             break;
         case Unites::TYPE_AERIEN:
             $unite->setIdType(Unites::BOMBARDIER);
             break;
         default:
             $unite->setIdType(Unites::RAVITAILLEUR_AMPHIBIE);
     }
     $unite->setMoral(100);
     $unites = new UniteCollection();
     $unites->ajout($unite);
     $this->fakeQg->setUnites($unites);
 }
 /**
  * Renvoie les Productions liés au Qg fourni
  * @var Qg $qg
  * @return ProductionCollection
  */
 public static function getByQg(Qg $qg)
 {
     $req = "SELECT * from production WHERE idUnite IN (SELECT unite.idUnite FROM unite WHERE unite.idQg = " . $qg->getIdQg() . ")";
     return DbHandler::collFromQuery($req, 'Production', 'ProductionCollection');
 }
 /**
  * @param Qg $qg
  * @return QgCollection|Qg[]
  */
 public static function getIntercepteursOnSamePosition(Qg $qg)
 {
     if (!isset(self::$indexIntercepteurs[$qg->getPosition()->getId()])) {
         return new QgCollection();
     } else {
         return self::$indexIntercepteurs[$qg->getPosition()->getId()];
     }
 }
Beispiel #4
0
 /**
  * Tranfère l'unité vers un autre qg
  * @param Qg $qg
  * @return void
  */
 public function transfert(Qg $qg)
 {
     /*
      * Transfert de l'unité
      */
     $qgSource = $this->getQg();
     $this->setIdQg($this->getId());
     $this->save();
     $qg->resetCacheUnites();
     $qgSource->resetCacheUnites();
     /*
      * Transfert des compétences du Qg si le Qg source disparaît
      */
     if ($qgSource->getUnites()->count() == 0) {
         if ($qgSource->getNiveau() > $qg->getNiveau()) {
             $qg->setNiveau($qgSource->getNiveau());
             $qg->save();
         }
         $qgSource->delete();
     }
 }
Beispiel #5
0
 /**
  * Crée un Qg lié à ce Joueur
  * @return Qg
  */
 public function createQg()
 {
     $qg = new Qg();
     $qg->setIdJoueur($this->getIdJoueur());
     return $qg;
 }
Beispiel #6
0
 /**
  * Enlève le Qg du store
  * @param Qg $qg
  */
 public static function unstore(Qg $qg)
 {
     if (self::exists($qg->getId())) {
         unset(self::$stock[static::$table][$qg->getId()]);
     }
 }
Beispiel #7
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;
         }
     }
 }
 /**
  * Renvoie les Competence liées à un Qg
  * @param Qg $qg
  * @return CompetenceCollection
  */
 public static function getByQg(Qg $qg)
 {
     $req = "SELECT * FROM competence WHERE idQg = '" . $qg->getIdQg() . "';";
     return DbHandler::collFromQuery($req, 'Competence', 'CompetenceCollection');
 }
Beispiel #9
0
 /**
  * @param Qg $qg1
  * @param Qg $qg2
  * @return string
  */
 private static function idDejaFait(Qg $qg1, Qg $qg2)
 {
     return min($qg1->getId(), $qg2->getId()) . '_' . max($qg1->getId(), $qg2->getId());
 }
Beispiel #10
0
 /**
  * Renvoie les unités en cours de transfert vers le Qg fourni en paramètre
  * @param Qg $qg
  * @return UniteCollection
  */
 public static function getUnitesEnTransfertVersQg(Qg $qg)
 {
     $req = "SELECT * from unite WHERE idQgTransfert='" . $qg->getId() . "';";
     return DbHandler::collFromQuery($req, 'Unite', 'UniteCollection');
 }
Beispiel #11
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);
     }
 }
Beispiel #12
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;
 }
Beispiel #13
0
 /**
  * Renvoie les Traj liées à un Qg
  * @param Qg $qg
  * @return TrajCollection
  */
 public static function getByQg(Qg $qg)
 {
     $req = "SELECT * FROM traj WHERE idQg = '" . $qg->getIdQg() . " ORDER BY ordre ASC';";
     return DbHandler::collFromQuery($req, 'Traj', 'TrajCollection');
 }
Beispiel #14
0
 /**
  * Crée un Qg lié à ce Hexa
  * @param int $type
  * @return Qg
  */
 public function createQg($type = Unites::TYPE_TERRESTRE)
 {
     $qg = new Qg();
     $qg->setIdHexa($this->getIdHexa());
     $qg->setNiveau($this->getNiveauQgsFabriques());
     $qg->setCapop(100);
     $qg->setXp(0);
     $qg->setIdTypeQg($type);
     return $qg;
 }