summaryrefslogtreecommitdiff
path: root/src/main/java/controlleur/ControlleurSimu.java
diff options
context:
space:
mode:
authorpolo <ordipolo@gmx.fr>2026-07-02 00:14:17 +0200
committerpolo <ordipolo@gmx.fr>2026-07-02 00:14:17 +0200
commit0c2c3ee5a55f36d270171f2f67938542e251fdc5 (patch)
tree8ea4d6a7ad09a5b1389b829980a7a5476982e754 /src/main/java/controlleur/ControlleurSimu.java
downloadppe_javafx-0c2c3ee5a55f36d270171f2f67938542e251fdc5.tar.gz
ppe_javafx-0c2c3ee5a55f36d270171f2f67938542e251fdc5.tar.bz2
ppe_javafx-0c2c3ee5a55f36d270171f2f67938542e251fdc5.zip
fork utilisant maven
Diffstat (limited to 'src/main/java/controlleur/ControlleurSimu.java')
-rw-r--r--src/main/java/controlleur/ControlleurSimu.java218
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 @@
1package controlleur;
2
3import java.util.ArrayList;
4import java.util.HashMap;
5import application.Battle;
6import javafx.scene.control.Button;
7import javafx.scene.control.ChoiceBox;
8import javafx.scene.image.Image;
9import javafx.scene.image.ImageView;
10import javafx.scene.layout.FlowPane;
11import javafx.scene.layout.HBox;
12import javafx.scene.layout.Pane;
13import modele.Aptitude;
14import modele.Arme;
15import modele.ArmeeListe;
16import modele.Calcul;
17import modele.Figurine;
18import modele.Unit;
19import vue.simulation.AfficheSimulation;
20import vue.simulation.SimAptAndWeaponsVBox;
21import vue.simulation.SimFigurinesVBox;
22import vue.simulation.SimHistogramme;
23import vue.simulation.SimUnitsVBox;
24
25public 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}