/** * Renvoie les Productions liés aux Unites de la collection fournie en paramètre * @param UniteCollection $unites * @return ProductionCollection */ public static function getFromUnites(UniteCollection $unites) { $ids = $unites->getIdsStr(); if (!$ids) { return new ProductionCollection(); } $req = "SELECT * FROM production WHERE idUnite IN (" . $ids . ");"; return DbHandler::collFromQuery($req, 'Production', 'ProductionCollection'); }
/** * Renvoie les Unites liés aux Qgs de cette collection * @return UniteCollection */ public function getUnites() { if (is_null($this->cacheUnites)) { $this->cacheUnites = new UniteCollection(); foreach ($this as $qg) { /** @var Qg $qg */ foreach ($qg->getUnites() as $unite) { $this->cacheUnites->ajout($unite); } } } return $this->cacheUnites; }
/** * Ajoute une unité à la collection de cache d'unités du QG * Ne crée rien * @param Unite $unite * @return void */ public function AppendUnite(Unite $unite) { if (is_null($this->cacheUnites)) { $this->cacheUnites = new UniteCollection(); } $this->cacheUnites->ajout($unite); }
/** * Renvoie les Unites liés aux Competences de cette collection * @return UniteCollection */ public function getUnites() { if (is_null($this->cacheUnites)) { $this->cacheUnites = UniteBusiness::getFromCompetences($this); $this->cacheUnites->store(); } return $this->cacheUnites; }
/** * Ajoute à la carte les objets visibles reliés à un hexa * @param Hexa $hexa * @return void */ protected function ajoutVisiblesHexa(Hexa $hexa) { $this->visiblesGeres = true; if ($this->joueur->getVisibles()->hexaExists($hexa)) { // Qgs foreach ($hexa->getQgs() as $qg) { /** @var Qg $qg */ $this->qgs->ajout($qg); // Unites foreach ($qg->getUnites() as $unite) { /** @var Unite $unite */ $this->unites->ajout($unite); } } } }
/** * Renvoie les Qgs liés à une collection de Unites * @param UniteCollection $unites * @return QgCollection */ public static function getFromUnites(UniteCollection $unites) { $ids = $unites->getIdQgs(); if (!$ids) { return new QgCollection(); } $req = "SELECT * FROM qg WHERE idQg IN (" . $ids . ");"; return DbHandler::collFromQuery($req, 'Qg', 'QgCollection'); }
/** * Renvoie seulement les Qgs dont l'hexa fait partie des hexas fournis en paramètre * @param QgCollection $qgs * @return UniteCollection */ public function filtresParQgs(QgCollection $qgs) { $ret = new UniteCollection(); $ids = ',' . $qgs->getIdsStr() . ','; foreach ($this as $unite) { /** @var Unite $unite */ if (strstr($ids, ',' . $unite->getIdQg() . ',')) { $ret->ajout($unite); } } return $ret; }
/** * 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 la liste des unités qu'il est possible de construire dans la ville * @return UniteCollection */ public function listeUnitesAConstruire() { $ret = new UniteCollection(); foreach (Unites::$types as $idType => $data) { $batiment = $this->getBatimentConstruit($data['batimentNecessaire']); if (!is_null($batiment) && $batiment->getNiveau() >= $data['nivBatimentNecessaire']) { $new = new Unite(); $new->setIdHexaConstruit($this->getId()); $new->setIdType($idType); $new->setMoral(100); $ret->ajout($new); } } return $ret; }
/** * Renvoie les unités actives pour le combat en cours * @return UniteCollection */ public function getUnitesActives() { $ret = new UniteCollection(); foreach ($this as $qg) { /** @var Qg $qg */ if (in_array($qg->getIdTypeMission(), Missions::$selectionUnitesParMission[$this->getIdTypeMission()])) { foreach ($qg->getUnites() as $unite) { /** @var Unite $unite */ $ret->ajout($unite); } } } return $ret; }