GabrieleRadice
2026-06-19 18:34:28 +02:00
26 changed files with 371 additions and 4153 deletions
@@ -192,7 +192,7 @@ public class ClientLauncherTUI {
System.out.println("Errore: " + err);
return false;
}
System.out.println("Connected via RMI.");
System.out.println("Connected via RMI, waiting for other players...");
controller.setClient(client);
} else if (networkStr.equals("tcp")) {
@@ -204,7 +204,7 @@ public class ClientLauncherTUI {
System.out.println("Errore: " + err);
return false;
}
System.out.println("Connected via TCP.");
System.out.println("Connected via TCP, waiting for other players...");
controller.setClient(client);
} else {
@@ -20,7 +20,7 @@ public class Player implements Serializable {
/**
* The maximum length allowed for the username string.
*/
private static final int MAX_USERNAME_LENGTH = 32;
private static final int MAX_USERNAME_LENGTH = 10;
/**
* Identifier for the {@code Player} when displaying the game through the GUI.
@@ -93,7 +93,7 @@ public class RMIServer extends UnicastRemoteObject implements IGameServer {
synchronized (controller) {
if (playerList.isEmpty() && controller.getModel()==null) {
if (playerList.isEmpty() &&(controller.getModel()==null || controller.getModel().getCurrentState().getGameStage().equals(GameStages.WAITING))) {
controller.setModel(new Game(preferredInt));
playerList.setLimit(preferredInt);
System.out.println("Game Created With :"+preferredInt+" Players");
@@ -160,7 +160,7 @@ public class TCPServer {
synchronized (controller) {
String username = eventAddPlayer.getUsername();
//reconnect players after a server crash
if (playerList.isEmpty()&& controller.getModel()==null) {
if (playerList.isEmpty() &&(controller.getModel()==null || controller.getModel().getCurrentState().getGameStage().equals(GameStages.WAITING))) {
Game model = new Game(eventAddPlayer.getProposedNPlayer());
controller.setModel(model);
playerList.setLimit(eventAddPlayer.getProposedNPlayer());
@@ -558,8 +558,13 @@ public class MainFXMLController {
int i = 0;
for (TribeCard card : controller.getMiniModel().upperListTribeCards) {
final int index = i;
StackPane img = createCard(card, true, true, upperList);
img.setOnMouseClicked(e -> controller.drawUpperTribeCard(index));
StackPane img;
if(!card.isEventCard()) {
img = createCard(card, true, true, upperList);
img.setOnMouseClicked(e -> controller.drawUpperTribeCard(index));
} else {
img = createCard(card, false, false, upperList);
}
upperList.getChildren().add(img);
i++;
}
@@ -575,8 +580,13 @@ public class MainFXMLController {
int i = 0;
for (TribeCard card : controller.getMiniModel().lowerListTribeCards) {
final int index = i;
StackPane img = createCard(card, true, true, lowerList);
img.setOnMouseClicked(e -> controller.drawLowerTribeCard(index));
StackPane img;
if(!card.isEventCard()) {
img = createCard(card, true, true, lowerList);
img.setOnMouseClicked(e -> controller.drawLowerTribeCard(index));
} else {
img = createCard(card, false, false, lowerList);
}
lowerList.getChildren().add(img);
i++;
}
@@ -619,8 +629,6 @@ public class MainFXMLController {
back.fitHeightProperty().bind(board.sceneProperty().get().heightProperty().subtract(56).divide(4).multiply(0.94));
back.setPreserveRatio(true);
addClip(back);
addShadow(back);
addHoverZoom(back);
board.getChildren().add(back);
}
@@ -90,6 +90,7 @@ public class TUI implements IView {
GameStages stage = model.currentState.getGameStage();
if (stage == GameStages.TOTEM_CHOICE) {
display(buildTotemsContent());
printLine("Type: totem <pos>");
} else if (stage == GameStages.ENDED) {
display(buildStandingContent());
printLine("Type 'rematch' to play again or 'quit' to exit");
@@ -184,7 +185,7 @@ public class TUI implements IView {
String current = model.currentState.getCurrentPlayer() != null
? model.currentState.getCurrentPlayer().getUserName() + ""
: "";
return current + "TOTEMS AVAILABLE:\n" + table.build() + "\nType: totem <pos>";
return current + "TOTEMS AVAILABLE:\n" + table.build();
}
private String buildStandingContent() {