From 89653f8517e23caa093e70aff2e767868a5a7bb6 Mon Sep 17 00:00:00 2001 From: Persson-dev Date: Wed, 29 Jan 2025 12:10:30 +0100 Subject: [PATCH] gui: display victory --- app/src/main/java/gui/RenderableMultidoku.java | 4 ++++ app/src/main/java/gui/SudokuRenderer.java | 12 +++++------- app/src/main/java/gui/menu/SudokuView.java | 13 ++++++++++++- 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/gui/RenderableMultidoku.java b/app/src/main/java/gui/RenderableMultidoku.java index 33372f0..0271a78 100644 --- a/app/src/main/java/gui/RenderableMultidoku.java +++ b/app/src/main/java/gui/RenderableMultidoku.java @@ -27,6 +27,10 @@ public class RenderableMultidoku { this.doku = doku; } + public boolean isResolved() { + return this.doku.isValid(); + } + public int getWidth() { return width; } diff --git a/app/src/main/java/gui/SudokuRenderer.java b/app/src/main/java/gui/SudokuRenderer.java index da2916b..6501b99 100644 --- a/app/src/main/java/gui/SudokuRenderer.java +++ b/app/src/main/java/gui/SudokuRenderer.java @@ -4,6 +4,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import common.Signal; import gui.ColorGenerator.Color; import imgui.ImGui; import imgui.ImVec2; @@ -24,6 +25,8 @@ public class SudokuRenderer { private static final ImVec4 TRANSPARENT = new ImVec4(); private static final ImVec2 cellSize = new ImVec2(50, 50); + public final Signal onResolve = new Signal(); + public SudokuRenderer(MultiDoku doku) { this.doku = RenderableMultidoku.fromMultidoku(doku); this.colorPalette = initColors(); @@ -55,6 +58,8 @@ public class SudokuRenderer { } else { if (ImGui.button(Integer.toString(i + 1), cellSize)) { this.doku.setCellValue(currentCell, i); + if (this.doku.isResolved()) + this.onResolve.emit(); ImGui.closeCurrentPopup(); } } @@ -86,11 +91,8 @@ public class SudokuRenderer { int symbol = cell.getSymbolIndex(); Color blockColor = colorPalette.get(cell.getBlock()); if (!cell.isMutable()) { - // ImGui.pushFont(Fonts.ARIAL_BOLD); blockColor = new Color(blockColor.r - 0.20f, blockColor.g - 0.20f, blockColor.b - 0.20f); - // ImGui.pushStyleColor(ImGuiCol.Text, new ImVec4(0.1f, 0.1f, 0.1f, 1.0f)); } else { - // ImGui.pushFont(Fonts.CHERI); } ImGui.pushStyleColor(ImGuiCol.Button, new ImVec4(blockColor.r, blockColor.g, blockColor.b, 1.0f)); String cellText = ""; @@ -100,10 +102,6 @@ public class SudokuRenderer { ImGui.openPopup("editPopup"); currentCell = cell; } - if (!cell.isMutable()) { - // ImGui.popStyleColor(); - } - // ImGui.popFont(); } ImGui.popStyleColor(2); } diff --git a/app/src/main/java/gui/menu/SudokuView.java b/app/src/main/java/gui/menu/SudokuView.java index f0b18d1..39f1421 100644 --- a/app/src/main/java/gui/menu/SudokuView.java +++ b/app/src/main/java/gui/menu/SudokuView.java @@ -15,10 +15,17 @@ public class SudokuView extends BaseView { private Thread resolveThread; private final MultiDoku doku; + private boolean resolved = false; + public SudokuView(StateMachine stateMachine, MultiDoku doku) { super(stateMachine); this.doku = doku; this.sudokuRenderer = new SudokuRenderer(doku); + this.sudokuRenderer.onResolve.connect(this::onResolve); + } + + private void onResolve() { + this.resolved = true; } private void stopResolve() { @@ -63,7 +70,7 @@ public class SudokuView extends BaseView { boolean beginSolve = false; - if (centeredButton("Résoudre")) { + if (!resolved && centeredButton("Résoudre")) { beginSolve = true; } if (resolveThread != null) @@ -81,6 +88,10 @@ public class SudokuView extends BaseView { stopResolve(); }); } + + if (resolved) { + ImGui.text("Bravo !"); + } } @Override