Fixed: Order Card GUI
This commit is contained in:
@@ -464,26 +464,69 @@ public class MainFXMLController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void renderOrder() {
|
private void renderOrder() {
|
||||||
StackPane card = createOrder(Integer.toString(controller.miniModel.players.size()));
|
int numPlayers = controller.miniModel.players.size();
|
||||||
|
StackPane card = createOrder(Integer.toString(numPlayers));
|
||||||
|
|
||||||
VBox overlay = new VBox(-20);
|
Map<Integer, double[]> slotPositions = Map.of(
|
||||||
|
2, new double[]{0.229 ,0.413},
|
||||||
|
3, new double[]{0.183,0.367, 0.548},
|
||||||
|
4, new double[]{0.142,0.316, 0.503, 0.690},
|
||||||
|
5, new double[]{0.066, 0.251, 0.433, 0.617,0.802}
|
||||||
|
);
|
||||||
|
|
||||||
|
double[] positions = slotPositions.get(numPlayers);
|
||||||
|
if (positions == null) return;
|
||||||
|
|
||||||
|
|
||||||
|
Pane overlay = new Pane();
|
||||||
overlay.setPickOnBounds(false);
|
overlay.setPickOnBounds(false);
|
||||||
StackPane.setAlignment(overlay, Pos.TOP_LEFT);
|
overlay.setMouseTransparent(true);
|
||||||
StackPane.setMargin(overlay, new Insets(9, 0, 0, 46));
|
|
||||||
|
|
||||||
for (OrderPlayer player : controller.miniModel.orderLogicCard.playerList) {
|
for (int i = 0; i < controller.miniModel.orderLogicCard.playerList.size(); i++) {
|
||||||
ImageView totem = new ImageView(loadImage("/GUIImages/Totems/totem_" + player.player.totem.toString().toLowerCase(Locale.ROOT) + ".png"));
|
OrderPlayer op = controller.miniModel.orderLogicCard.playerList.get(i);
|
||||||
totem.setFitHeight(70);
|
|
||||||
totem.setPreserveRatio(true);
|
// colore dal totem del giocatore
|
||||||
if (controller.miniModel.slotPlayerMap.containsValue(player.player)) {
|
Color color = totemColor(op.player.totem);
|
||||||
totem.setOpacity(0.5);
|
|
||||||
|
Rectangle rect = new Rectangle(48, 26, color);
|
||||||
|
rect.setArcWidth(4);
|
||||||
|
rect.setArcHeight(4);
|
||||||
|
if (controller.miniModel.slotPlayerMap.containsValue(op.player)) {
|
||||||
|
rect.setOpacity(0.5);
|
||||||
}
|
}
|
||||||
overlay.getChildren().add(totem);
|
|
||||||
|
final double yRatio = positions[i];
|
||||||
|
overlay.prefHeightProperty().bind(card.heightProperty());
|
||||||
|
overlay.prefWidthProperty().bind(card.widthProperty());
|
||||||
|
|
||||||
|
// posizione X fissa, Y proporzionale
|
||||||
|
rect.setX(41);
|
||||||
|
card.heightProperty().addListener((obs, ov, nv) -> {
|
||||||
|
rect.setY(nv.doubleValue() * yRatio);
|
||||||
|
});
|
||||||
|
if (card.getHeight() > 0) {
|
||||||
|
rect.setY(card.getHeight() * yRatio);
|
||||||
|
}
|
||||||
|
|
||||||
|
overlay.getChildren().add(rect);
|
||||||
}
|
}
|
||||||
|
|
||||||
card.getChildren().add(overlay);
|
card.getChildren().add(overlay);
|
||||||
board.getChildren().add(card);
|
board.getChildren().add(card);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Color totemColor(Totems totem) {
|
||||||
|
return switch (totem) {
|
||||||
|
case ORANGE -> Color.rgb(223, 76, 17);
|
||||||
|
case BLUE -> Color.rgb(42, 155, 179);
|
||||||
|
case PURPLE -> Color.rgb(65, 20, 42);
|
||||||
|
case YELLOW -> Color.rgb(248, 201, 57);
|
||||||
|
case WHITE -> Color.rgb(232, 232, 231);
|
||||||
|
// aggiungi i tuoi valori reali
|
||||||
|
default -> Color.GRAY;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
private void renderSlotMap() {
|
private void renderSlotMap() {
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for (Map.Entry<Slot, Player> entry : controller.miniModel.slotPlayerMap.entrySet()) {
|
for (Map.Entry<Slot, Player> entry : controller.miniModel.slotPlayerMap.entrySet()) {
|
||||||
|
|||||||
Reference in New Issue
Block a user