From 9b776d4b0f79bd97ac5d563cf23d53c09fd9f5f1 Mon Sep 17 00:00:00 2001 From: Persson-dev Date: Wed, 29 Jan 2025 19:47:46 +0100 Subject: [PATCH 1/3] custom symbols --- app/src/main/java/gui/Options.java | 7 ++++ app/src/main/java/gui/Symbols.java | 57 ++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 app/src/main/java/gui/Options.java create mode 100644 app/src/main/java/gui/Symbols.java diff --git a/app/src/main/java/gui/Options.java b/app/src/main/java/gui/Options.java new file mode 100644 index 0000000..ade2b66 --- /dev/null +++ b/app/src/main/java/gui/Options.java @@ -0,0 +1,7 @@ +package gui; + +public class Options { + + public static Symbols Symboles = Symbols.Numbers; + +} diff --git a/app/src/main/java/gui/Symbols.java b/app/src/main/java/gui/Symbols.java new file mode 100644 index 0000000..d8508b6 --- /dev/null +++ b/app/src/main/java/gui/Symbols.java @@ -0,0 +1,57 @@ +package gui; + +import java.util.ArrayList; +import java.util.List; + +public enum Symbols { + + Numbers("Nombres", getNumbers()), + Letters("Lettres", getLetters()), + Emojis("Emojis", getEmojis()); + + String displayName; + List symbols; + + private Symbols(String displayName, List symbols) { + this.symbols = symbols; + this.displayName = displayName; + } + + public List getSymbols() { + return symbols; + } + + private static List getNumbers() { + List sym = new ArrayList<>(); + for (int i = 1; i <= 100; i++) { + sym.add(Integer.toString(i)); + } + return sym; + } + + private static List getLetters() { + List sym = new ArrayList<>(); + for (int i = 0; i < 100; i++) { + int currentOffset = i; + String letter = ""; + while (currentOffset >= 26) { + letter += Character.toString((char) ('A' + currentOffset % 26)); + currentOffset /= 26; + currentOffset--; + } + letter += Character.toString((char) ('A' + currentOffset % 26)); + sym.add(new StringBuilder(letter).reverse().toString()); + } + return sym; + } + + private static List getEmojis() { + List sym = new ArrayList<>(); + for (int i = 0; i < 100; i++) { + sym.add(new String(Character.toChars(0X1F600 + i))); + } + System.out.println(sym); + return sym; + } + +} From 7789209651371e9c699339661d37a7aa1d97d2cf Mon Sep 17 00:00:00 2001 From: Persson-dev Date: Thu, 30 Jan 2025 15:23:54 +0100 Subject: [PATCH 2/3] feat: change symbols --- app/src/main/java/gui/SudokuRenderer.java | 4 ++-- app/src/main/java/gui/Symbols.java | 23 ++++++++++++++++++--- app/src/main/java/gui/menu/OptionsMenu.java | 9 +++++++- 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/gui/SudokuRenderer.java b/app/src/main/java/gui/SudokuRenderer.java index ca67ce9..abbab2e 100644 --- a/app/src/main/java/gui/SudokuRenderer.java +++ b/app/src/main/java/gui/SudokuRenderer.java @@ -75,7 +75,7 @@ public class SudokuRenderer { ImGui.closeCurrentPopup(); } } else { - if (ImGui.button(Integer.toString(i + 1), cellSize)) { + if (ImGui.button(Options.Symboles.getSymbols().get(i), cellSize)) { this.doku.setCellValue(currentCell, i); if (this.doku.isResolved()) this.onResolve.emit(); @@ -123,7 +123,7 @@ public class SudokuRenderer { ImGui.pushStyleColor(ImGuiCol.Button, new ImVec4(blockColor.r, blockColor.g, blockColor.b, 1.0f)); String cellText = ""; if (symbol != -1) - cellText += Integer.toString(symbol + 1); + cellText += Options.Symboles.getSymbols().get(cell.getSymbolIndex()); if (ImGui.button(cellText + "##" + index, cellSize) && cell.isMutable()) { ImGui.openPopup("editPopup"); currentCell = cell; diff --git a/app/src/main/java/gui/Symbols.java b/app/src/main/java/gui/Symbols.java index d8508b6..253ba5b 100644 --- a/app/src/main/java/gui/Symbols.java +++ b/app/src/main/java/gui/Symbols.java @@ -5,8 +5,8 @@ import java.util.List; public enum Symbols { - Numbers("Nombres", getNumbers()), - Letters("Lettres", getLetters()), + Numbers("Nombres", getNumbers()), + Letters("Lettres", getLetters()), Emojis("Emojis", getEmojis()); String displayName; @@ -17,6 +17,10 @@ public enum Symbols { this.displayName = displayName; } + public String getDisplayName() { + return displayName; + } + public List getSymbols() { return symbols; } @@ -50,8 +54,21 @@ public enum Symbols { for (int i = 0; i < 100; i++) { sym.add(new String(Character.toChars(0X1F600 + i))); } - System.out.println(sym); return sym; } + private static final String[] symbolNames; + + static { + Symbols[] symbols = Symbols.values(); + symbolNames = new String[symbols.length]; + for (int i = 0; i < symbols.length; i++) { + symbolNames[i] = symbols[i].getDisplayName(); + } + } + + public static String[] getSymbolsNames() { + return symbolNames; + } + } diff --git a/app/src/main/java/gui/menu/OptionsMenu.java b/app/src/main/java/gui/menu/OptionsMenu.java index 3be3419..9d856c3 100644 --- a/app/src/main/java/gui/menu/OptionsMenu.java +++ b/app/src/main/java/gui/menu/OptionsMenu.java @@ -1,17 +1,24 @@ package gui.menu; +import gui.Options; +import gui.Symbols; import imgui.ImGui; +import imgui.type.ImInt; public class OptionsMenu extends BaseView { + private ImInt currentValue = new ImInt(); + public OptionsMenu(StateMachine stateMachine) { super(stateMachine); } @Override public void render() { - // TODO Auto-generated method stub ImGui.text("Options"); + if(ImGui.combo("Jeu de symboles", currentValue, Symbols.getSymbolsNames())){ + Options.Symboles = Symbols.values()[currentValue.get()]; + } renderReturnButton(); } From 6caf5d5c54ce2e966d2c4e169e53163711200c42 Mon Sep 17 00:00:00 2001 From: Persson-dev Date: Thu, 30 Jan 2025 16:32:09 +0100 Subject: [PATCH 3/3] feat: add cyrilic --- app/src/main/java/gui/Fonts.java | 16 +++++++++++++--- app/src/main/java/gui/SudokuRenderer.java | 6 ++++++ app/src/main/java/gui/Symbols.java | 11 ++++++++++- 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/gui/Fonts.java b/app/src/main/java/gui/Fonts.java index 8c51e58..46d4907 100644 --- a/app/src/main/java/gui/Fonts.java +++ b/app/src/main/java/gui/Fonts.java @@ -1,6 +1,8 @@ package gui; import imgui.ImFont; +import imgui.ImFontConfig; +import imgui.ImFontGlyphRangesBuilder; import imgui.ImGui; public class Fonts { @@ -10,14 +12,22 @@ public class Fonts { public static ImFont CHERI; public static ImFont COMIC; public static ImFont INFECTED; + public static ImFont EMOJIS; private static final String baseDir = ""; public static void createFonts() { + ImFontGlyphRangesBuilder builder = new ImFontGlyphRangesBuilder(); + builder.addRanges(ImGui.getIO().getFonts().getGlyphRangesDefault()); + builder.addRanges(ImGui.getIO().getFonts().getGlyphRangesCyrillic()); + // builder.addRanges(ImGui.getIO().getFonts().getGlyphRangesChineseFull()); + ImFontConfig cfg = new ImFontConfig(); + cfg.setGlyphRanges(builder.buildRanges()); + COMIC = ImGui.getIO().getFonts().addFontFromFileTTF(baseDir + "comic.ttf", 50.0f); - ARIAL_BOLD = ImGui.getIO().getFonts().addFontFromFileTTF(baseDir + "arial_bold.ttf", 50.0f); - ARIAL = ImGui.getIO().getFonts().addFontFromFileTTF(baseDir + "arial.ttf", 50.0f); - CHERI = ImGui.getIO().getFonts().addFontFromFileTTF(baseDir + "cheri.ttf", 50.0f); + ARIAL_BOLD = ImGui.getIO().getFonts().addFontFromFileTTF(baseDir + "arial_bold.ttf", 50.0f); + ARIAL = ImGui.getIO().getFonts().addFontFromFileTTF(baseDir + "arial.ttf", 50.0f, cfg); + CHERI = ImGui.getIO().getFonts().addFontFromFileTTF(baseDir + "cheri.ttf", 50.0f); INFECTED = ImGui.getIO().getFonts().addFontFromFileTTF(baseDir + "INFECTED.ttf", 50.0f); } diff --git a/app/src/main/java/gui/SudokuRenderer.java b/app/src/main/java/gui/SudokuRenderer.java index abbab2e..8668903 100644 --- a/app/src/main/java/gui/SudokuRenderer.java +++ b/app/src/main/java/gui/SudokuRenderer.java @@ -88,6 +88,9 @@ public class SudokuRenderer { } public void render() { + if (Options.Symboles == Symbols.Russian) { + ImGui.pushFont(Fonts.ARIAL); + } final float sudokuViewWidth = cellSize.x * doku.getWidth(); final float displayWidth = ImGui.getIO().getDisplaySizeX(); float offsetX = displayWidth / 2.0f - sudokuViewWidth / 2.0f; @@ -135,6 +138,9 @@ public class SudokuRenderer { ImGui.popStyleVar(2); renderPopup(); ImGui.endChild(); + if (Options.Symboles == Symbols.Russian) { + ImGui.popFont(); + } } } diff --git a/app/src/main/java/gui/Symbols.java b/app/src/main/java/gui/Symbols.java index 253ba5b..082db8b 100644 --- a/app/src/main/java/gui/Symbols.java +++ b/app/src/main/java/gui/Symbols.java @@ -7,7 +7,8 @@ public enum Symbols { Numbers("Nombres", getNumbers()), Letters("Lettres", getLetters()), - Emojis("Emojis", getEmojis()); + Russian("Cyrilique", getRussian()), + Emojis("Emojis (Console uniquement)", getEmojis()); String displayName; List symbols; @@ -49,6 +50,14 @@ public enum Symbols { return sym; } + private static List getRussian() { + List sym = new ArrayList<>(); + for (int i = 0; i < 100; i++) { + sym.add(new String(Character.toChars(0X0400 + i))); + } + return sym; + } + private static List getEmojis() { List sym = new ArrayList<>(); for (int i = 0; i < 100; i++) {