Beispiel #1
0
 /**
  * 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();
     }
 }
Beispiel #2
0
 /**
  * En cas de stack, dit qui a la priorité bouger entre $qg1 et $qg2
  * Ordre des priorités :
  * - mission
  * - taille
  * - niveau
  * - rand
  * @param Qg $qg1
  * @param Qg $qg2
  * @return int -1 ou 1 . 1 : $qg2 doit bouger. -1 : $qg1 doit bouger
  */
 public static function quiBouge(Qg $qg1, Qg $qg2)
 {
     if ($qg1->getMission()->getRule('ordreResolution') < $qg2->getMission()->getRule('ordreResolution')) {
         return 1;
     } elseif ($qg1->getMission()->getRule('ordreResolution') > $qg2->getMission()->getRule('ordreResolution')) {
         return -1;
     } else {
         if ($qg1->getUnites()->count() > $qg2->getUnites()->count()) {
             return 1;
         } elseif ($qg1->getUnites()->count() < $qg2->getUnites()->count()) {
             return -1;
         }
         if ($qg1->getNiveau() > $qg2->getNiveau()) {
             return 1;
         } elseif ($qg1->getNiveau() < $qg2->getNiveau()) {
             return -1;
         } else {
             return rand(0, 1) * 2 - 1;
         }
     }
 }