Fix: small improvement in TUI leaderboard

This commit is contained in:
2026-06-14 19:54:04 +02:00
parent 793630ed96
commit ad8bbd8dca
@@ -81,7 +81,8 @@ public class TUI implements IView {
if (stage == GameStages.TOTEM_CHOICE) { if (stage == GameStages.TOTEM_CHOICE) {
display(buildTotemsContent()); display(buildTotemsContent());
} else if (stage == GameStages.ENDED) { } 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 { } else {
display(buildBoardContent()); display(buildBoardContent());
} }
@@ -170,23 +171,22 @@ public class TUI implements IView {
private String buildStandingContent() { private String buildStandingContent() {
if (model.standingPlayers == null || model.standingPlayers.isEmpty()) return ""; if (model.standingPlayers == null || model.standingPlayers.isEmpty()) return "";
StringBuilder sb = new StringBuilder(); String banner = model.standingPlayers.get(0).getUserName().equals(username)
int size = model.standingPlayers.size(); ? "WINNER!" : "GAME OVER";
for (int i = 0; i < size / 2; i++) { List<String> lines = new ArrayList<>();
sb.append(AsciiTable.sideBySide( for (int i = 0; i < model.standingPlayers.size(); i++) {
List.of(model.standingPlayers.get(i * 2).toString().split("\n")), var p = model.standingPlayers.get(i);
List.of(model.standingPlayers.get(i * 2 + 1).toString().split("\n")), 2)); lines.add((i + 1) + ". " + p.getUserName()
+ " (" + p.getTotem().toString() + ")"
+ " \uD83C\uDF56:" + p.getFoodValue()
+ " \uD83C\uDFC5:" + p.getPrestigeValue());
} }
sb.append("\n"); int contentWidth = lines.stream().mapToInt(AsciiTable::displayWidth).max().orElse(0);
if (size % 2 != 0) { int pad = Math.max(0, (contentWidth - AsciiTable.displayWidth(banner)) / 2);
sb.append(model.standingPlayers.get(size - 1)).append("\n"); var table = new AsciiTable(BorderStyle.ROUNDED, 1);
} table.addHeader(" ".repeat(pad) + banner);
if (model.standingPlayers.get(0).getUserName().equals(username)) { lines.forEach(table::addRow);
sb.append("GAME ENDED: !!!YOU WON!!!"); return table.build();
} else {
sb.append("GAME ENDED: !!!YOU LOST!!!");
}
return sb.toString();
} }
// ── Core display primitive ──────────────────────────────────────────────── // ── Core display primitive ────────────────────────────────────────────────