Add: Added SKipTurn Button and Details Button. Fixed: TCP now display leaderboard
This commit is contained in:
@@ -161,18 +161,14 @@ public class TCPClient implements IClient {
|
|||||||
if (event.getIsError()) {
|
if (event.getIsError()) {
|
||||||
controller.view.showError(event.toString());
|
controller.view.showError(event.toString());
|
||||||
} else {
|
} else {
|
||||||
synchronized (controller) {
|
controller.view.applyAndRender(event);
|
||||||
event.apply(controller.miniModel);
|
|
||||||
}
|
|
||||||
controller.view.render();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (read instanceof MiniModel model) {
|
} else if (read instanceof MiniModel model) {
|
||||||
synchronized (controller) {
|
synchronized (controller) {
|
||||||
controller.setModel(model);
|
controller.setModel(model);
|
||||||
|
controller.view.render();
|
||||||
}
|
}
|
||||||
controller.view.render();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (ClassNotFoundException e) {
|
} catch (ClassNotFoundException e) {
|
||||||
|
|||||||
@@ -66,32 +66,34 @@ public class LeaderboardFXMLController {
|
|||||||
|
|
||||||
public void render() {
|
public void render() {
|
||||||
rankingList.getChildren().clear();
|
rankingList.getChildren().clear();
|
||||||
|
if(controller.miniModel.standingPlayers!=null)
|
||||||
|
{
|
||||||
|
List<Player> sorted = controller.miniModel.standingPlayers;
|
||||||
|
|
||||||
List<Player> sorted = controller.miniModel.standingPlayers;
|
boolean iWon = sorted.get(0).getUserName().equals(controller.myUsername);
|
||||||
|
|
||||||
boolean iWon = sorted.get(0).getUserName().equals(controller.myUsername);
|
// Label grande Winner / Game Over
|
||||||
|
Label outcomeLabel = new Label(iWon ? "\uD83C\uDFC6 WINNER! \uD83C\uDFC6" : "GAME OVER");
|
||||||
|
outcomeLabel.setStyle(
|
||||||
|
"-fx-font-size: 64px;" +
|
||||||
|
"-fx-font-weight: bold;" +
|
||||||
|
"-fx-text-fill: " + (iWon ? "#FFD700;" : "#FF4444;")
|
||||||
|
);
|
||||||
|
DropShadow glow = new DropShadow();
|
||||||
|
glow.setColor(iWon ? Color.rgb(255, 200, 0, 0.95) : Color.rgb(220, 0, 0, 0.95));
|
||||||
|
glow.setRadius(35);
|
||||||
|
glow.setSpread(0.35);
|
||||||
|
outcomeLabel.setEffect(glow);
|
||||||
|
rankingList.getChildren().add(outcomeLabel);
|
||||||
|
|
||||||
// Label grande Winner / Game Over
|
// Separatore
|
||||||
Label outcomeLabel = new Label(iWon ? "\uD83C\uDFC6 WINNER! \uD83C\uDFC6" : "GAME OVER");
|
Region sep = new Region();
|
||||||
outcomeLabel.setStyle(
|
sep.setPrefHeight(16);
|
||||||
"-fx-font-size: 64px;" +
|
rankingList.getChildren().add(sep);
|
||||||
"-fx-font-weight: bold;" +
|
|
||||||
"-fx-text-fill: " + (iWon ? "#FFD700;" : "#FF4444;")
|
|
||||||
);
|
|
||||||
DropShadow glow = new DropShadow();
|
|
||||||
glow.setColor(iWon ? Color.rgb(255, 200, 0, 0.95) : Color.rgb(220, 0, 0, 0.95));
|
|
||||||
glow.setRadius(35);
|
|
||||||
glow.setSpread(0.35);
|
|
||||||
outcomeLabel.setEffect(glow);
|
|
||||||
rankingList.getChildren().add(outcomeLabel);
|
|
||||||
|
|
||||||
// Separatore
|
for (int i = 0; i < sorted.size(); i++) {
|
||||||
Region sep = new Region();
|
rankingList.getChildren().add(createPlayerRow(i + 1, sorted.get(i)));
|
||||||
sep.setPrefHeight(16);
|
}
|
||||||
rankingList.getChildren().add(sep);
|
|
||||||
|
|
||||||
for (int i = 0; i < sorted.size(); i++) {
|
|
||||||
rankingList.getChildren().add(createPlayerRow(i + 1, sorted.get(i)));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -498,6 +498,25 @@ public class MainFXMLController {
|
|||||||
VBox.setMargin(info, new Insets(5, 5, 5, 5));
|
VBox.setMargin(info, new Insets(5, 5, 5, 5));
|
||||||
sidePanel.getChildren().add(info);
|
sidePanel.getChildren().add(info);
|
||||||
|
|
||||||
|
// ===== NUOVO: bottoni Skip Turn e Dettagli =====
|
||||||
|
HBox buttonRow = new HBox(8);
|
||||||
|
buttonRow.setAlignment(Pos.CENTER);
|
||||||
|
VBox.setMargin(buttonRow, new Insets(0, 5, 5, 5));
|
||||||
|
|
||||||
|
javafx.scene.control.Button skipBtn = new javafx.scene.control.Button("Skip Turn");
|
||||||
|
skipBtn.getStyleClass().add("action-button");
|
||||||
|
skipBtn.setOnAction(e -> controller.skipTurn(controller.myUsername));
|
||||||
|
addHoverZoom(skipBtn);
|
||||||
|
|
||||||
|
javafx.scene.control.Button detailsBtn = new javafx.scene.control.Button("Ending Details");
|
||||||
|
detailsBtn.getStyleClass().add("action-button");
|
||||||
|
detailsBtn.setOnAction(e -> openDetailsPopup());
|
||||||
|
addHoverZoom(detailsBtn);
|
||||||
|
|
||||||
|
buttonRow.getChildren().addAll(skipBtn, detailsBtn);
|
||||||
|
sidePanel.getChildren().add(buttonRow);
|
||||||
|
// ================================================
|
||||||
|
|
||||||
for (Player player : controller.miniModel.players.values()) {
|
for (Player player : controller.miniModel.players.values()) {
|
||||||
renderPlayer(player);
|
renderPlayer(player);
|
||||||
}
|
}
|
||||||
@@ -574,4 +593,15 @@ public class MainFXMLController {
|
|||||||
}
|
}
|
||||||
showPopup();
|
showPopup();
|
||||||
}
|
}
|
||||||
|
private void openDetailsPopup() {
|
||||||
|
popupCards.getChildren().clear();
|
||||||
|
ImageView img = new ImageView(loadImage("/GUIImages/Backs/back-118.png"));
|
||||||
|
img.setFitHeight(290);
|
||||||
|
img.setPreserveRatio(true);
|
||||||
|
addClip(img);
|
||||||
|
StackPane wrapper = new StackPane(img);
|
||||||
|
addShadow(wrapper);
|
||||||
|
popupCards.getChildren().add(wrapper);
|
||||||
|
showPopup();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -47,4 +47,18 @@
|
|||||||
-fx-background-insets: 0, 5, 10, 15;
|
-fx-background-insets: 0, 5, 10, 15;
|
||||||
-fx-background-radius: 15, 12, 8, 4;
|
-fx-background-radius: 15, 12, 8, 4;
|
||||||
-fx-padding: 15 15 15 15;
|
-fx-padding: 15 15 15 15;
|
||||||
|
}
|
||||||
|
.action-button {
|
||||||
|
-fx-background-color: #9d0208;
|
||||||
|
-fx-text-fill: white;
|
||||||
|
-fx-font-family: "Inknut Antiqua";
|
||||||
|
-fx-font-size: 11px;
|
||||||
|
-fx-background-radius: 8;
|
||||||
|
-fx-border-radius: 8;
|
||||||
|
-fx-padding: 4 10 4 10;
|
||||||
|
-fx-cursor: hand;
|
||||||
|
}
|
||||||
|
|
||||||
|
.action-button:hover {
|
||||||
|
-fx-background-color: #b42224;
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user