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) {
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<String> 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 ────────────────────────────────────────────────