Merge branch 'main' into javadoc-fixes

This commit is contained in:
rubenpirreram
2026-04-30 20:11:10 +02:00
committed by GitHub
19 changed files with 1541 additions and 509 deletions
@@ -4,9 +4,9 @@ import it.polimi.ingsw.gc14.Model.Game;
import it.polimi.ingsw.gc14.Network.NetworkEvent;
public interface IView {
void render(Game model);
void showMessage(String message);
void showError(String message);
public void update(Game game);
public void render();
public void showMessage(String message);
public void showError(String message);
}
@@ -29,6 +29,7 @@ public class AsciiTable {
//TODO javadoc
public void addHeader(String... cells) { rows.add(0, Arrays.asList(cells)); separators.add(0); }
public void addSeparator() { separators.add(rows.size()-1); }
//TODO javadoc
public void addSeparator() { separators.add(rows.size()-1); }
@@ -1,93 +1,103 @@
//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;
import it.polimi.ingsw.gc14.View.IView;
public class TUI implements IView {
// ── dati di stato ───────────────────────────────────────────
private BorderStyle style = BorderStyle.UNICODE;
private Game model;
private String username;
public TUI(Game model) {
this.model = model;
this.username="";
}
public void setUsername(String username) {
this.username = username;
}
@Override
public void update(Game model) {
this.model = model;
}
// ── punto di ingresso ───────────────────────────────────────
public void render()
{
try{
String os = System.getProperty("os.name").toLowerCase();
ProcessBuilder pb;
if (os.contains("win")) {
pb = new ProcessBuilder("cmd", "/c", "cls");
} else {
pb = new ProcessBuilder("clear");
}
pb.inheritIO().start().waitFor();
}
catch(Exception e){
}
System.out.println(model.toString());
}
public void renderBoard()
{
try{
String os = System.getProperty("os.name").toLowerCase();
ProcessBuilder pb;
if (os.contains("win")) {
pb = new ProcessBuilder("cmd", "/c", "cls");
} else {
pb = new ProcessBuilder("clear");
}
pb.inheritIO().start().waitFor();
}
catch(Exception e){
}
System.out.println(model.BoardStamp());
}
public void renderPlayer()
{
try{
String os = System.getProperty("os.name").toLowerCase();
ProcessBuilder pb;
if (os.contains("win")) {
pb = new ProcessBuilder("cmd", "/c", "cls");
} else {
pb = new ProcessBuilder("clear");
}
pb.inheritIO().start().waitFor();
}
catch(Exception e){
}
System.out.println(model.BoardStamp());
}
public void renderMyHand()
{
try{
String os = System.getProperty("os.name").toLowerCase();
ProcessBuilder pb;
if (os.contains("win")) {
pb = new ProcessBuilder("cmd", "/c", "cls");
} else {
pb = new ProcessBuilder("clear");
}
pb.inheritIO().start().waitFor();
}
catch(Exception e){
}
System.out.println(model.getPlayerByUsername(username));
}
public void showMessage(String message)
{
System.out.println(message);
}
public void showError(String message)
{
System.out.println(message);
}
}