/** * Renvoie le combat de l'intercepteur, ou null * @return Combat */ public function createCombat() { $cible = $this->ciblePrioritaire(); if (!is_null($cible)) { $combat = new Combat($cible->getPosition()); $combat->getAttaquants()->ajout($this->getQg()); $combat->getDefenseurs()->ajout($cible); $this->auMoinsUnDeplacementFait = true; foreach ($cible->getSoutiens() as $soutien) { $combat->getDefenseurs()->ajout($soutien); } return $combat; } else { return null; } }
public function beforeDeplacements() { parent::beforeDeplacements(); $combat = new Combat($this->getCible()->getPosition()); $combat->getAttaquants()->ajout($this->getQg()); $combat->getDefenseurs()->ajout($this->getCible()); $combat->getAttaquants()->setCacheisAttaquant(true); $combat->getDefenseurs()->setCacheisAttaquant(false); $combat->run(); }
/** * Renvoie le combat éventuel entre les Qgs (ou null) de la collection en considérant qu'ils sont sur la même case * @return Combat */ public function createCombat() { $compteursParJoueur = array(); foreach ($this as $qg) { /** @var Qg $qg */ if (!isset($compteursParJoueur[$qg->getIdJoueur()])) { $compteursParJoueur[$qg->getIdJoueur()] = 0; } $compteursParJoueur[$qg->getIdJoueur()] += $qg->getUnites()->getPrixPop(); } /* * Détermination des joueurs qui se battent */ if (count($compteursParJoueur) <= 1) { return null; } if (count($compteursParJoueur) == 2) { $joueurs = array_keys($compteursParJoueur); } else { $new = array(); $keys = array_keys($compteursParJoueur); shuffle($keys); foreach ($keys as $key) { $new[$key] = $compteursParJoueur[$key]; } $compteursParJoueur = $new; asort($compteursParJoueur); $joueurs = array(); $spectateurs = array(); $cpt = 0; foreach ($compteursParJoueur as $idJoueur => $valUnites) { if ($cpt < 2) { $joueurs[] = $idJoueur; } else { $spectateurs[] = $idJoueur; } $cpt++; } } /* * Objet combat */ $first = $this->getFirstElement(); /** @var Qg $first */ $ret = new Combat($first->getPosition()); /* * Création des Qgs Virtuels */ $qgvs = array(); /** @var QgVirtuel[] $qgvs */ $qgvs[$joueurs[0]] = new QgVirtuel(); $qgvs[$joueurs[1]] = new QgVirtuel(); foreach ($this as $qg) { /** @var Qg $qg */ if (isset($qgvs[$qg->getIdJoueur()])) { $qgvs[$qg->getIdJoueur()]->ajout($qg); } else { $ret->getSpectateurs()->ajout($qg); } } $qgvs[$joueurs[0]]->setEnnemiEnCours($qgvs[$joueurs[1]]); $qgvs[$joueurs[1]]->setEnnemiEnCours($qgvs[$joueurs[0]]); $qgvs[$joueurs[0]]->setCombat($ret); $qgvs[$joueurs[1]]->setCombat($ret); /* * Détermination de qui est l'attaquant et qui est le défenseur */ if ($qgvs[$joueurs[0]]->isAttaquant($qgvs[$joueurs[1]])) { $ret->setAttaquants($qgvs[$joueurs[0]]); $ret->setDefenseurs($qgvs[$joueurs[1]]); } else { $ret->setAttaquants($qgvs[$joueurs[1]]); $ret->setDefenseurs($qgvs[$joueurs[0]]); } return $ret; }