kb listner, better exclusives, debug logger
parent
ed9b183c53
commit
91c3e87c6e
|
|
@ -21,6 +21,7 @@ import org.lwjgl.opengl.GL;
|
||||||
import org.lwjgl.system.MemoryStack;
|
import org.lwjgl.system.MemoryStack;
|
||||||
|
|
||||||
import xyz.valnet.engine.math.Matrix4f;
|
import xyz.valnet.engine.math.Matrix4f;
|
||||||
|
import xyz.valnet.hadean.gameobjects.ui.tabs.DebugTab;
|
||||||
|
|
||||||
public class App {
|
public class App {
|
||||||
|
|
||||||
|
|
@ -91,7 +92,7 @@ public class App {
|
||||||
});
|
});
|
||||||
|
|
||||||
glfwSetScrollCallback(window, (long window, double xOffset, double yOffset) -> {
|
glfwSetScrollCallback(window, (long window, double xOffset, double yOffset) -> {
|
||||||
System.out.println("Scroll " + yOffset);
|
DebugTab.log("Scroll " + yOffset);
|
||||||
if(yOffset > 0)
|
if(yOffset > 0)
|
||||||
game.scrollUp();
|
game.scrollUp();
|
||||||
else if(yOffset < 0)
|
else if(yOffset < 0)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
package xyz.valnet.engine.scenegraph;
|
||||||
|
|
||||||
|
public interface IKeyboardListener {
|
||||||
|
public void keyPress(int code);
|
||||||
|
public void keyRelease(int code);
|
||||||
|
// public default void keyPress(int code) {}
|
||||||
|
}
|
||||||
|
|
@ -251,13 +251,19 @@ public abstract class SceneGraph implements IScene {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final void keyPress(int key) {
|
public final void keyPress(int key) {
|
||||||
keys.add(key);
|
|
||||||
System.out.println("keyCode: " + key);
|
System.out.println("keyCode: " + key);
|
||||||
|
keys.add(key);
|
||||||
|
for(IKeyboardListener ikbl : getAll(IKeyboardListener.class)) {
|
||||||
|
ikbl.keyPress(key);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final void keyRelease(int key) {
|
public final void keyRelease(int key) {
|
||||||
if(keys.contains(key)) keys.remove(key);
|
if(keys.contains(key)) keys.remove(key);
|
||||||
|
for(IKeyboardListener ikbl : getAll(IKeyboardListener.class)) {
|
||||||
|
ikbl.keyRelease(key);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ import xyz.valnet.engine.scenegraph.GameObject;
|
||||||
import xyz.valnet.engine.scenegraph.IMouseCaptureArea;
|
import xyz.valnet.engine.scenegraph.IMouseCaptureArea;
|
||||||
import xyz.valnet.engine.scenegraph.ITransient;
|
import xyz.valnet.engine.scenegraph.ITransient;
|
||||||
import xyz.valnet.hadean.gameobjects.Camera;
|
import xyz.valnet.hadean.gameobjects.Camera;
|
||||||
|
import xyz.valnet.hadean.gameobjects.ui.ExclusivityManager;
|
||||||
import xyz.valnet.hadean.gameobjects.ui.tabs.BuildTab;
|
import xyz.valnet.hadean.gameobjects.ui.tabs.BuildTab;
|
||||||
import xyz.valnet.hadean.interfaces.ISelectable;
|
import xyz.valnet.hadean.interfaces.ISelectable;
|
||||||
import xyz.valnet.hadean.interfaces.ISelectionChangeListener;
|
import xyz.valnet.hadean.interfaces.ISelectionChangeListener;
|
||||||
|
|
@ -206,7 +207,7 @@ public class SelectionLayer extends GameObject implements IMouseCaptureArea, ITr
|
||||||
}
|
}
|
||||||
} else if (button == 1) {
|
} else if (button == 1) {
|
||||||
if(selected.size() == 0) {
|
if(selected.size() == 0) {
|
||||||
buildTab.rightClickOnWorld();
|
get(ExclusivityManager.class).backOrDefault();
|
||||||
} else {
|
} else {
|
||||||
clearSelection();
|
clearSelection();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,17 @@
|
||||||
package xyz.valnet.hadean.gameobjects.ui;
|
package xyz.valnet.hadean.gameobjects.ui;
|
||||||
|
|
||||||
import xyz.valnet.engine.scenegraph.GameObject;
|
import xyz.valnet.engine.scenegraph.GameObject;
|
||||||
|
import xyz.valnet.engine.scenegraph.ITransient;
|
||||||
|
import xyz.valnet.hadean.gameobjects.ui.tabs.BuildTab;
|
||||||
import xyz.valnet.hadean.gameobjects.ui.tabs.Tab;
|
import xyz.valnet.hadean.gameobjects.ui.tabs.Tab;
|
||||||
import xyz.valnet.hadean.util.Assets;
|
import xyz.valnet.hadean.util.Assets;
|
||||||
|
|
||||||
public class ExclusivityManager extends GameObject {
|
public class ExclusivityManager extends GameObject implements ITransient {
|
||||||
private Tab current = null;
|
private Tab current = null;
|
||||||
|
|
||||||
private boolean switching = false;
|
private boolean switching = false;
|
||||||
|
|
||||||
|
private Tab defaultTab = null;
|
||||||
|
|
||||||
public void switchTo(Tab tab) {
|
public void switchTo(Tab tab) {
|
||||||
if(tab == current) return;
|
if(tab == current) return;
|
||||||
|
|
@ -25,9 +29,20 @@ public class ExclusivityManager extends GameObject {
|
||||||
|
|
||||||
public void closeCurrent() {
|
public void closeCurrent() {
|
||||||
if(switching) return;
|
if(switching) return;
|
||||||
|
if(current == null) return;
|
||||||
Assets.sndCancel.play();
|
Assets.sndCancel.play();
|
||||||
current.close();
|
current.close();
|
||||||
current = null;
|
current = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void backOrDefault() {
|
||||||
|
if(current == null) switchTo(defaultTab);
|
||||||
|
else current.back();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void connect() {
|
||||||
|
defaultTab = get(BuildTab.class);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -128,11 +128,12 @@ public class BuildTab extends Tab implements ISelectionChangeListener, IBuildLay
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void rightClickOnWorld() {
|
@Override
|
||||||
|
public void back() {
|
||||||
if(selectedBuildable != null) {
|
if(selectedBuildable != null) {
|
||||||
selectBuildable(null);
|
selectBuildable(null);
|
||||||
} else {
|
} else {
|
||||||
evoke();
|
close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,13 @@
|
||||||
package xyz.valnet.hadean.gameobjects.ui.tabs;
|
package xyz.valnet.hadean.gameobjects.ui.tabs;
|
||||||
|
|
||||||
import xyz.valnet.engine.App;
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import xyz.valnet.engine.scenegraph.IKeyboardListener;
|
||||||
import xyz.valnet.hadean.HadeanGame;
|
import xyz.valnet.hadean.HadeanGame;
|
||||||
import xyz.valnet.hadean.gameobjects.BottomBar;
|
import xyz.valnet.hadean.gameobjects.BottomBar;
|
||||||
|
|
||||||
public class DebugTab extends Tab {
|
public class DebugTab extends Tab implements IKeyboardListener {
|
||||||
|
|
||||||
private int width = 250;
|
private int width = 250;
|
||||||
private static Runtime runtime = Runtime.getRuntime();
|
private static Runtime runtime = Runtime.getRuntime();
|
||||||
|
|
@ -24,7 +27,16 @@ public class DebugTab extends Tab {
|
||||||
protected void gui() {
|
protected void gui() {
|
||||||
if(!shouldRender()) return;
|
if(!shouldRender()) return;
|
||||||
|
|
||||||
window(animate(1200, 1024 - width), 0, width, 576 - BottomBar.bottomBarHeight + 1, () -> {
|
window(0, animate(-200, 0), 1024 - width + 1, 176, () -> {
|
||||||
|
for(int i = 10; i > logs.size(); i --) {
|
||||||
|
text(" ");
|
||||||
|
}
|
||||||
|
for(String str : logs) {
|
||||||
|
text(str);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
window(animate(1050, 1024 - width), 0, width, 576 - BottomBar.bottomBarHeight + 1, () -> {
|
||||||
text("Debug");
|
text("Debug");
|
||||||
space(8);
|
space(8);
|
||||||
|
|
||||||
|
|
@ -46,4 +58,23 @@ public class DebugTab extends Tab {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static List<String> logs = new LinkedList<String>();
|
||||||
|
|
||||||
|
public static void log(String str) {
|
||||||
|
logs.add(str);
|
||||||
|
while(logs.size() > 10) {
|
||||||
|
logs.remove(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void keyPress(int code) {
|
||||||
|
if(code == 96) { // tilde
|
||||||
|
evoke();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void keyRelease(int code) {}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
package xyz.valnet.hadean.gameobjects.ui.tabs;
|
||||||
|
|
||||||
|
public class MenuTab extends Tab {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onClose() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onOpen() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void gui() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getTabName() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -72,6 +72,10 @@ public abstract class Tab extends ImmediateUI implements IBottomBarItem, ITransi
|
||||||
onClose();
|
onClose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void back() {
|
||||||
|
close();
|
||||||
|
}
|
||||||
|
|
||||||
protected abstract void onClose();
|
protected abstract void onClose();
|
||||||
protected abstract void onOpen();
|
protected abstract void onOpen();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,12 +12,8 @@ import xyz.valnet.hadean.gameobjects.inputlayer.BuildLayer;
|
||||||
import xyz.valnet.hadean.gameobjects.inputlayer.SelectionLayer;
|
import xyz.valnet.hadean.gameobjects.inputlayer.SelectionLayer;
|
||||||
import xyz.valnet.hadean.gameobjects.ui.ExclusivityManager;
|
import xyz.valnet.hadean.gameobjects.ui.ExclusivityManager;
|
||||||
import xyz.valnet.hadean.gameobjects.ui.HoverQuery;
|
import xyz.valnet.hadean.gameobjects.ui.HoverQuery;
|
||||||
import xyz.valnet.hadean.gameobjects.ui.Popup;
|
|
||||||
import xyz.valnet.hadean.gameobjects.ui.tabs.BuildTab;
|
import xyz.valnet.hadean.gameobjects.ui.tabs.BuildTab;
|
||||||
import xyz.valnet.hadean.gameobjects.ui.tabs.JobBoardTab;
|
|
||||||
import xyz.valnet.hadean.gameobjects.ui.tabs.LoadTab;
|
|
||||||
import xyz.valnet.hadean.gameobjects.ui.tabs.DebugTab;
|
import xyz.valnet.hadean.gameobjects.ui.tabs.DebugTab;
|
||||||
import xyz.valnet.hadean.gameobjects.ui.tabs.SaveTab;
|
|
||||||
import xyz.valnet.hadean.gameobjects.worldobjects.pawn.Pawn;
|
import xyz.valnet.hadean.gameobjects.worldobjects.pawn.Pawn;
|
||||||
|
|
||||||
// TODO BIG IDEAS
|
// TODO BIG IDEAS
|
||||||
|
|
|
||||||
|
|
@ -20,5 +20,6 @@ public class Layers {
|
||||||
public static final float GENERAL_UI = current ++;
|
public static final float GENERAL_UI = current ++;
|
||||||
public static final float GENERAL_UI_INTERACTABLE = current ++;
|
public static final float GENERAL_UI_INTERACTABLE = current ++;
|
||||||
public static final float BOTTOM_BAR = current ++;
|
public static final float BOTTOM_BAR = current ++;
|
||||||
|
public static final float PAUSE_MENU = current ++;
|
||||||
|
public static final float CONSOLE = current ++;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue