From 68021b796bfabf54cf9d176e0abebbad99328909 Mon Sep 17 00:00:00 2001 From: Persson-dev Date: Sun, 2 Feb 2025 10:35:00 +0100 Subject: [PATCH] Fixes #28 --- app/src/main/java/gui/Main.java | 2 +- app/src/main/java/gui/constants/Images.java | 4 +-- app/src/main/java/gui/constants/Options.java | 1 + app/src/main/java/gui/menu/OptionsMenu.java | 34 ++++++++++++++++++-- 4 files changed, 35 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/gui/Main.java b/app/src/main/java/gui/Main.java index 5f5e25e..437bde7 100644 --- a/app/src/main/java/gui/Main.java +++ b/app/src/main/java/gui/Main.java @@ -31,7 +31,7 @@ public class Main extends Application { @Override protected void preRun() { super.preRun(); - Images.loadImages(); + Images.reloadImages(); } @Override diff --git a/app/src/main/java/gui/constants/Images.java b/app/src/main/java/gui/constants/Images.java index 7694756..7421c32 100644 --- a/app/src/main/java/gui/constants/Images.java +++ b/app/src/main/java/gui/constants/Images.java @@ -32,8 +32,8 @@ public class Images { return textureID; } - public static void loadImages() { - BACKGROUND = loadTexture("background.png"); + public static void reloadImages() { + BACKGROUND = loadTexture(Options.BackgroundPath); } } diff --git a/app/src/main/java/gui/constants/Options.java b/app/src/main/java/gui/constants/Options.java index 42294f1..9b24d7b 100644 --- a/app/src/main/java/gui/constants/Options.java +++ b/app/src/main/java/gui/constants/Options.java @@ -4,5 +4,6 @@ public class Options { public static Symbols Symboles = Symbols.Numbers; public static float BackgroundSpeed = 1.0f; + public static String BackgroundPath = "background.png"; } diff --git a/app/src/main/java/gui/menu/OptionsMenu.java b/app/src/main/java/gui/menu/OptionsMenu.java index f58f2cc..49f4f56 100644 --- a/app/src/main/java/gui/menu/OptionsMenu.java +++ b/app/src/main/java/gui/menu/OptionsMenu.java @@ -1,28 +1,56 @@ package gui.menu; +import gui.constants.Images; import gui.constants.Options; import gui.constants.Symbols; import imgui.ImGui; +import imgui.extension.imguifiledialog.ImGuiFileDialog; +import imgui.extension.imguifiledialog.flag.ImGuiFileDialogFlags; import imgui.type.ImInt; public class OptionsMenu extends BaseView { private ImInt currentValue = new ImInt(); - private float backgroundSpeed[] = new float[]{Options.BackgroundSpeed}; + private float backgroundSpeed[] = new float[] { Options.BackgroundSpeed }; public OptionsMenu(StateMachine stateMachine) { super(stateMachine); } + private void renderImageSelectDialog() { + if (ImGuiFileDialog.display("browse-img", ImGuiFileDialogFlags.None)) { + if (ImGuiFileDialog.isOk()) { + var selection = ImGuiFileDialog.getSelection(); + for (var entry : selection.entrySet()) { + try { + String filePath = entry.getValue(); + Options.BackgroundPath = filePath; + Images.reloadImages(); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + ImGuiFileDialog.close(); + } + } + + private void renderImageSelectButton() { + if (ImGui.button("Changer de fond d'écran")) + ImGuiFileDialog.openDialog("browse-img", "Choisissez un fichier", ".png,.jpg,.jpeg", "."); + renderImageSelectDialog(); + } + @Override public void render() { ImGui.text("Options"); - if(ImGui.combo("Jeu de symboles", currentValue, Symbols.getSymbolsNames())){ + if (ImGui.combo("Jeu de symboles", currentValue, Symbols.getSymbolsNames())) { Options.Symboles = Symbols.values()[currentValue.get()]; } - if(ImGui.sliderFloat("Vitesse d'animation de l'arrière plan", backgroundSpeed, 0.0f, 10.0f)){ + if (ImGui.sliderFloat("Vitesse d'animation de l'arrière plan", backgroundSpeed, 0.0f, 10.0f)) { Options.BackgroundSpeed = backgroundSpeed[0]; } + renderImageSelectButton(); renderReturnButton(); }