From cf77644f4b06796e04b9c25789f2438745f8770f Mon Sep 17 00:00:00 2001 From: Ivory Date: Tue, 3 Jan 2023 01:11:18 -0500 Subject: [PATCH 1/8] width in world objects, bed stubbed --- .../hadean/gameobjects/worldobjects/Bed.java | 26 +++++++++++++++++++ .../gameobjects/worldobjects/WorldObject.java | 2 ++ 2 files changed, 28 insertions(+) create mode 100644 src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/Bed.java diff --git a/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/Bed.java b/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/Bed.java new file mode 100644 index 0000000..91f3ad6 --- /dev/null +++ b/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/Bed.java @@ -0,0 +1,26 @@ +package xyz.valnet.hadean.gameobjects.worldobjects; + +import xyz.valnet.engine.math.Vector4f; +import xyz.valnet.hadean.interfaces.IBuildable; + +public class Bed extends WorldObject implements IBuildable { + + @Override + public void buildAt(int x, int y, int w, int h) { + // TODO Auto-generated method stub + + } + + @Override + public String getName() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Vector4f getWorldBox() { + // TODO Auto-generated method stub + return null; + } + +} diff --git a/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/WorldObject.java b/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/WorldObject.java index 30415d5..52ebc9d 100644 --- a/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/WorldObject.java +++ b/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/WorldObject.java @@ -11,6 +11,8 @@ public abstract class WorldObject extends GameObject { protected float x; protected float y; + protected float w; + protected float h; protected Camera camera; protected Terrain terrain; From 43c035ba5b4a1650e7e8806773483a244ee667b5 Mon Sep 17 00:00:00 2001 From: Bronwen Date: Tue, 3 Jan 2023 02:03:53 -0500 Subject: [PATCH 2/8] build tab: use a struct for tracking buildables --- .../hadean/gameobjects/ui/tabs/BuildTab.java | 66 ++++++++++--------- 1 file changed, 35 insertions(+), 31 deletions(-) diff --git a/src/main/java/xyz/valnet/hadean/gameobjects/ui/tabs/BuildTab.java b/src/main/java/xyz/valnet/hadean/gameobjects/ui/tabs/BuildTab.java index 2dbf3cd..e50c10d 100644 --- a/src/main/java/xyz/valnet/hadean/gameobjects/ui/tabs/BuildTab.java +++ b/src/main/java/xyz/valnet/hadean/gameobjects/ui/tabs/BuildTab.java @@ -18,7 +18,6 @@ import xyz.valnet.engine.scenegraph.GameObject; import xyz.valnet.engine.scenegraph.IMouseCaptureArea; import xyz.valnet.hadean.gameobjects.BottomBar; import xyz.valnet.hadean.gameobjects.Camera; -import xyz.valnet.hadean.gameobjects.Terrain; import xyz.valnet.hadean.gameobjects.inputlayer.BuildLayer; import xyz.valnet.hadean.gameobjects.inputlayer.SelectionLayer; import xyz.valnet.hadean.input.Button; @@ -31,7 +30,6 @@ import xyz.valnet.hadean.interfaces.ISelectable; import xyz.valnet.hadean.interfaces.ISelectionChangeListener; import xyz.valnet.hadean.util.Assets; import xyz.valnet.hadean.util.Layers; -import xyz.valnet.hadean.util.Pair; import xyz.valnet.hadean.util.SmartBoolean; public class BuildTab extends Tab implements ISelectionChangeListener, IMouseCaptureArea, IButtonListener { @@ -39,7 +37,6 @@ public class BuildTab extends Tab implements ISelectionChangeListener, IMouseCap private SelectionLayer selection; private BuildLayer buildLayer; private Camera camera; - private Terrain terrain; private SmartBoolean opened; private int width = 200; @@ -51,13 +48,19 @@ public class BuildTab extends Tab implements ISelectionChangeListener, IMouseCap private String selectedCategory = ""; - private transient Constructor selectedBuildable = null; - private transient Map>>> buildables = null; - private transient Map> buildableButtons = null; - + private transient BuildableRecord selectedBuildable = null; + private transient Map> buildables = null; + private transient Map buildableButtons = null; private int height = 0; - private String selectedBuildableName = ""; + + private record BuildableRecord( + String name, + Constructor constructor, + int type + ) { + + } private void calculateBuildables() { try { @@ -81,10 +84,11 @@ public class BuildTab extends Tab implements ISelectionChangeListener, IMouseCap } String category = annotation.category(); String name = annotation.name(); + int type = annotation.type(); if(!buildables.containsKey(category)) - buildables.put(category, new ArrayList>>()); - buildables.get(category).add(new Pair>(name, constructor)); + buildables.put(category, new ArrayList()); + buildables.get(category).add(new BuildableRecord(name, constructor, type)); System.out.println("Added " + category + " / " + name); } @@ -107,7 +111,7 @@ public class BuildTab extends Tab implements ISelectionChangeListener, IMouseCap // draw the currently selected build item Assets.flat.pushColor(new Vector4f(1f, 1f, 1f, 1.0f)); Vector2i topLeft = camera.world2screen(x, y).asInt(); - Assets.font.drawString(selectedBuildableName, topLeft.x, topLeft.y - 20); + Assets.font.drawString(selectedBuildable.name, topLeft.x, topLeft.y - 20); Assets.flat.swapColor(new Vector4f(1f, 1f, 1f, 0.5f)); for(int i = 0; i < w; i ++) for(int j = 0; j < h; j ++) {{ camera.draw(Layers.BUILD_INTERACTABLE, Assets.checkerBoard, x + i, y + j); @@ -122,7 +126,6 @@ public class BuildTab extends Tab implements ISelectionChangeListener, IMouseCap buildLayer = get(BuildLayer.class); selection = get(SelectionLayer.class); camera = get(Camera.class); - terrain = get(Terrain.class); opened = new SmartBoolean(false, new SmartBoolean.IListener() { @@ -142,22 +145,23 @@ public class BuildTab extends Tab implements ISelectionChangeListener, IMouseCap selection.subscribe(this); } - buildables = new HashMap>>>(); - buildableButtons = new HashMap>(); + buildables = new HashMap>(); + buildableButtons = new HashMap(); calculateBuildables(); } private List