Fix: small improvement in TUI leaderboard
This commit is contained in:
@@ -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 ────────────────────────────────────────────────
|
||||||
|
|||||||
Reference in New Issue
Block a user