more menus
Some checks failed
Linux arm64 / Build (push) Failing after 14m21s

This commit is contained in:
2025-01-23 15:50:10 +01:00
parent 7ab1173fb3
commit b05351bc20
6 changed files with 117 additions and 8 deletions

View File

@@ -0,0 +1,17 @@
package gui.menu;
import imgui.ImGui;
public class CreateGameMenu extends BaseView {
public CreateGameMenu(StateMachine stateMachine) {
super(stateMachine);
}
@Override
public void render() {
ImGui.text("Créer");
renderReturnButton();
}
}

View File

@@ -0,0 +1,17 @@
package gui.menu;
import imgui.ImGui;
public class JoinGameMenu extends BaseView {
public JoinGameMenu(StateMachine stateMachine) {
super(stateMachine);
}
@Override
public void render() {
ImGui.text("Rejoindre");
renderReturnButton();
}
}

View File

@@ -1,18 +1,56 @@
package gui.menu;
import imgui.ImGui;
import imgui.ImVec2;
import imgui.type.ImInt;
import imgui.type.ImString;
public class MultiMenu extends BaseView {
private final ImInt port = new ImInt(25565);
private final ImString address = new ImString("localhost");
public MultiMenu(StateMachine stateMachine) {
super(stateMachine);
}
private void renderCreate() {
ImVec2 displaySize = ImGui.getIO().getDisplaySize();
ImGui.beginChild("##CreateGame", new ImVec2(displaySize.x / 2.0f, displaySize.y * 8.0f / 9.0f));
ImGui.inputInt("Port", port);
if (ImGui.button("Créer")) {
// TODO: create game
}
ImGui.endChild();
}
private void renderJoin() {
ImVec2 displaySize = ImGui.getIO().getDisplaySize();
ImGui.beginChild("##JoinGame", new ImVec2(displaySize.x / 2.0f, displaySize.y * 8.0f / 9.0f));
ImGui.inputText("Adresse", address);
ImGui.inputInt("Port", port);
if (ImGui.button("Rejoindre")) {
// TODO: join game
}
ImGui.endChild();
}
@Override
public void render() {
// TODO Auto-generated method stub
ImGui.text("Multi");
renderReturnButton();
renderCreate();
ImGui.sameLine();
renderJoin();
ImVec2 displaySize = ImGui.getIO().getDisplaySize();
ImVec2 buttonSize = new ImVec2(500, 70.0f);
float centerX = displaySize.x / 2.0f - buttonSize.x / 2.0f;
ImGui.setCursorPosX(centerX);
if (ImGui.button("Retour", buttonSize)) {
closeMenu();
}
}
}

View File

@@ -1,19 +1,45 @@
package gui.menu;
import imgui.ImGui;
import imgui.type.ImInt;
public class SoloMenu extends BaseView {
private final ImInt sudokuType = new ImInt(0);
private static final String[] sudokuTypes = { "Carré", "Rectangle" };
private static final int SQUARE = 0, RECTANGLE = 1;
private final ImInt sudokuSize = new ImInt(3);
private final ImInt sudokuWidth = new ImInt(3);
private final ImInt sudokuHeight = new ImInt(3);
public SoloMenu(StateMachine stateMachine) {
super(stateMachine);
}
@Override
public void render() {
// TODO Auto-generated method stub
ImGui.text("Solo");
if (ImGui.button("Résoudre un sudoku")) {
this.stateMachine.pushState(new SudokuView(stateMachine, 3));
ImGui.combo("Type de Sudoku", sudokuType, sudokuTypes);
switch (sudokuType.get()) {
case SQUARE:
ImGui.inputInt("Taille", sudokuSize);
if (ImGui.button("Résoudre un sudoku")) {
this.stateMachine.pushState(new SudokuView(stateMachine, sudokuSize.get(), sudokuSize.get()));
}
break;
case RECTANGLE:
ImGui.inputInt("Largeur", sudokuHeight);
ImGui.inputInt("Longueur", sudokuWidth);
if (ImGui.button("Résoudre un sudoku")) {
this.stateMachine.pushState(new SudokuView(stateMachine, sudokuWidth.get(), sudokuHeight.get()));
}
break;
default:
break;
}
renderReturnButton();
}

View File

@@ -4,6 +4,7 @@ import java.util.Stack;
import imgui.ImGui;
import imgui.ImVec2;
import imgui.flag.ImGuiKey;
import imgui.flag.ImGuiWindowFlags;
public class StateMachine {
@@ -22,6 +23,12 @@ public class StateMachine {
menus.pop();
}
private void checkEscape() {
if (ImGui.isKeyPressed(ImGuiKey.Escape) && menus.size() > 1) {
popState();
}
}
public void render() {
var displaySize = ImGui.getIO().getDisplaySize();
ImGui.setNextWindowPos(new ImVec2(0.0f, 0.0f));
@@ -30,6 +37,7 @@ public class StateMachine {
| ImGuiWindowFlags.NoSavedSettings | ImGuiWindowFlags.NoBackground);
menus.getLast().render();
ImGui.end();
checkEscape();
}
}

View File

@@ -23,9 +23,9 @@ public class SudokuView extends BaseView {
private int currentIndex = -1;
private final Map<Block, Color> colorPalette;
public SudokuView(StateMachine stateMachine, int size) {
public SudokuView(StateMachine stateMachine, int width, int height) {
super(stateMachine);
MultiDoku doku = SudokuFactory.createBasicEmptySquareSudoku(size);
MultiDoku doku = SudokuFactory.createBasicEmptyRectangleSudoku(width, height);
this.sudoku = doku.getSubGrid(0);
this.colorPalette = new HashMap<>();
initColors();
@@ -78,6 +78,9 @@ public class SudokuView extends BaseView {
}
}
renderPopup();
if (ImGui.button("Résoudre")) {
// TODO: solve
}
renderReturnButton();
}