Removed useless comments

This commit is contained in:
2026-06-19 22:14:29 +02:00
parent dc9721b1d9
commit 9d554158ab
16 changed files with 29 additions and 72 deletions
@@ -76,7 +76,6 @@ public class GameEventProcessor {
this.saveManager = saveManager; this.saveManager = saveManager;
} }
// ── Public entry point ────────────────────────────────────────────────────
/** /**
* Blocks until one event is available in the queue, then routes it to the * Blocks until one event is available in the queue, then routes it to the
@@ -97,7 +96,6 @@ public class GameEventProcessor {
} }
} }
// ── State guards ──────────────────────────────────────────────────────────
/** /**
* Returns {@code true} when there is an ongoing game that has not yet ended. * Returns {@code true} when there is an ongoing game that has not yet ended.
@@ -116,7 +114,6 @@ public class GameEventProcessor {
return disconnectionTimer != null; return disconnectionTimer != null;
} }
// ── Inactive game path ────────────────────────────────────────────────────
/** /**
* Handles events that arrive when no active game exists (not yet started, * Handles events that arrive when no active game exists (not yet started,
@@ -136,7 +133,6 @@ public class GameEventProcessor {
} }
} }
// ── Suspended game path ───────────────────────────────────────────────────
/** /**
* Routes events while the game is suspended waiting for a reconnection. * Routes events while the game is suspended waiting for a reconnection.
@@ -180,7 +176,6 @@ public class GameEventProcessor {
broadcaster.notifyAll(event); broadcaster.notifyAll(event);
} }
// ── Active game path ──────────────────────────────────────────────────────
/** /**
* Applies the event to the game controller, saves the updated state, * Applies the event to the game controller, saves the updated state,
@@ -23,12 +23,12 @@ public class CavePaintings extends EventCard {
/** /**
* The amount of Prestige removed if the player has fewer Artist cards than {@code nLower}. * The amount of Prestige removed if the player has fewer Artist cards than {@code nLower}.
*/ */
private final int nPrestigeRem; // NPrestigeLower private final int nPrestigeRem;
/** /**
* The Prestige multiplier applied if the player has at least {@code nLower} Artist cards. * The Prestige multiplier applied if the player has at least {@code nLower} Artist cards.
*/ */
private final int nPrestigeMul; // NPrestigeUpper private final int nPrestigeMul;
/** /**
* Creates a CavePaintings event card with the specified era and effect parameters. * Creates a CavePaintings event card with the specified era and effect parameters.
@@ -92,7 +92,7 @@ public class Sustenance extends EventCard {
} }
else{ else{
foodDebt -= player.getFoodValue(); foodDebt -= player.getFoodValue();
player.removeFood(player.getFoodValue()); // player.getFoodValue() == 0 player.removeFood(player.getFoodValue());
player.removePrestige(foodDebt * prestigeDebt); player.removePrestige(foodDebt * prestigeDebt);
} }
} }
@@ -212,7 +212,7 @@ public class DecksCreator {
int era; int era;
boolean armed; boolean armed;
boolean isEvent; boolean isEvent;
List<Object> params; // Object to support mixed boolean and numeric parameters from JSON List<Object> params;
} }
/** /**
@@ -225,6 +225,6 @@ public class DecksCreator {
int era; int era;
int price; int price;
int prestigeValue; int prestigeValue;
List<Object> params; // Object to support mixed boolean and numeric parameters from JSON List<Object> params;
} }
} }
@@ -444,7 +444,6 @@ public class Game implements Serializable {
currentState.gameStageUpdate(GameStages.TOTEM_CHOICE); currentState.gameStageUpdate(GameStages.TOTEM_CHOICE);
} }
//region Controller Methods
/** /**
* Attempts to assign the slot at the specified index to the specified player. * Attempts to assign the slot at the specified index to the specified player.
@@ -16,7 +16,6 @@ import java.util.List;
* remaining upper and lower cards, and the current game stage. * remaining upper and lower cards, and the current game stage.
*/ */
public class CurrentState implements Serializable { public class CurrentState implements Serializable {
// region Getters
/** /**
* The current player associated with the game state. * The current player associated with the game state.
@@ -116,9 +115,7 @@ public class CurrentState implements Serializable {
return gameStage; return gameStage;
} }
// endregion getters
// region Setters
/** /**
* Increments the current era by 1. * Increments the current era by 1.
@@ -156,9 +153,7 @@ public class CurrentState implements Serializable {
public void gameStageUpdate(GameStages stage){ public void gameStageUpdate(GameStages stage){
this.gameStage = stage; this.gameStage = stage;
} }
// endregion setters
// region Constructors
/** /**
* Creates a new CurrentState object with default initial values. * Creates a new CurrentState object with default initial values.
@@ -174,9 +169,7 @@ public class CurrentState implements Serializable {
this.nLower = 0; this.nLower = 0;
this.gameStage = GameStages.WAITING; this.gameStage = GameStages.WAITING;
} }
// endregion constructors
// region Functions
/** /**
* Updates the current player, slot, and available draws. * Updates the current player, slot, and available draws.
@@ -224,5 +217,4 @@ public class CurrentState implements Serializable {
table.addRow(values); table.addRow(values);
return table.build(); return table.build();
} }
// endregion functions
} }
@@ -28,7 +28,6 @@ public class Player implements Serializable {
*/ */
private Totems totem; private Totems totem;
// region Getters
/** /**
* Unique string identifier for players; must not be {@code null} and must not * Unique string identifier for players; must not be {@code null} and must not
* exceed {@link #MAX_USERNAME_LENGTH} otherwise an {@link IllegalArgumentException} will be thrown * exceed {@link #MAX_USERNAME_LENGTH} otherwise an {@link IllegalArgumentException} will be thrown
@@ -130,9 +129,7 @@ public class Player implements Serializable {
return prestigeValue; return prestigeValue;
} }
// endregion getters
// region Setters
/** /**
* Adds {@code value} amount of Food to the Player. * Adds {@code value} amount of Food to the Player.
@@ -187,9 +184,7 @@ public class Player implements Serializable {
this.prestigeValue -= value; this.prestigeValue -= value;
} }
// endregion setters
// region Constructors
/** /**
* Constructor for the class {@code Player}. Each Player is uniquely identified by the {@link #userName}. * Constructor for the class {@code Player}. Each Player is uniquely identified by the {@link #userName}.
@@ -220,9 +215,7 @@ public class Player implements Serializable {
this.prestigeValue = 0; this.prestigeValue = 0;
this.totem = null; this.totem = null;
} }
// endregion constructors
// region Functions
/** /**
* Checks equality between this {@code Player} and another object. * Checks equality between this {@code Player} and another object.
@@ -355,5 +348,4 @@ public class Player implements Serializable {
return table.build(); return table.build();
} }
// endregion functions
} }
@@ -7,7 +7,6 @@ import java.io.Serializable;
* The slot configuration depends on the specified slot identifier. * The slot configuration depends on the specified slot identifier.
*/ */
public class Slot implements Serializable { public class Slot implements Serializable {
// Getters
/** /**
* The identifier of this slot. * The identifier of this slot.
@@ -78,9 +77,7 @@ public class Slot implements Serializable {
public int getFood(){ public int getFood(){
return food; return food;
} }
// End getters
// Constructors
/** /**
* Creates a slot with the specified identifier. * Creates a slot with the specified identifier.
@@ -176,7 +173,6 @@ public class Slot implements Serializable {
return s.toString(); return s.toString();
} }
// Functions
/** /**
* Checks equality between this {@code Slot} and another object. * Checks equality between this {@code Slot} and another object.
@@ -202,5 +198,4 @@ public class Slot implements Serializable {
return Character.hashCode(slotId); return Character.hashCode(slotId);
} }
// End functions
} }
@@ -84,10 +84,10 @@ public class HeartbeatHandler implements Runnable {
startWatchdog(); startWatchdog();
try { try {
while (running) { while (running) {
int b = in.read(); // blocks until a byte arrives int b = in.read();
if (b == -1) { if (b == -1) {
disconnect(); disconnect();
break; // stream closed break;
} }
if (b == PING) { if (b == PING) {
lastReceivedTime = System.currentTimeMillis(); lastReceivedTime = System.currentTimeMillis();
@@ -54,7 +54,6 @@ public class ServerLauncher {
actionQueue, gameController, playerList, broadcaster, saveManager); actionQueue, gameController, playerList, broadcaster, saveManager);
} }
// Entry point
/** /**
* Initializes all server components, wires them together, restores a saved * Initializes all server components, wires them together, restores a saved
@@ -119,7 +118,6 @@ public class ServerLauncher {
new Thread(() -> tcpServer.start()).start(); new Thread(() -> tcpServer.start()).start();
} }
// Game loop
/** /**
* Runs the event-processing loop until the thread is interrupted. * Runs the event-processing loop until the thread is interrupted.
@@ -137,7 +135,6 @@ public class ServerLauncher {
} }
} }
// Crash recovery
/** /**
* Attempts to restore a previously saved game. * Attempts to restore a previously saved game.
@@ -180,7 +177,6 @@ public class ServerLauncher {
System.out.println("Game restored from save (" + game.getNPlayers() + " players)."); System.out.println("Game restored from save (" + game.getNPlayers() + " players).");
} }
// Network interface selection
/** /**
* Lists active non-loopback IPv4 network interfaces and prompts the operator * Lists active non-loopback IPv4 network interfaces and prompts the operator
@@ -150,7 +150,6 @@ public class FireParticleSystem {
return new Particle(x, y, w, h, corner, rnd); return new Particle(x, y, w, h, corner, rnd);
} }
// Particle
/** /**
* A single fire particle with position, velocity, wobble, and JavaFX visual nodes. * A single fire particle with position, velocity, wobble, and JavaFX visual nodes.
@@ -210,17 +209,17 @@ public class FireParticleSystem {
double angle = baseAngle + (rnd.nextDouble() - 0.5) * (Math.PI / 3.5); double angle = baseAngle + (rnd.nextDouble() - 0.5) * (Math.PI / 3.5);
double speed; double speed;
if (type == 0) { // ember if (type == 0) {
speed = 0.5 + rnd.nextDouble() * 0.7; speed = 0.5 + rnd.nextDouble() * 0.7;
size = rnd.nextDouble() * 3 + 2; size = rnd.nextDouble() * 3 + 2;
glow = new Circle(size * 2.2); glow = new Circle(size * 2.2);
core = new Circle(size / 2); core = new Circle(size / 2);
} else if (type == 1) { // spark } else if (type == 1) {
speed = 1.5 + rnd.nextDouble() * 2.0; speed = 1.5 + rnd.nextDouble() * 2.0;
size = rnd.nextDouble() * 1.5 + 0.5; size = rnd.nextDouble() * 1.5 + 0.5;
glow = null; glow = null;
core = new Circle(size / 2); core = new Circle(size / 2);
} else { // dust } else {
speed = 0.2 + rnd.nextDouble() * 0.35; speed = 0.2 + rnd.nextDouble() * 0.35;
size = rnd.nextDouble() * 8 + 5; size = rnd.nextDouble() * 8 + 5;
glow = null; glow = null;
@@ -38,7 +38,6 @@ public class LeaderboardFXMLController {
@FXML private StackPane rootPane; @FXML private StackPane rootPane;
@FXML private VBox mainVBox; @FXML private VBox mainVBox;
@FXML private VBox rankingList; @FXML private VBox rankingList;
// title label removed; outcome text is added dynamically in render()
/** Client controller for fetching game state and sending actions. */ /** Client controller for fetching game state and sending actions. */
private ClientController controller; private ClientController controller;
/** Auto-hiding popup that shows detailed player card information. */ /** Auto-hiding popup that shows detailed player card information. */
@@ -164,9 +163,9 @@ public class LeaderboardFXMLController {
Label posLabel = new Label(position + "°"); Label posLabel = new Label(position + "°");
posLabel.setMinWidth(55); posLabel.setMinWidth(55);
String medalColor = switch (position) { String medalColor = switch (position) {
case 1 -> "#FFD700"; // oro case 1 -> "#FFD700";
case 2 -> "#C0C0C0"; // argento case 2 -> "#C0C0C0";
case 3 -> "#CD7F32"; // bronzo case 3 -> "#CD7F32";
default -> "#EEEEEE"; default -> "#EEEEEE";
}; };
posLabel.setStyle("-fx-font-size: 28px; -fx-font-weight: bold; -fx-text-fill: " + medalColor + ";"); posLabel.setStyle("-fx-font-size: 28px; -fx-font-weight: bold; -fx-text-fill: " + medalColor + ";");
@@ -325,7 +324,7 @@ public class LeaderboardFXMLController {
scrollPane.setStyle("-fx-background: transparent; -fx-background-color: transparent;"); scrollPane.setStyle("-fx-background: transparent; -fx-background-color: transparent;");
Window window = rootPane.getScene().getWindow(); Window window = rootPane.getScene().getWindow();
scrollPane.setMaxHeight(window.getHeight() * 0.8); // cap scroll area to 80% of window height scrollPane.setMaxHeight(window.getHeight() * 0.8);
popupContent.getChildren().add(scrollPane); popupContent.getChildren().add(scrollPane);
popup.show(window, 0, 0); popup.show(window, 0, 0);
popup.getScene().setFill(Color.TRANSPARENT); popup.getScene().setFill(Color.TRANSPARENT);
@@ -96,7 +96,6 @@ public class LoginFXMLController {
tt.setToX(isRMI ? 0 : 110); tt.setToX(isRMI ? 0 : 110);
tt.play(); tt.play();
// pseudoClassStateChanged preserves layout properties unlike direct style mutation
labelRMI.pseudoClassStateChanged(activeProtocolPseudo, isRMI); labelRMI.pseudoClassStateChanged(activeProtocolPseudo, isRMI);
labelTCP.pseudoClassStateChanged(activeProtocolPseudo, !isRMI); labelTCP.pseudoClassStateChanged(activeProtocolPseudo, !isRMI);
} }
@@ -428,7 +428,6 @@ public class MainFXMLController {
infoText.setText("Round: "+ controller.getMiniModel().currentState.getRound() + "" + controller.getMiniModel().currentState.getGameStage().toString()); infoText.setText("Round: "+ controller.getMiniModel().currentState.getRound() + "" + controller.getMiniModel().currentState.getGameStage().toString());
if (controller.getMiniModel().currentState.getCurrentPlayer() == null) return; if (controller.getMiniModel().currentState.getCurrentPlayer() == null) return;
String current = controller.getMiniModel().currentState.getCurrentPlayer().getUserName(); String current = controller.getMiniModel().currentState.getCurrentPlayer().getUserName();
// ordine: building, artists, gatherers, inventors, builders, shamans, hunters
String[] fields = {"building", "artists", "gatherers", "inventors", "builders", "shamans", "hunters"}; String[] fields = {"building", "artists", "gatherers", "inventors", "builders", "shamans", "hunters"};
for (Player p : controller.getMiniModel().players.values()) { for (Player p : controller.getMiniModel().players.values()) {
@@ -677,7 +676,6 @@ public class MainFXMLController {
totem.setLayoutX(nv.doubleValue() * 0.364); totem.setLayoutX(nv.doubleValue() * 0.364);
}); });
// initialize immediately if already laid out
if (card.getHeight() > 0) totem.setLayoutY(card.getHeight() *(yRatio-0.196)); if (card.getHeight() > 0) totem.setLayoutY(card.getHeight() *(yRatio-0.196));
if (card.getWidth() > 0) totem.setLayoutX(card.getWidth() * 0.364); if (card.getWidth() > 0) totem.setLayoutX(card.getWidth() * 0.364);
@@ -149,7 +149,6 @@ public class AsciiTable {
return sb.toString(); return sb.toString();
} }
// Wide-character width
/** /**
* Returns the number of terminal columns required to display {@code s}. * Returns the number of terminal columns required to display {@code s}.
@@ -176,33 +175,32 @@ public class AsciiTable {
*/ */
private static boolean isWide(int cp) { private static boolean isWide(int cp) {
if (cp < 0x1100) return false; if (cp < 0x1100) return false;
if (cp <= 0x115F) return true; // Hangul Jamo if (cp <= 0x115F) return true;
if (cp < 0x2E80) { if (cp < 0x2E80) {
// Specific wide symbols below 0x2E80 return cp == 0x2B50
return cp == 0x2B50 // STAR || cp == 0x2B55;
|| cp == 0x2B55; // HEAVY LARGE CIRCLE
} }
if (cp <= 0x303E) return true; // CJK Radicals, Kangxi, CJK Symbols if (cp <= 0x303E) return true;
if (cp < 0x3041) return false; if (cp < 0x3041) return false;
if (cp <= 0xA4CF) return true; // Hiragana, Katakana, Bopomofo, CJK Unified if (cp <= 0xA4CF) return true;
if (cp < 0xA960) return false; if (cp < 0xA960) return false;
if (cp <= 0xA97F) return true; // Hangul Jamo Extended-A if (cp <= 0xA97F) return true;
if (cp < 0xAC00) return false; if (cp < 0xAC00) return false;
if (cp <= 0xD7AF) return true; // Hangul Syllables if (cp <= 0xD7AF) return true;
if (cp < 0xF900) return false; if (cp < 0xF900) return false;
if (cp <= 0xFAFF) return true; // CJK Compatibility Ideographs if (cp <= 0xFAFF) return true;
if (cp < 0xFE10) return false; if (cp < 0xFE10) return false;
if (cp <= 0xFE1F) return true; // Vertical Forms if (cp <= 0xFE1F) return true;
if (cp < 0xFE30) return false; if (cp < 0xFE30) return false;
if (cp <= 0xFE6F) return true; // CJK Compatibility Forms if (cp <= 0xFE6F) return true;
if (cp < 0xFF00) return false; if (cp < 0xFF00) return false;
if (cp <= 0xFF60) return true; // Fullwidth Latin, punctuation if (cp <= 0xFF60) return true;
if (cp < 0xFFE0) return false; if (cp < 0xFFE0) return false;
if (cp <= 0xFFE6) return true; // Fullwidth Signs if (cp <= 0xFFE6) return true;
if (cp < 0x1F004) return false; if (cp < 0x1F004) return false;
if (cp <= 0x1FAFF) return true; // Emoji (mahjong, playing cards, flags, if (cp <= 0x1FAFF) return true;
// misc symbols, transport, 🍖 U+1F357, ...)
if (cp < 0x20000) return false; if (cp < 0x20000) return false;
return cp <= 0x3FFFD; // CJK Extension B through G return cp <= 0x3FFFD;
} }
} }
@@ -46,7 +46,6 @@ public class TUI implements IView {
this.username = ""; this.username = "";
} }
// Setters
/** /**
* Sets the username of the local player. * Sets the username of the local player.
@@ -79,7 +78,6 @@ public class TUI implements IView {
this.terminal = lineReader.getTerminal(); this.terminal = lineReader.getTerminal();
} }
// Public render entry points
/** /**
* Default render: dispatches to the right view based on game stage. * Default render: dispatches to the right view based on game stage.
@@ -130,7 +128,6 @@ public class TUI implements IView {
printLine("\033[31m" + text + "\033[0m"); printLine("\033[31m" + text + "\033[0m");
} }
// Content builders (return strings, do not print)
/** /**
* Builds the main view: board + menu side by side, followed by all players' * Builds the main view: board + menu side by side, followed by all players'
@@ -211,7 +208,6 @@ public class TUI implements IView {
return table.build(); return table.build();
} }
// Core display primitive
/** /**
* Clears the terminal and displays {@code content}, horizontally centered. * Clears the terminal and displays {@code content}, horizontally centered.
@@ -278,7 +274,6 @@ public class TUI implements IView {
return AsciiTable.displayWidth(line); return AsciiTable.displayWidth(line);
} }
// Board / players stamp helpers
/** /**
* Returns the board state as a multi-line string: turn order, upper cards, * Returns the board state as a multi-line string: turn order, upper cards,