From 6d96455ac4120fee74c8ae17e221e801b38e9a70 Mon Sep 17 00:00:00 2001 From: Persson-dev Date: Sat, 1 Feb 2025 00:19:00 +0100 Subject: [PATCH] feat: display wrong timer --- .../java/gui/menu/MultiPlayerDokuView.java | 6 +++++ .../java/gui/widget/LeaderboardRenderer.java | 1 - .../main/java/gui/widget/TimerRenderer.java | 27 +++++++++++++++++++ 3 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/gui/widget/TimerRenderer.java diff --git a/app/src/main/java/gui/menu/MultiPlayerDokuView.java b/app/src/main/java/gui/menu/MultiPlayerDokuView.java index 2c68cfe..b18a12a 100644 --- a/app/src/main/java/gui/menu/MultiPlayerDokuView.java +++ b/app/src/main/java/gui/menu/MultiPlayerDokuView.java @@ -2,6 +2,7 @@ package gui.menu; import gui.widget.LeaderboardRenderer; import gui.widget.SudokuRenderer; +import gui.widget.TimerRenderer; import imgui.ImGui; import network.client.Client; import network.server.Server; @@ -13,6 +14,8 @@ public class MultiPlayerDokuView extends BaseView{ private final Server server; private final SudokuRenderer sudokuRenderer; private final LeaderboardRenderer leaderboardRenderer; + private final TimerRenderer timerRenderer; + private static final float GAME_DURATION = 10 * 60; public MultiPlayerDokuView(StateMachine stateMachine, Client client, Server server) { super(stateMachine); @@ -22,6 +25,8 @@ public class MultiPlayerDokuView extends BaseView{ this.leaderboardRenderer = new LeaderboardRenderer(client.getGame(), client.getPlayer()); this.sudokuRenderer.onCellChange.connect(this::onCellChange); this.client.onDisconnect.connect(this::onDisconnect); + // TODO: sync timer + this.timerRenderer = new TimerRenderer(GAME_DURATION); } private void onCellChange(Cell cell) { @@ -36,6 +41,7 @@ public class MultiPlayerDokuView extends BaseView{ @Override public void render() { + this.timerRenderer.render(); this.leaderboardRenderer.render(); this.sudokuRenderer.render(); if (ImGui.button("Quitter")) { diff --git a/app/src/main/java/gui/widget/LeaderboardRenderer.java b/app/src/main/java/gui/widget/LeaderboardRenderer.java index 461ece4..5f47c36 100644 --- a/app/src/main/java/gui/widget/LeaderboardRenderer.java +++ b/app/src/main/java/gui/widget/LeaderboardRenderer.java @@ -54,7 +54,6 @@ public class LeaderboardRenderer { } public void render() { - ImGui.text("Placeholder for timer"); var displaySize = ImGui.getIO().getDisplaySize(); ImGui.setCursorPosX(displaySize.x / 2.0f - cellSize.x / 2.0f); ImGui.beginChild("Leaderboard", new ImVec2(cellSize.x + 15.0f, cellHeight * maxPlayersShowed)); diff --git a/app/src/main/java/gui/widget/TimerRenderer.java b/app/src/main/java/gui/widget/TimerRenderer.java new file mode 100644 index 0000000..2db314c --- /dev/null +++ b/app/src/main/java/gui/widget/TimerRenderer.java @@ -0,0 +1,27 @@ +package gui.widget; + +import imgui.ImGui; + +public class TimerRenderer { + + private float time; + private final float duration; + + public TimerRenderer(float duration) { + this.time = 0; + this.duration = duration; + } + + public void render() { + this.time += ImGui.getIO().getDeltaTime(); + float remainingTime = this.duration - this.time; + int seconds = (int) remainingTime; + int minutes = seconds / 60; + seconds %= 60; + String text = minutes + ":" + seconds; + var textSize = ImGui.calcTextSize(text); + ImGui.setCursorPosX(ImGui.getIO().getDisplaySizeX() / 2.0f - textSize.x / 2.0f); + ImGui.text(text); + } + +}