package gui.menu; import java.util.Stack; import imgui.ImGui; import imgui.ImVec2; import imgui.flag.ImGuiKey; import imgui.flag.ImGuiWindowFlags; public class StateMachine { private final Stack menus; public StateMachine() { this.menus = new Stack<>(); } public void pushState(BaseView menu) { menus.add(menu); } public void popState() { 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)); ImGui.setNextWindowSize(displaySize); ImGui.begin("##Main Window", null, ImGuiWindowFlags.NoDecoration | ImGuiWindowFlags.NoMove | ImGuiWindowFlags.NoSavedSettings | ImGuiWindowFlags.NoBackground); menus.getLast().render(); ImGui.end(); checkEscape(); } }