kb listner, better exclusives, debug logger

bottom-bar
Bronwen 2023-01-28 04:09:44 -05:00
parent ed9b183c53
commit 91c3e87c6e
11 changed files with 106 additions and 14 deletions

View File

@ -21,6 +21,7 @@ import org.lwjgl.opengl.GL;
import org.lwjgl.system.MemoryStack;
import xyz.valnet.engine.math.Matrix4f;
import xyz.valnet.hadean.gameobjects.ui.tabs.DebugTab;
public class App {
@ -91,7 +92,7 @@ public class App {
});
glfwSetScrollCallback(window, (long window, double xOffset, double yOffset) -> {
System.out.println("Scroll " + yOffset);
DebugTab.log("Scroll " + yOffset);
if(yOffset > 0)
game.scrollUp();
else if(yOffset < 0)

View File

@ -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) {}
}

View File

@ -251,13 +251,19 @@ public abstract class SceneGraph implements IScene {
@Override
public final void keyPress(int key) {
keys.add(key);
System.out.println("keyCode: " + key);
keys.add(key);
for(IKeyboardListener ikbl : getAll(IKeyboardListener.class)) {
ikbl.keyPress(key);
}
}
@Override
public final void keyRelease(int key) {
if(keys.contains(key)) keys.remove(key);
for(IKeyboardListener ikbl : getAll(IKeyboardListener.class)) {
ikbl.keyRelease(key);
}
}
@Override

View File

@ -16,6 +16,7 @@ import xyz.valnet.engine.scenegraph.GameObject;
import xyz.valnet.engine.scenegraph.IMouseCaptureArea;
import xyz.valnet.engine.scenegraph.ITransient;
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.interfaces.ISelectable;
import xyz.valnet.hadean.interfaces.ISelectionChangeListener;
@ -206,7 +207,7 @@ public class SelectionLayer extends GameObject implements IMouseCaptureArea, ITr
}
} else if (button == 1) {
if(selected.size() == 0) {
buildTab.rightClickOnWorld();
get(ExclusivityManager.class).backOrDefault();
} else {
clearSelection();
}

View File

@ -1,14 +1,18 @@
package xyz.valnet.hadean.gameobjects.ui;
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.util.Assets;
public class ExclusivityManager extends GameObject {
public class ExclusivityManager extends GameObject implements ITransient {
private Tab current = null;
private boolean switching = false;
private Tab defaultTab = null;
public void switchTo(Tab tab) {
if(tab == current) return;
if(tab == null) {
@ -25,9 +29,20 @@ public class ExclusivityManager extends GameObject {
public void closeCurrent() {
if(switching) return;
if(current == null) return;
Assets.sndCancel.play();
current.close();
current = null;
}
public void backOrDefault() {
if(current == null) switchTo(defaultTab);
else current.back();
}
@Override
protected void connect() {
defaultTab = get(BuildTab.class);
}
}

View File

@ -128,11 +128,12 @@ public class BuildTab extends Tab implements ISelectionChangeListener, IBuildLay
}
}
public void rightClickOnWorld() {
@Override
public void back() {
if(selectedBuildable != null) {
selectBuildable(null);
} else {
evoke();
close();
}
}

View File

@ -1,10 +1,13 @@
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.gameobjects.BottomBar;
public class DebugTab extends Tab {
public class DebugTab extends Tab implements IKeyboardListener {
private int width = 250;
private static Runtime runtime = Runtime.getRuntime();
@ -24,7 +27,16 @@ public class DebugTab extends Tab {
protected void gui() {
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");
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) {}
}

View File

@ -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;
}
}

View File

@ -72,6 +72,10 @@ public abstract class Tab extends ImmediateUI implements IBottomBarItem, ITransi
onClose();
}
public void back() {
close();
}
protected abstract void onClose();
protected abstract void onOpen();
}

View File

@ -12,12 +12,8 @@ import xyz.valnet.hadean.gameobjects.inputlayer.BuildLayer;
import xyz.valnet.hadean.gameobjects.inputlayer.SelectionLayer;
import xyz.valnet.hadean.gameobjects.ui.ExclusivityManager;
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.JobBoardTab;
import xyz.valnet.hadean.gameobjects.ui.tabs.LoadTab;
import xyz.valnet.hadean.gameobjects.ui.tabs.DebugTab;
import xyz.valnet.hadean.gameobjects.ui.tabs.SaveTab;
import xyz.valnet.hadean.gameobjects.worldobjects.pawn.Pawn;
// TODO BIG IDEAS

View File

@ -20,5 +20,6 @@ public class Layers {
public static final float GENERAL_UI = current ++;
public static final float GENERAL_UI_INTERACTABLE = current ++;
public static final float BOTTOM_BAR = current ++;
public static final float PAUSE_MENU = current ++;
public static final float CONSOLE = current ++;
}