From 43c035ba5b4a1650e7e8806773483a244ee667b5 Mon Sep 17 00:00:00 2001 From: Bronwen Date: Tue, 3 Jan 2023 02:03:53 -0500 Subject: [PATCH] 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