/** * Ajoute un visible à la collection à partir d'une joueur et d'un hexa * @param Joueur $joueur * @param Hexa $hexa */ public function addByJH(Joueur $joueur, Hexa $hexa) { $visible = new Visible(); $visible->setIdJoueur($joueur->getId()); $visible->setIdHexa($hexa->getId()); $this->ajout($visible); }
/** * * @param Noeud $noeud * @return bool */ public function objectifAtteint(Noeud $noeud) { if ($this->hexasInterdits->exists($noeud->getHexa())) { return false; } if ($this->but == self::BUT_RAVITAILLEMENT) { if ($noeud->getHexa()->getIdJoueur() == $this->pov->getId()) { return true; } } elseif ($this->but == self::BUT_COMMERCE) { if ($noeud->getHexa()->getIdTerritoire() == $this->pov->getId()) { return true; } } elseif ($this->but == self::BUT_VILLE_ENNEMIE) { if ($noeud->getHexa()->getIdJoueur() == $this->pov->getId()) { return true; } } return false; }
/** * Inscrit un joueur à la partie * @param Joueur $joueur * @return bool Succès de l'inscription. false si pas possible */ public function inscrireJoueur(Joueur $joueur) { $ret = false; $caseDepart = null; foreach ($this->getHexas()->shuffle() as $hexa) { /** @var Hexa $hexa */ if (Terrains::hexaAutoriseDemarrage($hexa)) { foreach ($hexa->voisins() as $voisin) { /** @var Hexa $voisin */ if ($voisin->getIdTerritoire() != 0 || $voisin->getIdJoueur() != 0) { continue 2; } } // Données de la case capitale et de ses voisines $hexa->setIdJoueur($joueur->getId()); $hexa->setIdTerritoire($joueur->getId()); foreach ($hexa->voisins() as $voisin) { /** @var Hexa $voisin */ $voisin->setIdTerritoire($joueur->getId()); $voisin->save(); } $hexa->setNom($joueur->getNom() . ' Prime'); $hexa->setPopulation(1); $hexa->save(); // Données du joueur $joueur->setIdPartie($this->getId()); $joueur->setTresor(1000); $joueur->setIdCapitale($hexa->getId()); $joueur->save(); $ret = true; break; } } return $ret; }
/** * Génère le JSON des trajectoires des Qgs * @return string */ public function getTrajectoires() { $trajs = TrajBusiness::getFromIdsQgs(CacheCarte::$idsStrQgs[CacheCarte::$centre2CoinGauche[$this->getCentre()->getId() . '_' . $this->getLargeur() . '_' . $this->getHauteur()] . '_' . $this->joueur->getId()])->filterByDroitVoirTraj($this->joueur); return ',"trajectoires":' . $trajs->getJSon(); }
/** * Dir si le joueur fourni en paramètre a le droit de voir la mission et la trajectoire du qg * @param Joueur $joueur * @return bool */ public function droitVoirTraj(Joueur $joueur) { return $joueur->getId() == $this->getIdJoueur(); }
/** * Dit si l'unité peut être débandée ou sa production annulée par un joueur * @param Joueur $joueur * @return bool */ public function peutDetruire(Joueur $joueur) { if ($this->getIdQg() == 0 && HexaStore::getById($this->getIdHexaConstruit())->getIdJoueur() == $joueur->getId()) { return true; } elseif ($this->getIdQg() && $this->getQg()->getIdJoueur() == $joueur->getId()) { return true; } else { return false; } }
/** * @param Joueur $joueur * @return bool */ public function isEnnemi(Joueur $joueur) { return $joueur->getId() != $this->getId(); }
/** * Dit si l'infra est destructible par un joueur * @param Joueur $joueur * @return bool */ public function destructiblePar(Joueur $joueur) { if (!$this->getIdHexa2()) { if ($this->getHexa()->getIdTerritoire() == $joueur->getId() && !$this->getHexa()->hasQg(true)) { return true; } elseif ($this->getHexa()->getIdTerritoire() != $joueur->getId() && $this->getHexa()->hasQg()) { return true; } } else { if ($this->getHexa()->getIdTerritoire() == $joueur->getId() && $this->getHexa2()->getIdTerritoire() == $joueur->getId()) { // Les 2 cases sont le territoire du joueur if (!$this->getHexa()->hasQg(true) && !$this->getHexa2()->hasQg(true)) { return true; } } elseif ($this->getHexa()->getIdTerritoire() == $joueur->getId() && $this->getHexa2()->getIdTerritoire() == 0 || $this->getHexa()->getIdTerritoire() == 0 && $this->getHexa2()->getIdTerritoire() == $joueur->getId()) { // Une des 2 cases n'a pas de propriétaire if (!$this->getHexa()->hasQg(true) && !$this->getHexa2()->hasQg(true)) { return true; } } else { if (($this->getHexa()->hasQg() || $this->getHexa2()->hasQg()) && !($this->getHexa()->hasQg(true) || $this->getHexa2()->hasQg(true))) { return true; } } } return false; }
/** * Renvoie la même collection mais avec seulement les qgs du joueur fourni en paramètre * @param Joueur $joueur * @return QgCollection */ public function filtreeParJoueur(Joueur $joueur) { if (!isset($this->cacheFiltreParJoueur[$joueur->getId()])) { $this->cacheFiltreParJoueur[$joueur->getId()] = new QgCollection(); foreach ($this as $qg) { /** @var Qg $qg */ if ($qg->getIdJoueur() == $joueur->getId()) { $this->cacheFiltreParJoueur[$joueur->getId()]->ajout($qg); } } } return $this->cacheFiltreParJoueur[$joueur->getId()]; }
/** * Dit si la case est en territoire ennemi * @param Joueur $joueur * @return bool */ public function isEnnemi(Joueur $joueur) { return $this->getIdTerritoire() != $joueur->getId(); }