feat(game): publish HUD (location, gold, turn) each loop iteration

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-31 20:19:40 +02:00
parent 9274eef4c0
commit 5f9d52ca41

View File

@@ -5,6 +5,7 @@ import thb.jeanluc.adventure.command.Command;
import thb.jeanluc.adventure.command.CommandParser;
import thb.jeanluc.adventure.command.CommandRegistry;
import thb.jeanluc.adventure.command.ParsedCommand;
import thb.jeanluc.adventure.io.text.Hud;
import java.util.Optional;
@@ -28,10 +29,14 @@ public class Game {
/** Loop flag. Flipped to false by {@link #stop()}. */
private boolean running = true;
/** Number of commands processed this session; shown in the HUD. */
private int turn = 0;
/**
* Runs the loop until {@link #stop()} is called or input is exhausted.
*/
public void run() {
publishHud();
while (running) {
String input = ctx.getIo().readLine();
if (input == null) {
@@ -46,8 +51,18 @@ public class Game {
ctx.getIo().write("I don't understand '" + parsed.verb() + "'. Type 'help'.");
} else {
cmd.get().execute(ctx, parsed.args());
turn++;
}
publishHud();
}
}
private void publishHud() {
ctx.getIo().setHud(new Hud(
ctx.getPlayer().getCurrentRoom().getName(),
ctx.getPlayer().getGold(),
turn,
false));
}
/**