Merge pull request #51 from rubenpirreram/toString-fixes

To string fixes
This commit is contained in:
rubenpirreram
2026-04-29 16:40:35 +02:00
committed by GitHub
9 changed files with 132 additions and 101 deletions
@@ -46,6 +46,6 @@ public class Building1 extends BuildingCard {
@Override
public String toString() {
return super.toString() + " Icon: " + this.icon.toString();
return super.toString() + " Icon: " + this.icon.toString().charAt(0);
}
}
@@ -70,6 +70,6 @@ public class Building11 extends BuildingCard {
@Override
public String toString() {
return super.toString() + " Icon: " + this.icon.toString();
return super.toString() + " Icon: " + this.icon.toString().charAt(0) + " MP: " + this.PrestigeMul;
}
}
@@ -182,6 +182,6 @@ public class BuildingCard extends PlayableCard implements Cloneable , BuildingEf
*/
@Override
public String toString() {
return "Era:"+String.valueOf(getEra())+" P:"+String.valueOf(getPrice())+" PR:"+String.valueOf(getPrestigeValue());
return ":" + " ID:" + String.valueOf(getEffectId())+ " $:"+String.valueOf(getPrice())+" PV:"+String.valueOf(getPrestigeValue());
}
}
@@ -87,7 +87,7 @@ public class Builder extends Character
*/
@Override
public String toString() {
return super.toString() + " RV: " + String.valueOf(reductionValue) + " PV: " + String.valueOf(prestigeValue);
return super.toString() + " RV:" + String.valueOf(reductionValue) + " PV:" + String.valueOf(prestigeValue);
}
/**
@@ -49,7 +49,7 @@ public class Hunter extends Character {
public String toString() {
String toPrint = super.toString();
if(this.icon){
toPrint += " 🏹";
toPrint += " I";
}
return toPrint;
}
@@ -49,7 +49,7 @@ public class Shaman extends Character {
*/
@Override
public String toString() {
return super.toString() + " ★: " + String.valueOf(icon);
return super.toString() + " *:" + String.valueOf(icon);
}
/**
@@ -43,6 +43,6 @@ public abstract class PlayableCard implements Serializable {
*/
@Override
public String toString() {
return ":"+String.valueOf(Era);
return ":";
}
}
@@ -1,93 +1,93 @@
package it.polimi.ingsw.gc14.View.TUI;
import it.polimi.ingsw.gc14.Model.Game;
public class TUI {
// ── dati di stato ───────────────────────────────────────────
private BorderStyle style = BorderStyle.UNICODE;
private Game model;
// ── punto di ingresso ───────────────────────────────────────
public String render() {
var sb = new StringBuilder();
sb.append(renderHeader());
sb.append(renderTurnOrder());
sb.append(renderOfferTrack());
sb.append(renderCardRows());
sb.append(renderTableaux());
sb.append(renderFooter());
return sb.toString();
}
// ── sezioni ─────────────────────────────────────────────────
private String renderTurnOrder() {
var table = new AsciiTable(style, 4, 10); // 4 colonne, largh 10
table.addRow(model.getPlayers().stream()
.map(p -> + ". " + p.getUserName())
.toList());
table.addRow(state.getPlayers().stream()
.map(p -> p.getTotemPosition() != null
? "totem: " + p.getTotemPosition()
: "(da piaz)")
.toList());
return " TURN ORDER\n" + table.build() + "\n";
}
private String renderOfferTrack() {
var table = new AsciiTable(style, 5, 14);
table.addRow(state.getOfferTiles().stream()
.map(t -> t.getId() + ": " + t.getLabel()).toList());
table.addRow(state.getOfferTiles().stream()
.map(OfferTile::getRowsLabel).toList());
table.addRow(state.getOfferTiles().stream()
.map(t -> state.getTotemOnTile(t.getId())).toList());
return " OFFER TRACK\n" + table.build() + "\n";
}
private String renderCardRows() {
int cols = state.getTopRow().size();
var table = new AsciiTable(style, cols, 13);
table.addRow(state.getTopRow().stream()
.map(c -> "[" + c.getTypeLabel() + "]").toList());
table.addRow(state.getTopRow().stream()
.map(Card::getName).toList());
table.addSeparator();
table.addRow(state.getBotRow().stream()
.map(c -> "[" + c.getTypeLabel() + "]").toList());
table.addRow(state.getBotRow().stream()
.map(Card::getName).toList());
return " CARTE IN GIOCO\n" + prefix("TOP ", "BOT ", table.build()) + "\n";
}
private String renderTableaux() {
var sb = new StringBuilder(" TABLEAU GIOCATORI\n\n");
for (Player p : state.getPlayers()) {
String marker = p.isActive() ? ">>>" : " ";
sb.append(String.format(" %s %s%s Food:%d PP:%d%n",
marker, p.getName(),
p.isActive() ? " [TUO TURNO]" : "",
p.getFood(), p.getPP()));
sb.append(renderPlayerTableau(p));
sb.append("\n");
}
return sb.toString();
}
private String renderPlayerTableau(Player p) {
var table = new AsciiTable(style, 3, 14);
table.addHeader("PERSONAGGI", "EDIFICI", "RISORSE");
int rows = Math.max(p.getChars().size(),
Math.max(p.getBuildings().size(), 3));
for (int i = 0; i < rows; i++) {
String ch = i < p.getChars().size() ? p.getChars().get(i) : "";
String bd = i < p.getBuildings().size() ? p.getBuildings().get(i) : "";
String rs = switch (i) {
case 0 -> "Food: " + "O".repeat(p.getFood());
case 1 -> "PP: " + p.getPP();
case 2 -> "Chars:" + p.getChars().size() + " Edif:" + p.getBuildings().size();
default -> "";
};
table.addRow(ch, bd, rs);
}
return " " + table.build().replace("\n", "\n ");
}
}
//package it.polimi.ingsw.gc14.View.TUI;
//import it.polimi.ingsw.gc14.Model.Game;
//
//public class TUI {
//
// // ── dati di stato ───────────────────────────────────────────
// private BorderStyle style = BorderStyle.UNICODE;
// private Game model;
// // ── punto di ingresso ───────────────────────────────────────
// public String render() {
// var sb = new StringBuilder();
// sb.append(renderHeader());
// sb.append(renderTurnOrder());
// sb.append(renderOfferTrack());
// sb.append(renderCardRows());
// sb.append(renderTableaux());
// sb.append(renderFooter());
// return sb.toString();
// }
//
// // ── sezioni ─────────────────────────────────────────────────
// private String renderTurnOrder() {
// var table = new AsciiTable(style, 4, 10); // 4 colonne, largh 10
// table.addRow(model.getPlayers().stream()
// .map(p -> + ". " + p.getUserName())
// .toList());
// table.addRow(state.getPlayers().stream()
// .map(p -> p.getTotemPosition() != null
// ? "totem: " + p.getTotemPosition()
// : "(da piaz)")
// .toList());
// return " TURN ORDER\n" + table.build() + "\n";
// }
//
// private String renderOfferTrack() {
// var table = new AsciiTable(style, 5, 14);
// table.addRow(state.getOfferTiles().stream()
// .map(t -> t.getId() + ": " + t.getLabel()).toList());
// table.addRow(state.getOfferTiles().stream()
// .map(OfferTile::getRowsLabel).toList());
// table.addRow(state.getOfferTiles().stream()
// .map(t -> state.getTotemOnTile(t.getId())).toList());
// return " OFFER TRACK\n" + table.build() + "\n";
// }
//
// private String renderCardRows() {
// int cols = state.getTopRow().size();
// var table = new AsciiTable(style, cols, 13);
// table.addRow(state.getTopRow().stream()
// .map(c -> "[" + c.getTypeLabel() + "]").toList());
// table.addRow(state.getTopRow().stream()
// .map(Card::getName).toList());
// table.addSeparator();
// table.addRow(state.getBotRow().stream()
// .map(c -> "[" + c.getTypeLabel() + "]").toList());
// table.addRow(state.getBotRow().stream()
// .map(Card::getName).toList());
// return " CARTE IN GIOCO\n" + prefix("TOP ", "BOT ", table.build()) + "\n";
// }
//
// private String renderTableaux() {
// var sb = new StringBuilder(" TABLEAU GIOCATORI\n\n");
// for (Player p : state.getPlayers()) {
// String marker = p.isActive() ? ">>>" : " ";
// sb.append(String.format(" %s %s%s Food:%d PP:%d%n",
// marker, p.getName(),
// p.isActive() ? " [TUO TURNO]" : "",
// p.getFood(), p.getPP()));
// sb.append(renderPlayerTableau(p));
// sb.append("\n");
// }
// return sb.toString();
// }
//
// private String renderPlayerTableau(Player p) {
// var table = new AsciiTable(style, 3, 14);
// table.addHeader("PERSONAGGI", "EDIFICI", "RISORSE");
// int rows = Math.max(p.getChars().size(),
// Math.max(p.getBuildings().size(), 3));
// for (int i = 0; i < rows; i++) {
// String ch = i < p.getChars().size() ? p.getChars().get(i) : "";
// String bd = i < p.getBuildings().size() ? p.getBuildings().get(i) : "";
// String rs = switch (i) {
// case 0 -> "Food: " + "O".repeat(p.getFood());
// case 1 -> "PP: " + p.getPP();
// case 2 -> "Chars:" + p.getChars().size() + " Edif:" + p.getBuildings().size();
// default -> "";
// };
// table.addRow(ch, bd, rs);
// }
// return " " + table.build().replace("\n", "\n ");
// }
//}