package io.gitlab.jfronny.inceptum.frontend.gui.window; import imgui.flag.ImGuiWindowFlags; import imgui.type.ImBoolean; import io.gitlab.jfronny.inceptum.InceptumGui; import java.io.Closeable; public abstract class Window implements Closeable { private final String name; private final ImBoolean openState = new ImBoolean(true); private State state = State.New; public Window(String name) { this.name = name; } public void preFirstDraw() { } public abstract void draw(); public String getName() { return name; } @Override public void close() { state = State.Closed; openState.set(false); InceptumGui.WINDOWS.remove(this); } public boolean isNew() { if (state == State.New) { state = State.Open; return true; } return false; } public boolean isClosed() { return state == State.Closed; } public int getFlags() { return ImGuiWindowFlags.AlwaysAutoResize; } public ImBoolean getOpenState() { return openState; } public enum State { New, Open, Closed } }