/** * 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()]; } }
/** * 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(); } }
/** * Crée un Qg lié à ce Joueur * @return Qg */ public function createQg() { $qg = new Qg(); $qg->setIdJoueur($this->getIdJoueur()); return $qg; }
/** * 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()]); } }
/** * 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'); }
/** * @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()); }
/** * 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'); }
/** * @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); } }
/** * 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; }
/** * 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'); }
/** * 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; }