コード例 #1
0
 /**
  * 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);
 }
コード例 #2
0
ファイル: Trajectoire.php プロジェクト: eleparquier/nj_common
 /**
  *
  * @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;
 }
コード例 #3
0
ファイル: Partie.php プロジェクト: eleparquier/nj_common
 /**
  * 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;
 }
コード例 #4
0
ファイル: Carte.php プロジェクト: eleparquier/nj_common
 /**
  * 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();
 }
コード例 #5
0
ファイル: Qg.php プロジェクト: eleparquier/nj_common
 /**
  * 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();
 }
コード例 #6
0
ファイル: Unite.php プロジェクト: eleparquier/nj_common
 /**
  * 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;
     }
 }
コード例 #7
0
ファイル: Joueur.php プロジェクト: eleparquier/nj_common
 /**
  * @param Joueur $joueur
  * @return bool
  */
 public function isEnnemi(Joueur $joueur)
 {
     return $joueur->getId() != $this->getId();
 }
コード例 #8
0
 /**
  * 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;
 }
コード例 #9
0
 /**
  * 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()];
 }
コード例 #10
0
ファイル: Hexa.php プロジェクト: eleparquier/nj_common
 /**
  * Dit si la case est en territoire ennemi
  * @param Joueur $joueur
  * @return bool
  */
 public function isEnnemi(Joueur $joueur)
 {
     return $this->getIdTerritoire() != $joueur->getId();
 }