package ihm.controller; import java.io.IOException; import java.net.URL; import java.util.ArrayList; import java.util.List; import java.util.Locale; import java.util.Map; import java.util.ResourceBundle; import java.util.Set; import ihm.PopUp; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.fxml.Initializable; import javafx.scene.Group; import javafx.scene.Node; import javafx.scene.Parent; import javafx.scene.control.Label; import javafx.scene.layout.AnchorPane; import javafx.scene.layout.GridPane; import javafx.scene.layout.HBox; import javafx.scene.layout.Pane; import javafx.scene.layout.VBox; import javafx.scene.paint.Color; import main.GestionnaireJeu; import main.Joueur; public class PlateauController implements Initializable { private List listJoueur = new ArrayList(); private List joueursIHM; @FXML private AnchorPane rootPane; @FXML private GridPane gridPaneVie; @FXML public GridPane gridPaneLieux; private ChoisirBoolean cb; public static int DICE_SIX = 2; public static int DICE_QUATRE = 1; public static int DICE_BOTH = 0; /** * initialise les données du plateau */ @Override public void initialize(URL arg0, ResourceBundle arg1) { //System.out.println("Création du plateau ..."); this.joueursIHM = new ArrayList(); GestionnaireJeu gj = GestionnaireJeu.getGestionnaireJeu(); Map map = gj.getMapJoueurs(); for(int i = 0 ; i < gridPaneVie.getChildren().size();i++) { Pane p = (Pane) gridPaneVie.getChildren().get(i); Label l = (Label) p.getChildren().get(1); l.setText(i+""); } for(int i : map.keySet()) { System.out.println(i); joueursIHM.add(new JoueurIHM(i,map.get(i),getPaneJoueur(i),new Color(Math.random(), Math.random(), Math.random(),1),gridPaneVie, gridPaneLieux)); } for(int i = 0; i {try {seReveler(compteur);} catch (IOException e1) {e1.printStackTrace();}}); i++; } //initialisation des bouton carte personnage int j = 0; for (ImageView b : cartePerso) { int compteur = j; b.setOnMouseClicked(e -> {try {consulterSaCarte(compteur);} catch (IOException e1) {e1.printStackTrace();}}); j++; }*/ /* //initialisation des pions VBox pionLieux14 = (VBox) lieux.getChildren().get(0); VBox pionLieux58 = (VBox) lieux.getChildren().get(4); for (int k=0; k<4; k++) { pionLieux.add((Circle) pionLieux14.getChildren().get(k)); } for (int k=0; k<4; k++) { pionLieux.add((Circle) pionLieux58.getChildren().get(k)); } VBox pionVie14 = (VBox) lieux.getChildren().get(0); VBox pionVie58 = (VBox) lieux.getChildren().get(4); for (int k=0; k<4; k++) { pionVie.add((Circle) pionVie14.getChildren().get(k)); } for (int k=0; k<4; k++) { pionVie.add((Circle) pionVie58.getChildren().get(k)); } System.out.println("Tour du joueur 1"); try { final URL fxmlURL = getClass().getResource("../ressources/Jouer_tour(1)lancer_des.fxml"); final ResourceBundle bundle = ResourceBundle.getBundle("domaine.properties.langue", Locale.ENGLISH); final FXMLLoader fxmlLoader = new FXMLLoader(fxmlURL, bundle); Pane root = fxmlLoader.load(); root.setPrefSize(255, 180); tour.get(2).getChildren().setAll(root); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }*/ } private Pane getPaneJoueur(int i) { System.out.println("i "+i); int position = i%8; HBox hb = (HBox) rootPane.getChildren().get(0); GridPane gp = null; // BAS if(position < 2) { VBox group = (VBox) hb.getChildren().get(1); gp = (GridPane) group.getChildren().get(2); //DROITE }else if(position < 4) { System.out.println("Oui"); Group group = (Group) hb.getChildren().get(2); gp = (GridPane) group.getChildren().get(0); //HAUT }else if(position < 6) { VBox group = (VBox) hb.getChildren().get(1); gp = (GridPane) group.getChildren().get(0); //GAUCHE }else if(position < 8) { Group group = (Group) hb.getChildren().get(0); gp = (GridPane) group.getChildren().get(0); } return (Pane) gp.getChildren().get(i%2); } /** * Affiche aux yeux de tous la carte personnage du joueur * * @param j : Le joueur sur lequel on a cliqué */ public void seReveler(int numJoueur) throws IOException { System.out.println(listJoueur.get(numJoueur).getNom() + " se revele"); final URL fxmlURL = getClass().getResource("/ihm/ressources/Reveler_son_identite.fxml"); final ResourceBundle bundle = ResourceBundle.getBundle("domaine.properties.langue", Locale.FRANCE); final FXMLLoader fxmlLoader = new FXMLLoader(fxmlURL, bundle); Parent root = fxmlLoader.load(); RevelationController rc = fxmlLoader.getController(); rc.showInformation(listJoueur.get(numJoueur)); PopUp popup = new PopUp(root, "Consulter sa carte"); popup.display(); } public JoueurIHM getJoueurIHM(Joueur j) { for(JoueurIHM joueurIHM : joueursIHM) { if(joueurIHM.getJoueur().equals(j)) return joueurIHM; } return null; } /** * Permet de consulter sa carte perssonage en cas d'oublie * * @param j : Le joueur sur lequel on a cliqu� */ public void consulterSaCarte(int numJoueur) throws IOException { System.out.println(listJoueur.get(numJoueur).getNom() + " consulte sa carte"); final URL fxmlURL = getClass().getResource("/ihm/ressources/afficher_carte_perso.fxml"); final ResourceBundle bundle = ResourceBundle.getBundle("domaine.properties.langue", Locale.FRANCE); final FXMLLoader fxmlLoader = new FXMLLoader(fxmlURL, bundle); Parent root = fxmlLoader.load(); AfficherCarteController acc = fxmlLoader.getController(); acc.showInformation(listJoueur.get(numJoueur)); PopUp popup = new PopUp(root, "Consulter sa carte"); popup.display(); } /** * Place les joueurs au bon endroit sur le plateau * * @param j : map donnant le joueur et son numero */ public void placerJoueurs(Map j) { Set set = j.keySet(); for(int i = 0; i < 8; i++) { if(!set.contains(i)) { getPaneJoueur(i).getChildren().setAll(); } } } public void rollDice(Joueur joueur, int typeDice, int[] rolls) { } public void afficherChoisir(Joueur j) throws IOException { final URL fxmlURL = getClass().getResource("/ihm/ressources/choisirBoolean.fxml"); final ResourceBundle bundle = ResourceBundle.getBundle("domaine.properties.langue", Locale.FRANCE); final FXMLLoader fxmlLoader = new FXMLLoader(fxmlURL, bundle); Pane root = (Pane)fxmlLoader.load(); this.cb = fxmlLoader.getController(); JoueurIHM jihm = getJoueurIHM(j); jihm.setZoneJoueur(root); } public boolean getChoix(Joueur joueur) { JoueurIHM jihm = getJoueurIHM(joueur); boolean result = this.cb.getResult(); this.cb = null; jihm.getZoneJoueur().getChildren().setAll(); return result; } public void deplacer(Joueur currentJoueur) { JoueurIHM jIHM = getJoueurIHM(currentJoueur); jIHM.replacerPionLieu(); } public void updateVieJoueur(Joueur joueur, int damage) { /*JoueurIHM jIHM = getJoueurIHM(joueur); jIHM.deplacerPionVie(damage);*/ } }