Some fixes (Concurrent List GUI)

This commit is contained in:
rubenpirreram
2026-05-15 19:16:43 +02:00
parent 987420c4a4
commit ff94a9fca8
7 changed files with 126 additions and 117 deletions
@@ -82,15 +82,19 @@ public class GUI extends Application implements IView {
public void render() {
if(controller.miniModel.currentState.getGameStage()==TOTEM_CHOICE) {
Platform.runLater(() -> {
controllerTotem.render();
primaryStage.setScene(totemScene);
primaryStage.setFullScreen(true);
synchronized (this) {
controllerTotem.render();
primaryStage.setScene(totemScene);
primaryStage.setFullScreen(true);
}
});
} else {
Platform.runLater(() -> {
controllerMain.render();
primaryStage.setScene(mainScene);
primaryStage.setFullScreen(true);
synchronized (this) {
controllerMain.render();
primaryStage.setScene(mainScene);
primaryStage.setFullScreen(true);
}
});
}
}
@@ -86,40 +86,36 @@ public class MainFXMLController {
public void render() {
synchronized (controller)
{
if (old_state_stage==null) {
renderBackground();
renderUpper();
renderBoard();
renderLower();
public synchronized void render() {
if (old_state_stage==null) {
renderBackground();
renderUpper();
renderBoard();
renderLower();
renderMyHand();
renderSidePanel();
} else if (old_state_stage==SLOT_CHOICE ) {
System.out.println("OLD: "+old_state_stage+", NEW: "+controller.miniModel.currentState.getGameStage());
System.out.println("RIDISEGNO BOARD\n");
renderBoard();
} else if (old_state_stage==RES_ACTIONS) {
System.out.println("OLD: "+old_state_stage+", NEW: "+controller.miniModel.currentState.getGameStage());
System.out.println("RIDISEGNO TUTTO. USERNAME: "+old_state_username);
renderUpper();
renderBoard();
renderLower();
renderSidePanel();
if (Objects.equals(old_state_username, controller.myUsername)) {
renderMyHand();
renderSidePanel();
} else if (old_state_stage==SLOT_CHOICE ) {
System.out.println("OLD: "+old_state_stage+", NEW: "+controller.miniModel.currentState.getGameStage());
System.out.println("RIDISEGNO BOARD\n");
renderBoard();
} else if (old_state_stage==RES_ACTIONS) {
System.out.println("OLD: "+old_state_stage+", NEW: "+controller.miniModel.currentState.getGameStage());
System.out.println("RIDISEGNO TUTTO. USERNAME: "+old_state_username);
renderUpper();
renderBoard();
renderLower();
renderSidePanel();
if (Objects.equals(old_state_username, controller.myUsername)) {
renderMyHand();
}
// TODO: se sono io a pescare renderizzo myHand, altrimenti no (non è scontato)
} else {
System.out.println("NON GESTITO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
}
old_state_stage=controller.miniModel.currentState.getGameStage();
old_state_username=controller.miniModel.currentState.getCurrentPlayer().getUserName();
// TODO: se sono io a pescare renderizzo myHand, altrimenti no (non è scontato)
} else {
System.out.println("NON GESTITO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
}
old_state_stage=controller.miniModel.currentState.getGameStage();
old_state_username=controller.miniModel.currentState.getCurrentPlayer().getUserName();
// TODO: le info in sidepanel non vengono aggiornate sempre aggiornate, bisogna prima capire dove metterle
}
@@ -272,21 +268,24 @@ public class MainFXMLController {
upperList.setAlignment(Pos.CENTER);
upperList.getChildren().clear();
int i = 0;
for (TribeCard card : controller.miniModel.board.upperListTribe) {
final int index = i;
StackPane img = createCard(card, true, true);
img.setOnMouseClicked(e -> controller.drawUpperTribeCard(controller.myUsername, index));
upperList.getChildren().add(img);
i++;
}
i = 0;
for (BuildingCard card : controller.miniModel.board.upperListBuilding) {
final int index = i;
StackPane img = createCard(card, true, true);
img.setOnMouseClicked(e -> controller.drawUpperBuildingCard(controller.myUsername, index));
upperList.getChildren().add(img);
i++;
synchronized (controller)
{
int i = 0;
for (TribeCard card : controller.miniModel.board.upperListTribe) {
final int index = i;
StackPane img = createCard(card, true, true);
img.setOnMouseClicked(e -> controller.drawUpperTribeCard(controller.myUsername, index));
upperList.getChildren().add(img);
i++;
}
i = 0;
for (BuildingCard card : controller.miniModel.board.upperListBuilding) {
final int index = i;
StackPane img = createCard(card, true, true);
img.setOnMouseClicked(e -> controller.drawUpperBuildingCard(controller.myUsername, index));
upperList.getChildren().add(img);
i++;
}
}
}
private void renderLower() {
@@ -294,21 +293,24 @@ public class MainFXMLController {
lowerList.setAlignment(Pos.CENTER);
lowerList.getChildren().clear();
int i = 0;
for (TribeCard card : controller.miniModel.board.lowerListTribe) {
final int index = i;
StackPane img = createCard(card, true, true);
img.setOnMouseClicked(e -> controller.drawLowerTribeCard(controller.myUsername, index));
lowerList.getChildren().add(img);
i++;
}
i = 0;
for (BuildingCard card : controller.miniModel.board.lowerListBuilding) {
final int index = i;
StackPane img = createCard(card, true, true);
img.setOnMouseClicked(e -> controller.drawLowerBuildingCard(controller.myUsername, index));
lowerList.getChildren().add(img);
i++;
synchronized (controller)
{
int i = 0;
for (TribeCard card : controller.miniModel.board.lowerListTribe) {
final int index = i;
StackPane img = createCard(card, true, true);
img.setOnMouseClicked(e -> controller.drawLowerTribeCard(controller.myUsername, index));
lowerList.getChildren().add(img);
i++;
}
i = 0;
for (BuildingCard card : controller.miniModel.board.lowerListBuilding) {
final int index = i;
StackPane img = createCard(card, true, true);
img.setOnMouseClicked(e -> controller.drawLowerBuildingCard(controller.myUsername, index));
lowerList.getChildren().add(img);
i++;
}
}
}
private void renderDeck() {
@@ -89,7 +89,7 @@ public class TUI implements IView {
* Delegates to {@link #renderBoard()}.
*/
@Override
public void render() {
public synchronized void render() {
if(model != null)
{
if(model.currentState.getGameStage().equals(GameStages.TOTEM_CHOICE))
@@ -99,6 +99,7 @@ public class TUI implements IView {
else if(model.currentState.getGameStage().equals(GameStages.ENDED))
{
renderStanding();
return;
}
else
{
@@ -109,25 +110,27 @@ public class TUI implements IView {
}
private void renderStanding() {
StringBuilder stringBuilder=new StringBuilder();
ArrayList<Player> playersList=new ArrayList<>(model.players.values());
for(int i = 0; i< model.players.size()/2; i++)
if(model.standingPlayers!=null)
{
stringBuilder.append(AsciiTable.sideBySide(List.of(playersList.get((i*2)).toString().split("\n")),List.of(playersList.get((i*2+1)).toString().split("\n")),2));
}
stringBuilder.append("\n");
if(playersList.size()%2!=0)
{
stringBuilder.append(playersList.get(playersList.size()-1).toString());
StringBuilder stringBuilder=new StringBuilder();
for(int i = 0; i< model.standingPlayers.size()/2; i++)
{
stringBuilder.append(AsciiTable.sideBySide(List.of(model.standingPlayers.get((i*2)).toString().split("\n")),List.of(model.standingPlayers.get((i*2+1)).toString().split("\n")),2));
}
stringBuilder.append("\n");
}
System.out.println(stringBuilder);
if(playersList.get(0).getUserName().equals(username))
{
System.out.println("!!!YOU WON!!!");
}
else {
System.out.println("!!!YOU LOST!!!");
if(model.standingPlayers.size()%2!=0)
{
stringBuilder.append(model.standingPlayers.get(model.standingPlayers.size()-1).toString());
stringBuilder.append("\n");
}
System.out.println(stringBuilder);
if(model.standingPlayers.get(0).getUserName().equals(username))
{
System.out.println("GAME ENDED: !!!YOU WON!!!");
}
else {
System.out.println("GAME ENDED: !!!YOU LOST!!!");
}
}
}