summaryrefslogtreecommitdiff
path: root/src/main/java/vue/simulation/SimFigurinesVBox.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/vue/simulation/SimFigurinesVBox.java
downloadppe_javafx-0c2c3ee5a55f36d270171f2f67938542e251fdc5.tar.gz
ppe_javafx-0c2c3ee5a55f36d270171f2f67938542e251fdc5.tar.bz2
ppe_javafx-0c2c3ee5a55f36d270171f2f67938542e251fdc5.zip
fork utilisant maven
Diffstat (limited to 'src/main/java/vue/simulation/SimFigurinesVBox.java')
-rw-r--r--src/main/java/vue/simulation/SimFigurinesVBox.java139
1 files changed, 139 insertions, 0 deletions
diff --git a/src/main/java/vue/simulation/SimFigurinesVBox.java b/src/main/java/vue/simulation/SimFigurinesVBox.java
new file mode 100644
index 0000000..4940917
--- /dev/null
+++ b/src/main/java/vue/simulation/SimFigurinesVBox.java
@@ -0,0 +1,139 @@
1package vue.simulation;
2
3import java.util.ArrayList;
4import java.util.HashMap;
5
6import application.Battle;
7import controlleur.ControlleurSimu;
8import javafx.geometry.Insets;
9import javafx.geometry.Pos;
10import javafx.scene.control.Button;
11import javafx.scene.control.Label;
12import javafx.scene.control.Slider;
13import javafx.scene.control.Spinner;
14import javafx.scene.image.Image;
15import javafx.scene.image.ImageView;
16import javafx.scene.layout.HBox;
17import javafx.scene.layout.FlowPane;
18import javafx.scene.layout.VBox;
19import modele.Figurine;
20import modele.Unit;
21
22public class SimFigurinesVBox extends VBox
23{
24 private Unit unit;
25 private int column;
26 private ArrayList<SimAptAndWeaponsVBox> weapons_aptitudes_menu_view = new ArrayList<SimAptAndWeaponsVBox>();
27 private boolean open = false; // les figurines sont cachées par défaut
28
29 public SimFigurinesVBox(int col, Unit unit){
30 column = col;
31 this.unit = unit;
32 this.setStyle("-fx-padding: 2px;");
33 }
34
35 public boolean isOpen(){
36 return open;
37 }
38 public void changeState(){
39 open ^= true; // inversion de bouléen avec un masque 00000001
40 }
41
42 public void setFigurines()
43 {
44 /* -- boucle sur les groupes de figuriones -- */
45 int i = 0; // valeurs des boutons numérotés
46 for(HashMap.Entry<String, ArrayList<Figurine>> entry : unit.getIdenticalFigsGroups().entrySet())
47 {
48 FlowPane fig_group = new FlowPane();
49 //fig_group.setStyle("-fx-background-color: rgb(220, 220, 220);");
50 String fig_name = entry.getKey();
51 ArrayList<Figurine> fig_list = entry.getValue();
52 i++;
53 if(column == 1)
54 {
55 // boutons numérotés des groupes de figurines
56 Button number = new Button(Integer.toString(i));
57 number.setAlignment(Pos.CENTER);
58 number.setMinHeight(25);
59 number.setMinWidth(25);
60 number.setStyle("-fx-text-fill: white; -fx-background-color: black;");
61 fig_group.getChildren().add(number);
62
63 // zone des armes et aptitudes
64 SimAptAndWeaponsVBox weapons_aptitudes_menu = new SimAptAndWeaponsVBox();
65 weapons_aptitudes_menu.setFigGroup(i, fig_name, fig_list.size());
66 weapons_aptitudes_menu_view.add(weapons_aptitudes_menu);
67
68 number.setOnAction(e ->
69 {
70 ControlleurSimu.makeWeaponsAndAptitudeZone(fig_list, weapons_aptitudes_menu);
71 });
72 }
73 else {
74 Label fig_name_label = new Label(fig_name);
75 fig_name_label.setStyle("-fx-padding: 0 5px 0 0");
76 fig_group.getChildren().add(fig_name_label);
77
78 Slider nb_of_defenders = new Slider(0, fig_list.size(),
79 Battle.getSelectedUnit(2).getAliveFigsOfAGroup(fig_name));
80 nb_of_defenders.setMajorTickUnit(1);
81 nb_of_defenders.setMinorTickCount(0);
82 nb_of_defenders.setSnapToTicks(true);
83 //nb_of_attackers.setShowTickMarks(true);
84 nb_of_defenders.setShowTickLabels(true);
85 //nb_of_attackers.setBlockIncrement(1);
86
87 fig_group.getChildren().add(nb_of_defenders);
88
89 nb_of_defenders.valueProperty().addListener((observable, oldValue, newValue) -> {
90 ControlleurSimu.AliveFigsChoice(2, newValue.intValue(), fig_name);
91 });
92 }
93
94
95 /* -- figurines d'un groupe -- */
96 for(Figurine fig : fig_list)
97 {
98 HBox one_fig_box = new HBox();
99 Image one_image;
100 if(fig.getHP() > 0) {
101 one_image = new Image("/images/android-fill.png");
102 }
103 else {
104 one_image = new Image("/images/android-line.png");
105 }
106 ImageView one_image_box = new ImageView();
107 one_image_box.setPreserveRatio(true);
108 //one_image_box.setFitHeight(24); // appeler une des deux méthodes de dimensionnement
109 one_image_box.setFitWidth(24);
110 one_image_box.setImage(one_image);
111 one_fig_box.getChildren().add(one_image_box);
112
113 if(column == 1) {
114 Label hp_label = new Label(fig.getHP() + " PV ");
115 one_fig_box.getChildren().add(hp_label);
116 }
117 else {
118 Label hp_label = new Label("PV:");
119 Spinner<Integer> spinner = new Spinner<>(0, fig.getHPMax(), fig.getHP());
120 spinner.setMaxWidth(55);
121 one_fig_box.getChildren().add(hp_label);
122 one_fig_box.getChildren().add(spinner);
123 one_fig_box.setStyle("-fx-padding: 0 3px 0 0;");
124
125 spinner.valueProperty().addListener((obs, oldValue, newValue) -> {
126 ControlleurSimu.hpUpdate(newValue, fig, one_image_box);
127 });
128 }
129
130 SimFigurinesVBox.setMargin(one_fig_box, new Insets(5));
131 fig_group.getChildren().add(one_fig_box);
132 }
133 SimFigurinesVBox.setMargin(fig_group, new Insets(3));
134
135 this.getChildren().add(fig_group);
136 }
137 }
138}
139