|
|
|
@@ -47,14 +47,12 @@ public class MainFXMLController {
|
|
|
|
|
private Popup popup;
|
|
|
|
|
private HBox popupCards;
|
|
|
|
|
|
|
|
|
|
private MiniModel model;
|
|
|
|
|
private ClientController controller;
|
|
|
|
|
private String username;
|
|
|
|
|
private final Map<String, ImageView> cardCache = new HashMap<>();
|
|
|
|
|
|
|
|
|
|
public void setModel(MiniModel model) {this.model = model;}
|
|
|
|
|
public void setController(ClientController controller) {this.controller = controller;}
|
|
|
|
|
public void setUsername(String username) {this.username = username;}
|
|
|
|
|
public void setController(ClientController controller) {
|
|
|
|
|
this.controller = controller;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -116,10 +114,10 @@ public class MainFXMLController {
|
|
|
|
|
img.setClip(clip);
|
|
|
|
|
StackPane wrapper = new StackPane(img);
|
|
|
|
|
|
|
|
|
|
Player player = model.slotPlayerMap.get(slot);
|
|
|
|
|
if (player != null && model.getPositionByUsername(player.getUserName())!=-1) {
|
|
|
|
|
int index = model.getPositionByUsername(player.getUserName());
|
|
|
|
|
ImageView totem = new ImageView(new Image(getClass().getResourceAsStream("/GUIImages/Totems/totem_" + index + ".png")));
|
|
|
|
|
Player player = controller.miniModel.slotPlayerMap.get(slot);
|
|
|
|
|
if (player != null && controller.miniModel.getPositionByUsername(player.getUserName())!=-1) {
|
|
|
|
|
int index = controller.miniModel.getPositionByUsername(player.getUserName());
|
|
|
|
|
ImageView totem = new ImageView(new Image(getClass().getResourceAsStream("/GUIImages/Totems/totem_" + "blue" + ".png")));
|
|
|
|
|
totem.setFitHeight(70);
|
|
|
|
|
totem.setPreserveRatio(true);
|
|
|
|
|
StackPane.setAlignment(totem, Pos.TOP_LEFT);
|
|
|
|
@@ -221,24 +219,24 @@ public class MainFXMLController {
|
|
|
|
|
upperList.getChildren().clear();
|
|
|
|
|
|
|
|
|
|
int i = 0;
|
|
|
|
|
for (TribeCard card : model.board.upperListTribe) {
|
|
|
|
|
for (TribeCard card : controller.miniModel.board.upperListTribe) {
|
|
|
|
|
final int index = i;
|
|
|
|
|
StackPane img = createCard(card, true, true);
|
|
|
|
|
img.setOnMouseClicked(e -> controller.drawUpperTribeCard(username, index));
|
|
|
|
|
img.setOnMouseClicked(e -> controller.drawUpperTribeCard(controller.myUsername, index));
|
|
|
|
|
upperList.getChildren().add(img);
|
|
|
|
|
i++;
|
|
|
|
|
}
|
|
|
|
|
i = 0;
|
|
|
|
|
for (BuildingCard card : model.board.upperListBuilding) {
|
|
|
|
|
for (BuildingCard card : controller.miniModel.board.upperListBuilding) {
|
|
|
|
|
final int index = i;
|
|
|
|
|
StackPane img = createCard(card, true, true);
|
|
|
|
|
img.setOnMouseClicked(e -> controller.drawUpperBuildingCard(username, index));
|
|
|
|
|
img.setOnMouseClicked(e -> controller.drawUpperBuildingCard(controller.myUsername, index));
|
|
|
|
|
upperList.getChildren().add(img);
|
|
|
|
|
i++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void renderOrder() {
|
|
|
|
|
StackPane card = createOrder(Integer.toString(model.players.size()), false, false);
|
|
|
|
|
StackPane card = createOrder(Integer.toString(controller.miniModel.players.size()), false, false);
|
|
|
|
|
|
|
|
|
|
VBox overlay = new VBox(-20);
|
|
|
|
|
overlay.setPickOnBounds(false);
|
|
|
|
@@ -246,13 +244,13 @@ public class MainFXMLController {
|
|
|
|
|
StackPane.setMargin(overlay, new Insets(9, 0, 0, 57));
|
|
|
|
|
|
|
|
|
|
int i = 0;
|
|
|
|
|
for (Player player : model.players.values()) {
|
|
|
|
|
for (Player player : controller.miniModel.players.values()) {
|
|
|
|
|
final int index = i;
|
|
|
|
|
|
|
|
|
|
ImageView totem = new ImageView(new Image(getClass().getResourceAsStream("/GUIImages/Totems/totem_" + index + ".png")));
|
|
|
|
|
ImageView totem = new ImageView(new Image(getClass().getResourceAsStream("/GUIImages/Totems/totem_" + "blue" + ".png")));
|
|
|
|
|
totem.setFitHeight(70);
|
|
|
|
|
totem.setPreserveRatio(true);
|
|
|
|
|
if (!(model.orderLogicCard.getPosition(player.getUserName()) != -1 && !model.slotPlayerMap.containsValue(player))) {
|
|
|
|
|
if (!(controller.miniModel.orderLogicCard.getPosition(player.getUserName()) != -1 && !controller.miniModel.slotPlayerMap.containsValue(player))) {
|
|
|
|
|
totem.setOpacity(0.0);
|
|
|
|
|
}
|
|
|
|
|
overlay.getChildren().add(totem);
|
|
|
|
@@ -267,7 +265,7 @@ public class MainFXMLController {
|
|
|
|
|
board.getChildren().clear();
|
|
|
|
|
|
|
|
|
|
String path = "";
|
|
|
|
|
switch (model.currentState.getEra()) {
|
|
|
|
|
switch (controller.miniModel.currentState.getEra()) {
|
|
|
|
|
case 1 -> path = "/GUIImages/Backs/back-001.png";
|
|
|
|
|
case 2 -> path = "/GUIImages/Backs/back-030.png";
|
|
|
|
|
case 3 -> path = "/GUIImages/Backs/back-058.png";
|
|
|
|
@@ -289,11 +287,11 @@ public class MainFXMLController {
|
|
|
|
|
renderOrder();
|
|
|
|
|
|
|
|
|
|
int i = 0;
|
|
|
|
|
for (Map.Entry<Slot, Player> entry : model.slotPlayerMap.entrySet()) {
|
|
|
|
|
for (Map.Entry<Slot, Player> entry : controller.miniModel.slotPlayerMap.entrySet()) {
|
|
|
|
|
Slot slot = entry.getKey();
|
|
|
|
|
final int index = i;
|
|
|
|
|
StackPane img = createSlot(slot, true, true);
|
|
|
|
|
img.setOnMouseClicked(e -> controller.slotChoice(username, index));
|
|
|
|
|
img.setOnMouseClicked(e -> controller.slotChoice(controller.myUsername, index));
|
|
|
|
|
board.getChildren().add(img);
|
|
|
|
|
i++;
|
|
|
|
|
}
|
|
|
|
@@ -304,18 +302,18 @@ public class MainFXMLController {
|
|
|
|
|
lowerList.getChildren().clear();
|
|
|
|
|
|
|
|
|
|
int i = 0;
|
|
|
|
|
for (TribeCard card : model.board.lowerListTribe) {
|
|
|
|
|
for (TribeCard card : controller.miniModel.board.lowerListTribe) {
|
|
|
|
|
final int index = i;
|
|
|
|
|
StackPane img = createCard(card, true, true);
|
|
|
|
|
img.setOnMouseClicked(e -> controller.drawLowerTribeCard(username, index));
|
|
|
|
|
img.setOnMouseClicked(e -> controller.drawLowerTribeCard(controller.myUsername, index));
|
|
|
|
|
lowerList.getChildren().add(img);
|
|
|
|
|
i++;
|
|
|
|
|
}
|
|
|
|
|
i = 0;
|
|
|
|
|
for (BuildingCard card : model.board.lowerListBuilding) {
|
|
|
|
|
for (BuildingCard card : controller.miniModel.board.lowerListBuilding) {
|
|
|
|
|
final int index = i;
|
|
|
|
|
StackPane img = createCard(card, true, true);
|
|
|
|
|
img.setOnMouseClicked(e -> controller.drawLowerBuildingCard(username, index));
|
|
|
|
|
img.setOnMouseClicked(e -> controller.drawLowerBuildingCard(controller.myUsername, index));
|
|
|
|
|
lowerList.getChildren().add(img);
|
|
|
|
|
i++;
|
|
|
|
|
}
|
|
|
|
@@ -327,13 +325,13 @@ public class MainFXMLController {
|
|
|
|
|
myHand.setSpacing(14);
|
|
|
|
|
myHand.setAlignment(Pos.CENTER);
|
|
|
|
|
|
|
|
|
|
drawMyHandList(myHand, model.players.get(username).artists);
|
|
|
|
|
drawMyHandList(myHand, model.players.get(username).gatherers);
|
|
|
|
|
drawMyHandList(myHand, model.players.get(username).inventors);
|
|
|
|
|
drawMyHandList(myHand, model.players.get(username).builders);
|
|
|
|
|
drawMyHandList(myHand, model.players.get(username).shamans);
|
|
|
|
|
drawMyHandList(myHand, model.players.get(username).hunters);
|
|
|
|
|
drawMyHandList(myHand, model.players.get(username).buildingCards);
|
|
|
|
|
drawMyHandList(myHand, controller.miniModel.players.get(controller.myUsername).artists);
|
|
|
|
|
drawMyHandList(myHand, controller.miniModel.players.get(controller.myUsername).gatherers);
|
|
|
|
|
drawMyHandList(myHand, controller.miniModel.players.get(controller.myUsername).inventors);
|
|
|
|
|
drawMyHandList(myHand, controller.miniModel.players.get(controller.myUsername).builders);
|
|
|
|
|
drawMyHandList(myHand, controller.miniModel.players.get(controller.myUsername).shamans);
|
|
|
|
|
drawMyHandList(myHand, controller.miniModel.players.get(controller.myUsername).hunters);
|
|
|
|
|
drawMyHandList(myHand, controller.miniModel.players.get(controller.myUsername).buildingCards);
|
|
|
|
|
}
|
|
|
|
|
private void drawMyHandList(HBox myHand, ArrayList<? extends PlayableCard> cardList) {
|
|
|
|
|
if (!cardList.isEmpty()) {
|
|
|
|
@@ -361,16 +359,16 @@ public class MainFXMLController {
|
|
|
|
|
sidePanel.getChildren().clear();
|
|
|
|
|
sidePanel.setSpacing(6);
|
|
|
|
|
|
|
|
|
|
era.setText(Integer.toString(model.currentState.getEra()));
|
|
|
|
|
round.setText(Integer.toString(model.currentState.getRound()));
|
|
|
|
|
player.setText(model.currentState.getCurrentPlayer().getUserName());
|
|
|
|
|
era.setText(Integer.toString(controller.miniModel.currentState.getEra()));
|
|
|
|
|
round.setText(Integer.toString(controller.miniModel.currentState.getRound()));
|
|
|
|
|
player.setText(controller.miniModel.currentState.getCurrentPlayer().getUserName());
|
|
|
|
|
VBox.setMargin(info, new Insets(5, 5, 5, 5));
|
|
|
|
|
sidePanel.getChildren().add(info);
|
|
|
|
|
|
|
|
|
|
renderPlayers(sidePanel);
|
|
|
|
|
}
|
|
|
|
|
private void renderPlayers(VBox playersHand) {
|
|
|
|
|
for (Player player : model.players.values()) {
|
|
|
|
|
for (Player player : controller.miniModel.players.values()) {
|
|
|
|
|
// Card container
|
|
|
|
|
VBox card = new VBox(3);
|
|
|
|
|
VBox.setMargin(card, new Insets(5));
|
|
|
|
@@ -382,13 +380,13 @@ public class MainFXMLController {
|
|
|
|
|
// Riga 1: icona totem + nome
|
|
|
|
|
HBox headerRow = new HBox(8);
|
|
|
|
|
headerRow.setAlignment(Pos.CENTER);
|
|
|
|
|
int index = new ArrayList<>(model.players.values()).indexOf(player);
|
|
|
|
|
ImageView totem = new ImageView(new Image(getClass().getResourceAsStream("/GUIImages/Totems/totem_" + index + ".png")));
|
|
|
|
|
int index = new ArrayList<>(controller.miniModel.players.values()).indexOf(player);
|
|
|
|
|
ImageView totem = new ImageView(new Image(getClass().getResourceAsStream("/GUIImages/Totems/totem_" + "blue" + ".png")));
|
|
|
|
|
totem.setFitHeight(20);
|
|
|
|
|
totem.setPreserveRatio(true);
|
|
|
|
|
Label usernameLabel = new Label(player.getUserName());
|
|
|
|
|
usernameLabel.getStyleClass().add("label-medium");
|
|
|
|
|
if (player.getUserName().equals(username)) {
|
|
|
|
|
if (player.getUserName().equals(controller.myUsername)) {
|
|
|
|
|
usernameLabel.setStyle("-fx-text-fill: #9d0208");
|
|
|
|
|
}
|
|
|
|
|
headerRow.getChildren().addAll(totem, usernameLabel);
|
|
|
|
@@ -465,7 +463,7 @@ public class MainFXMLController {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private ArrayList<PlayableCard> getPlayerCards(String username, String type) {
|
|
|
|
|
Player p = model.players.get(username);
|
|
|
|
|
Player p = controller.miniModel.players.get(username);
|
|
|
|
|
return switch (type) {
|
|
|
|
|
case "artists" -> new ArrayList<>(p.artists);
|
|
|
|
|
case "gatherers" -> new ArrayList<>(p.gatherers);
|
|
|
|
|