예제 #1
0
 /**
  * Crée un Traj lié à ce Qg
  * @return Traj
  */
 public function createTraj()
 {
     $traj = new Traj();
     $traj->setIdQg($this->getIdQg());
     return $traj;
 }
예제 #2
0
파일: Jeu.php 프로젝트: eleparquier/nj
 public function addTrajectoire()
 {
     $ret = array('error' => 0, 'errorMsg' => '');
     if (!isset($_POST['idQg']) || !isset($_POST['cap'])) {
         $ret['error'] = 1;
         $ret['errorMsg'] = 'Champs manquants';
         echo json_encode($ret);
         exit;
     }
     if (!$this->checkDroit(Droit::LOGGE_PARTIE)) {
         $ret['error'] = 2;
         $ret['errorMsg'] = 'Pas le droit';
         echo json_encode($ret);
         exit;
     }
     $qg = QgStore::getById($_POST['idQg']);
     if (is_null($qg)) {
         $ret['error'] = 3;
         $ret['errorMsg'] = 'Qg Inconnu';
         echo json_encode($ret);
         exit;
     }
     if (SessionBusiness::getCookieSession()->getIdJoueur() != $qg->getIdJoueur()) {
         $ret['error'] = 5;
         $ret['errorMsg'] = 'Seul le joueur connecté peut donner des ordres à ses Qgs';
         echo json_encode($ret);
         exit;
     }
     if ($qg->unitesEntrantes()->count()) {
         $ret['error'] = 8;
         $ret['errorMsg'] = 'Une ou plusieurs unités sont en cours de transfert vers ce Qg, il ne peut pas se déplacer';
         echo json_encode($ret);
         exit;
     }
     $trajPrecedente = $qg->getLastTraj();
     if (is_null($trajPrecedente)) {
         $hexa = $qg->getHexa()->getVoisin($_POST['cap']);
         $provenance = $qg->getHexa();
         $ordre = 1;
     } else {
         $hexa = $trajPrecedente->getHexa()->getVoisin($_POST['cap']);
         $provenance = $trajPrecedente->getHexa();
         $ordre = $trajPrecedente->getOrdre() + 1;
     }
     if (is_null($hexa)) {
         $ret['error'] = 4;
         $ret['errorMsg'] = 'Hexa Inconnu ou bord de carte atteint';
         echo json_encode($ret);
         exit;
     }
     if (!$qg->canPass($provenance, $hexa)) {
         $ret['error'] = 6;
         $ret['errorMsg'] = "Impossible d'atteindre cette case avec ce Qg";
         echo json_encode($ret);
         exit;
     }
     if ($qg->getMvtRestant() <= 0) {
         $ret['error'] = 7;
         $ret['errorMsg'] = "Points de mouvement insuffisants";
         echo json_encode($ret);
         exit;
     }
     $traj = new Traj();
     $traj->setIdQg($qg->getId());
     $traj->setIdHexa($hexa->getId());
     $traj->setOrdre($ordre);
     $traj->save();
     $qg->resetCacheTrajs();
     $ret['traj'] = $traj;
     $ret['mvtTotal'] = $qg->getMvtTotal();
     $ret['mvtRestant'] = $qg->getMvtRestant();
     echo json_encode($ret);
 }