add menu logic
Some checks failed
Linux arm64 / Build (push) Failing after 5m1s

This commit is contained in:
2025-01-23 12:50:00 +01:00
parent 48fc88d8ab
commit 749f5c831d
8 changed files with 145 additions and 15 deletions

View File

@@ -0,0 +1,25 @@
package gui.menu;
import imgui.ImGui;
public abstract class BaseMenu {
protected final StateMachine stateMachine;
public BaseMenu(StateMachine stateMachine) {
this.stateMachine = stateMachine;
}
public abstract void render();
public void closeMenu() {
this.stateMachine.popState();
}
protected void renderReturnButton() {
if (ImGui.button("Retour")) {
closeMenu();
}
}
}

View File

@@ -0,0 +1,24 @@
package gui.menu;
import imgui.ImGui;
public class MainMenu extends BaseMenu {
public MainMenu(StateMachine stateMachine) {
super(stateMachine);
}
@Override
public void render() {
if (ImGui.button("Mode histoire")) {
this.stateMachine.pushState(new SoloMenu(this.stateMachine));
}
if (ImGui.button("Multijoueur")) {
this.stateMachine.pushState(new MultiMenu(this.stateMachine));
}
if (ImGui.button("Options")) {
this.stateMachine.pushState(new OptionsMenu(this.stateMachine));
}
}
}

View File

@@ -0,0 +1,18 @@
package gui.menu;
import imgui.ImGui;
public class MultiMenu extends BaseMenu {
public MultiMenu(StateMachine stateMachine) {
super(stateMachine);
}
@Override
public void render() {
// TODO Auto-generated method stub
ImGui.text("Multi");
renderReturnButton();
}
}

View File

@@ -0,0 +1,18 @@
package gui.menu;
import imgui.ImGui;
public class OptionsMenu extends BaseMenu {
public OptionsMenu(StateMachine stateMachine) {
super(stateMachine);
}
@Override
public void render() {
// TODO Auto-generated method stub
ImGui.text("Options");
renderReturnButton();
}
}

View File

@@ -0,0 +1,18 @@
package gui.menu;
import imgui.ImGui;
public class SoloMenu extends BaseMenu {
public SoloMenu(StateMachine stateMachine) {
super(stateMachine);
}
@Override
public void render() {
// TODO Auto-generated method stub
ImGui.text("Solo");
renderReturnButton();
}
}

View File

@@ -0,0 +1,29 @@
package gui.menu;
import java.util.Stack;
import imgui.ImGui;
public class StateMachine {
private final Stack<BaseMenu> menus;
public StateMachine() {
this.menus = new Stack<>();
}
public void pushState(BaseMenu menu) {
menus.add(menu);
}
public void popState() {
menus.pop();
}
public void render() {
ImGui.begin("##Main Window");
menus.getLast().render();
ImGui.end();
}
}