2022-09-04 21:21:24 +02:00
|
|
|
package io.gitlab.jfronny.inceptum.imgui.window;
|
2021-10-28 20:19:09 +02:00
|
|
|
|
2021-10-28 21:31:51 +02:00
|
|
|
import imgui.flag.ImGuiWindowFlags;
|
|
|
|
import imgui.type.ImBoolean;
|
2022-09-04 21:21:24 +02:00
|
|
|
import io.gitlab.jfronny.inceptum.imgui.GuiMain;
|
2021-10-27 22:00:08 +02:00
|
|
|
|
2021-10-30 19:26:59 +02:00
|
|
|
import java.io.Closeable;
|
2022-09-18 18:56:44 +02:00
|
|
|
import java.io.IOException;
|
2021-10-30 19:26:59 +02:00
|
|
|
|
|
|
|
public abstract class Window implements Closeable {
|
2021-10-27 22:00:08 +02:00
|
|
|
private final String name;
|
2021-10-30 19:26:59 +02:00
|
|
|
private final ImBoolean openState = new ImBoolean(true);
|
2021-12-01 16:12:47 +01:00
|
|
|
private State state = State.New;
|
2021-10-27 22:00:08 +02:00
|
|
|
|
|
|
|
public Window(String name) {
|
|
|
|
this.name = name;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void preFirstDraw() {
|
|
|
|
}
|
2022-09-04 21:21:24 +02:00
|
|
|
|
2021-10-27 22:00:08 +02:00
|
|
|
public abstract void draw();
|
|
|
|
|
|
|
|
public String getName() {
|
|
|
|
return name;
|
|
|
|
}
|
|
|
|
|
2021-10-30 19:26:59 +02:00
|
|
|
@Override
|
2021-10-27 22:00:08 +02:00
|
|
|
public void close() {
|
2021-12-01 16:12:47 +01:00
|
|
|
state = State.Closed;
|
2021-10-28 21:31:51 +02:00
|
|
|
openState.set(false);
|
2022-09-04 21:21:24 +02:00
|
|
|
GuiMain.WINDOWS.remove(this);
|
2021-10-27 22:00:08 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
public boolean isNew() {
|
2021-12-01 16:12:47 +01:00
|
|
|
if (state == State.New) {
|
|
|
|
state = State.Open;
|
2021-10-27 22:00:08 +02:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
2021-10-28 21:31:51 +02:00
|
|
|
|
2021-12-01 16:12:47 +01:00
|
|
|
public boolean isClosed() {
|
|
|
|
return state == State.Closed;
|
|
|
|
}
|
|
|
|
|
2021-10-28 21:31:51 +02:00
|
|
|
public int getFlags() {
|
|
|
|
return ImGuiWindowFlags.AlwaysAutoResize;
|
|
|
|
}
|
|
|
|
|
|
|
|
public ImBoolean getOpenState() {
|
|
|
|
return openState;
|
|
|
|
}
|
2021-12-01 16:12:47 +01:00
|
|
|
|
2022-09-18 15:15:30 +02:00
|
|
|
public boolean isCloseable() {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
2021-12-01 16:12:47 +01:00
|
|
|
public enum State {
|
|
|
|
New, Open, Closed
|
|
|
|
}
|
2021-10-27 22:00:08 +02:00
|
|
|
}
|