/** Traitement lors d'un clic sur le bouton fin redéploiement */ public void cliqueFinRedeploiement() { if (joueurEnCours.getPeuple().getNbUniteEnMain() == 0) { if ((etape == 2 || etape == 3)) { if (Game.getInstance().askConf("Confirmer la fin du redéploiement ?")) { if (etape == 2) { if (tempEnDeclin) { joueurEnCours.getPeuple().decliner(); tempEnDeclin = false; } /* on passe à l'étape redéploiement des autres joueurs */ setEtape(3); /* et on indique que le joueur passe au tour suivant pour après ne pas le faire rejouer */ indexSauvJoueurEnCours = indexJoueurEnCours; indexJoueurEnCours = 0; } if (!deploiementSuivant()) { joueurSuivant(); } Game.getInstance().majInfos(); } } } else { new WinWarn("Il vous reste des unités en main, placez-les !"); } }
/** Changement de joueur dans le tour donné */ public void joueurSuivant() { setEtape(0); /* on calcule les gains du tour et on met à jour les pts de victoire */ int argent = joueurEnCours.calcArgentTour(); Game.getInstance().showTemp(argent + " point(s) gagné(s) durant ce tour !"); joueurEnCours.addArgent(argent); if (indexJoueurEnCours == lstJoueurs.size() - 1) { nouveauTour(); } else { indexJoueurEnCours++; joueurEnCours = lstJoueurs.get(indexJoueurEnCours); if (joueurEnCours.getPeuple() == null) { Game.getInstance().selectionPeuple(); } else if (joueurEnCours.getPeuple().getNbUnite() == 0) { remettreBoite(joueurEnCours.getPeuple()); Game.getInstance().selectionPeuple(); } miseEnMain(); Game.getInstance().showTemp(joueurEnCours.getNom() + " attaque !"); } }
/** Phase de redeploiement */ public void redeploiement() { setEtape(2); miseEnMain(); joueurEnCours.getPeuple().calcBonusUnite(); Game.getInstance().majInfos(); Game.getInstance().showTemp(joueurEnCours.getNom() + " se redéploie."); }
/** Demande aux joueurs ayant des unités en main de les placer */ public boolean deploiementSuivant() { int nextJoueur = (indexSauvJoueurEnCours + 1) == lstJoueurs.size() ? 0 : (indexSauvJoueurEnCours + 1); for (; indexJoueurEnCours < lstJoueurs.size(); indexJoueurEnCours++) { if (indexJoueurEnCours == nextJoueur) { continue; } joueurEnCours = lstJoueurs.get(indexJoueurEnCours); Peuple p = joueurEnCours.getPeuple(); if (p != null && p.getNbUniteEnMain() > 0) { Game.getInstance().showTemp(joueurEnCours.getNom() + " se redéploie."); return true; } } indexJoueurEnCours = indexSauvJoueurEnCours; joueurEnCours = lstJoueurs.get(indexSauvJoueurEnCours); return false; }
/** Traitement lors d'un clic sur le bouton passer en déclin */ public void cliqueDeclin() { if (etape == 0 && joueurEnCours.getPeupleDeclin() == null && Game.getInstance().askConf("Confirmer le passage en déclin ?")) { // joueurEnCours.getPeuple().decliner(); // joueurSuivant(); tempEnDeclin = true; setEtape(2); miseEnMain(); Game.getInstance().showTemp(joueurEnCours.getNom() + " se redéploie."); } Game.getInstance().majInfos(); }
/** Traitement lors d'un clic sur le bouton fin tour */ public void cliqueFinTour() { /* en mode conquete, confirmé, et possède au moins un territoire (sinon il ne peut pas redéployer...) */ if (joueurEnCours.getPeuple().getTerritoiresOccupes().isEmpty()) { new WinWarn("Veuillez tout d'abord prendre au moins un territoire"); } else if ((etape == 0 || etape == 1) && Game.getInstance().askConf("Confirmer la fin du tour ?")) { redeploiement(); } }
/** Méthode permettant de passer au tour suivant */ public void nouveauTour() { tourEnCours++; if (tourEnCours >= nbTours) { Game.gameOver(); } else { // RAZ des étapes etape = 0; indexJoueurEnCours = 0; joueurEnCours = this.lstJoueurs.get(indexJoueurEnCours); // Si le peuple n'a pas de joueur, il doit en choisir un if (joueurEnCours.getPeuple() == null) { Game.getInstance().selectionPeuple(); } Game.getInstance().showTemp(joueurEnCours.getNom() + " attaque !"); miseEnMain(); } }
/** * Traitements en fonction du territoire cliqué * * @param territoire Territoire cliqué par l'utilisateur */ public void cliqueTerritoire(Territoire territoire) { if (etape == 0 || etape == 1) { // Phase d'attaque if (joueurEnCours.getPeuple().equals(territoire.getOccupant())) { List<Peuple> ls = territoire.getPrisesDuTerritoire(tourEnCours); if (!ls.contains(getJoueurEnCours().getPeuple()) && Game.getInstance().askAbandon(territoire)) { getJoueurEnCours().getPeuple().abandonTerritoire(territoire); } } else { // if(coutAttaque(territoire) > joueurEnCours.getPeuple().) if (getJoueurEnCours().peutAttaquerUnTerritoire(territoire) || territoire.estEnBordure()) { if (Game.getInstance().askAttaque(territoire)) { if (getJoueurEnCours().attaquer(territoire) && etape == 0) { etape = 1; } } } else { new WinWarn("Vous ne pouvez pas attaquer ce territoire."); return; } } Game.getInstance().majInfos(); } else if (etape == 2 || etape == 3) { // Phase de redéploiement if (joueurEnCours.getPeuple().equals(territoire.getOccupant())) { int nbPion = Game.getInstance().askNbPion(territoire); if (nbPion > 0) { getJoueurEnCours().getPeuple().addNbUniteEnMain(-(nbPion - territoire.getNbUnite())); territoire.setNbUnite(nbPion); } else if (nbPion == 0) { if (Game.getInstance().askAbandon(territoire)) { getJoueurEnCours().getPeuple().abandonTerritoire(territoire); } } Game.getInstance().majInfos(); } else { new WinWarn("Vous ne pouvez que vous redéployer sur un de vos territoires"); } } }