From ad8bbd8dca4dbc7381a5ca636ffec421e78b311e Mon Sep 17 00:00:00 2001 From: aleandro Date: Sun, 14 Jun 2026 19:54:04 +0200 Subject: [PATCH] Fix: small improvement in TUI leaderboard --- .../it/polimi/ingsw/gc14/View/TUI/TUI.java | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/main/java/it/polimi/ingsw/gc14/View/TUI/TUI.java b/src/main/java/it/polimi/ingsw/gc14/View/TUI/TUI.java index bb4c7ad..4c2c29c 100644 --- a/src/main/java/it/polimi/ingsw/gc14/View/TUI/TUI.java +++ b/src/main/java/it/polimi/ingsw/gc14/View/TUI/TUI.java @@ -81,7 +81,8 @@ public class TUI implements IView { if (stage == GameStages.TOTEM_CHOICE) { display(buildTotemsContent()); } else if (stage == GameStages.ENDED) { - display(buildStandingContent() + "\nType 'rematch' to play again or 'quit' to exit"); + display(buildStandingContent()); + printLine("Type 'rematch' to play again or 'quit' to exit"); } else { display(buildBoardContent()); } @@ -170,23 +171,22 @@ public class TUI implements IView { private String buildStandingContent() { if (model.standingPlayers == null || model.standingPlayers.isEmpty()) return ""; - StringBuilder sb = new StringBuilder(); - int size = model.standingPlayers.size(); - for (int i = 0; i < size / 2; i++) { - sb.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)); + String banner = model.standingPlayers.get(0).getUserName().equals(username) + ? "WINNER!" : "GAME OVER"; + List lines = new ArrayList<>(); + for (int i = 0; i < model.standingPlayers.size(); i++) { + var p = model.standingPlayers.get(i); + lines.add((i + 1) + ". " + p.getUserName() + + " (" + p.getTotem().toString() + ")" + + " \uD83C\uDF56:" + p.getFoodValue() + + " \uD83C\uDFC5:" + p.getPrestigeValue()); } - sb.append("\n"); - if (size % 2 != 0) { - sb.append(model.standingPlayers.get(size - 1)).append("\n"); - } - if (model.standingPlayers.get(0).getUserName().equals(username)) { - sb.append("GAME ENDED: !!!YOU WON!!!"); - } else { - sb.append("GAME ENDED: !!!YOU LOST!!!"); - } - return sb.toString(); + int contentWidth = lines.stream().mapToInt(AsciiTable::displayWidth).max().orElse(0); + int pad = Math.max(0, (contentWidth - AsciiTable.displayWidth(banner)) / 2); + var table = new AsciiTable(BorderStyle.ROUNDED, 1); + table.addHeader(" ".repeat(pad) + banner); + lines.forEach(table::addRow); + return table.build(); } // ── Core display primitive ────────────────────────────────────────────────