diff options
Diffstat (limited to 'src/main/java/controlleur/ControlleurSimu.java')
| -rw-r--r-- | src/main/java/controlleur/ControlleurSimu.java | 218 |
1 files changed, 218 insertions, 0 deletions
diff --git a/src/main/java/controlleur/ControlleurSimu.java b/src/main/java/controlleur/ControlleurSimu.java new file mode 100644 index 0000000..a349036 --- /dev/null +++ b/src/main/java/controlleur/ControlleurSimu.java | |||
| @@ -0,0 +1,218 @@ | |||
| 1 | package controlleur; | ||
| 2 | |||
| 3 | import java.util.ArrayList; | ||
| 4 | import java.util.HashMap; | ||
| 5 | import application.Battle; | ||
| 6 | import javafx.scene.control.Button; | ||
| 7 | import javafx.scene.control.ChoiceBox; | ||
| 8 | import javafx.scene.image.Image; | ||
| 9 | import javafx.scene.image.ImageView; | ||
| 10 | import javafx.scene.layout.FlowPane; | ||
| 11 | import javafx.scene.layout.HBox; | ||
| 12 | import javafx.scene.layout.Pane; | ||
| 13 | import modele.Aptitude; | ||
| 14 | import modele.Arme; | ||
| 15 | import modele.ArmeeListe; | ||
| 16 | import modele.Calcul; | ||
| 17 | import modele.Figurine; | ||
| 18 | import modele.Unit; | ||
| 19 | import vue.simulation.AfficheSimulation; | ||
| 20 | import vue.simulation.SimAptAndWeaponsVBox; | ||
| 21 | import vue.simulation.SimFigurinesVBox; | ||
| 22 | import vue.simulation.SimHistogramme; | ||
| 23 | import vue.simulation.SimUnitsVBox; | ||
| 24 | |||
| 25 | public class ControlleurSimu | ||
| 26 | { | ||
| 27 | // déroulement des unités d'une liste (appui sur lists_drop_down.get(i) dans AfficheSimulation) | ||
| 28 | public static void selectAList(int num_list, ArrayList<ArmeeListe> lists, String choice) | ||
| 29 | { | ||
| 30 | // choix de la liste | ||
| 31 | for(ArmeeListe one_list : lists) | ||
| 32 | { | ||
| 33 | if(one_list.getName().equals(choice)) { | ||
| 34 | // "copie profonde" d'une liste | ||
| 35 | ArmeeListe list = new ArmeeListe(one_list.getName(), one_list.getDescription(), one_list.getData()); | ||
| 36 | Battle.setSelectedList(num_list, list); | ||
| 37 | break; // choix unique | ||
| 38 | } | ||
| 39 | } | ||
| 40 | |||
| 41 | // obtenir les unités, l'armée, les figurines, armes et aptitudes | ||
| 42 | Instanciation.getUnitsOfAList(Battle.getSelectedList(num_list)); | ||
| 43 | |||
| 44 | Battle.setArmy(num_list, Battle.getSelectedList(num_list).getUnits().get(0).getArmee()); | ||
| 45 | |||
| 46 | } | ||
| 47 | |||
| 48 | // déroulement des figurines d'une unité (appui sur buttons.get(i) dans SimUnitsVBox) | ||
| 49 | public static void PullDownUnits(int num_list, HBox dropdown_menu_box, SimUnitsVBox list_box) { | ||
| 50 | ArmeeListe list = Battle.getSelectedList(num_list); | ||
| 51 | |||
| 52 | // noms des unités | ||
| 53 | String[] unit_names = new String[list.getUnits().size()]; | ||
| 54 | for(int i = 0; i < list.getUnits().size(); i++) { | ||
| 55 | unit_names[i] = list.getUnits().get(i).getName(); | ||
| 56 | } | ||
| 57 | |||
| 58 | // supprimer l'ancien logo | ||
| 59 | if(dropdown_menu_box.getChildren().size() == 2){ | ||
| 60 | dropdown_menu_box.getChildren().remove(1); | ||
| 61 | } | ||
| 62 | |||
| 63 | // logo de faction | ||
| 64 | Image logo_faction = null; | ||
| 65 | if(Battle.getArmy(num_list) != null) // possibilité d'une liste vide | ||
| 66 | { | ||
| 67 | String file_name = Battle.getArmy(num_list).getLogo(); | ||
| 68 | logo_faction = new Image("/images/armees/" + file_name); | ||
| 69 | } | ||
| 70 | ImageView logo_box = new ImageView(); | ||
| 71 | |||
| 72 | logo_box.setPreserveRatio(true); | ||
| 73 | logo_box.fitHeightProperty().bind(dropdown_menu_box.heightProperty()); | ||
| 74 | logo_box.setImage(logo_faction); | ||
| 75 | dropdown_menu_box.getChildren().add(logo_box); | ||
| 76 | |||
| 77 | // effacer la zone armes et aptitudes | ||
| 78 | AfficheSimulation.getWeaponsAtitudesMenu().setStyle("-fx-border-width: 0;"); | ||
| 79 | AfficheSimulation.getWeaponsAtitudesMenu().getChildren().clear(); | ||
| 80 | |||
| 81 | // effacer et recréer les unités | ||
| 82 | list_box.getButtons().clear(); | ||
| 83 | list_box.getFigBoxes().clear(); | ||
| 84 | list_box.getChildren().clear(); | ||
| 85 | list_box.setList(num_list); | ||
| 86 | } | ||
| 87 | |||
| 88 | // déroulement des figurines d'une unité (appui sur buttons.get(i) dans SimUnitsVBox) | ||
| 89 | public static void selectAnUnit(SimUnitsVBox lists, int col, int j) | ||
| 90 | { | ||
| 91 | ArrayList<Button> buttons = lists.getButtons(); | ||
| 92 | SimFigurinesVBox old_fig_boxes = null; | ||
| 93 | SimFigurinesVBox new_fig_boxes = lists.getFigBoxes().get(j); | ||
| 94 | |||
| 95 | // il y a déjà une unité sélectionnée | ||
| 96 | if(Battle.getSelectedUnitIndex(col) > -1) | ||
| 97 | { | ||
| 98 | buttons.get(Battle.getSelectedUnitIndex(col)).setStyle("-fx-border-width: 0;");// retirer bordure unité sélectionnée | ||
| 99 | AfficheSimulation.getWeaponsAtitudesMenu().getChildren().clear(); // supprimer fenêtre combat si existe | ||
| 100 | |||
| 101 | // bouton même unité => ferme | ||
| 102 | if(Battle.getSelectedUnitIndex(col) == j) | ||
| 103 | { | ||
| 104 | new_fig_boxes.getChildren().clear(); | ||
| 105 | Battle.setSelectedUnit(col, -1); | ||
| 106 | } | ||
| 107 | // bouton autre unité | ||
| 108 | else | ||
| 109 | { | ||
| 110 | old_fig_boxes = lists.getFigBoxes().get(Battle.getSelectedUnitIndex(col)); | ||
| 111 | if(old_fig_boxes != null) { | ||
| 112 | old_fig_boxes.getChildren().clear(); // supprimer ancienne zone de figurines | ||
| 113 | } | ||
| 114 | Battle.setSelectedUnit(col, j); | ||
| 115 | buttons.get(j).setStyle("-fx-border-width: 2; -fx-border-color: yellow; -fx-border-radius: 2;"); // bordure unité sélectionnée | ||
| 116 | new_fig_boxes.setFigurines(); // on ouvre | ||
| 117 | } | ||
| 118 | } | ||
| 119 | // pas d'unité sélectionnée => on ouvre | ||
| 120 | else | ||
| 121 | { | ||
| 122 | Battle.setSelectedUnit(col, j); | ||
| 123 | buttons.get(j).setStyle("-fx-border-width: 2; -fx-border-color: yellow; -fx-border-radius: 2;"); // bordure unité sélectionnée | ||
| 124 | new_fig_boxes.setFigurines(); | ||
| 125 | } | ||
| 126 | } | ||
| 127 | |||
| 128 | // slider des PV des figurines | ||
| 129 | public static void hpUpdate(int hp, Figurine fig, ImageView one_image_box) { | ||
| 130 | int old_hp = fig.getHP(); | ||
| 131 | fig.setHP(hp); | ||
| 132 | |||
| 133 | Image one_image; | ||
| 134 | if(old_hp == 0 && fig.getHP() > 0) { | ||
| 135 | one_image = new Image("/images/android-fill.png"); | ||
| 136 | one_image_box.setImage(one_image); | ||
| 137 | } | ||
| 138 | else if(old_hp > 0 && fig.getHP() == 0){ // utile? | ||
| 139 | one_image = new Image("/images/android-line.png"); | ||
| 140 | one_image_box.setImage(one_image); | ||
| 141 | } | ||
| 142 | } | ||
| 143 | |||
| 144 | // afficher la zone des armes et aptitudes | ||
| 145 | public static void makeWeaponsAndAptitudeZone(ArrayList<Figurine> fig_group, SimAptAndWeaponsVBox weapons_aptitudes_menu) { | ||
| 146 | ArrayList<Arme> weapon_list = fig_group.get(0).getArmes(); | ||
| 147 | ArrayList<Aptitude> aptitude_list = fig_group.get(0).getAptitudes(); | ||
| 148 | |||
| 149 | weapons_aptitudes_menu.setArmes(weapon_list); | ||
| 150 | weapons_aptitudes_menu.setAptitudes(aptitude_list); | ||
| 151 | weapons_aptitudes_menu.setAptAndWeapons(fig_group); // contenu de la vue | ||
| 152 | AfficheSimulation.refreshWeaponAndAptitude(weapons_aptitudes_menu); // insersion dans la vue principale | ||
| 153 | } | ||
| 154 | |||
| 155 | public static void selectAWeapon(SimAptAndWeaponsVBox view, String weapon_name, ArrayList<Figurine> fig_group, FlowPane weapon_stats) { | ||
| 156 | Arme weapon = fig_group.get(0).getWeaponByName(weapon_name); // recherche dans les armes de la 1ère figurine | ||
| 157 | // on équipe le groupe | ||
| 158 | for(Figurine fig : fig_group) { | ||
| 159 | fig.setWeapon(weapon); | ||
| 160 | } | ||
| 161 | weapon_stats.getChildren().clear(); | ||
| 162 | view.setWeaponStats(weapon, weapon_stats); | ||
| 163 | } | ||
| 164 | |||
| 165 | public static void AliveFigsChoice(int col, int value, String group_name) { | ||
| 166 | // on considère que ceux qui n'attaquent pas sont morts | ||
| 167 | ArrayList<Figurine> fig_group = Battle.getSelectedUnit(col).getIdenticalFigsGroups().get(group_name); | ||
| 168 | for(int i = 0; i < value; i++) { | ||
| 169 | fig_group.get(i).setHP(fig_group.get(i).getHPMax()); | ||
| 170 | } | ||
| 171 | for(int i = value; i < fig_group.size(); i++) { | ||
| 172 | fig_group.get(i).setHP(0); | ||
| 173 | } | ||
| 174 | |||
| 175 | System.out.println("weaponNumberChoice => trouver un moyen de modifier instantanément les images"); | ||
| 176 | } | ||
| 177 | |||
| 178 | public static void checkOrUncheckAnAptitude(boolean isSelected, String aptitude_name, ArrayList<Figurine> fig_group) { | ||
| 179 | for(Aptitude apti : fig_group.get(0).getAptitudes()) // recherche dans les aptitudes de la 1ère figurine | ||
| 180 | { | ||
| 181 | if(apti.getName() == aptitude_name) { | ||
| 182 | for(Figurine fig : fig_group) | ||
| 183 | { | ||
| 184 | HashMap<String, Aptitude> selectedAptitudes = fig.getSelectedAptitudes(); | ||
| 185 | if(isSelected) { | ||
| 186 | selectedAptitudes.put(aptitude_name, apti); | ||
| 187 | } | ||
| 188 | else { | ||
| 189 | if(selectedAptitudes.containsKey(aptitude_name)) { | ||
| 190 | selectedAptitudes.remove(aptitude_name); | ||
| 191 | } | ||
| 192 | } | ||
| 193 | } | ||
| 194 | break; // on ne gère pas le cas où deux aptitudes ont le même nom | ||
| 195 | } | ||
| 196 | } | ||
| 197 | } | ||
| 198 | |||
| 199 | // histogramme | ||
| 200 | public static void afficheSimu(Pane p,Unit u1,Unit u2) { | ||
| 201 | p.getChildren().clear(); | ||
| 202 | Calcul c =Calcul.bataille(u1, u2); | ||
| 203 | |||
| 204 | SimHistogramme.setHist(c.getTabdegat1(), c.getTabmort1(), c.getDegat_moyen1(), c.getMort_moyen1(),p); | ||
| 205 | } | ||
| 206 | |||
| 207 | public static void reverseArmies(ArrayList<ChoiceBox<String>> lists_drop_down) { | ||
| 208 | Battle.reverseArmies(); | ||
| 209 | AfficheSimulation.inversion = true; | ||
| 210 | for(int i = 0; i < 2; i++) | ||
| 211 | { | ||
| 212 | // déclenche la sélection d'une liste dans le menu déroulant, mais avec du code | ||
| 213 | lists_drop_down.get(i).getSelectionModel().select(Battle.getSelectedList(i + 1).getName()); | ||
| 214 | Battle.setSelectedUnit(i + 1, -1); // plus d'unité sélectionnée | ||
| 215 | } | ||
| 216 | AfficheSimulation.inversion = false; | ||
| 217 | } | ||
| 218 | } | ||
