From ac0a9217dbf297040cb5bdfc02814b769e0c2067 Mon Sep 17 00:00:00 2001 From: Bronwen Date: Sun, 5 Feb 2023 03:17:10 -0500 Subject: [PATCH] mason shop in and working --- .../gameobjects/inputlayer/BuildLayer.java | 15 +++++++++++-- .../hadean/gameobjects/ui/tabs/BuildTab.java | 21 +++++-------------- .../gameobjects/worldobjects/Buildable.java | 4 ---- .../worldobjects/constructions/Bed.java | 2 +- .../constructions/Construction.java | 5 +---- .../constructions/MasonWorkshop.java | 2 +- .../interfaces/IBuildLayerListener.java | 3 ++- .../valnet/hadean/interfaces/IBuildable.java | 6 ++++++ 8 files changed, 29 insertions(+), 29 deletions(-) diff --git a/src/main/java/xyz/valnet/hadean/gameobjects/inputlayer/BuildLayer.java b/src/main/java/xyz/valnet/hadean/gameobjects/inputlayer/BuildLayer.java index 1a4299b..72fd67c 100644 --- a/src/main/java/xyz/valnet/hadean/gameobjects/inputlayer/BuildLayer.java +++ b/src/main/java/xyz/valnet/hadean/gameobjects/inputlayer/BuildLayer.java @@ -64,7 +64,11 @@ public class BuildLayer extends GameObject implements IMouseCaptureArea, ITransi listener.update(ords[0].x, ords[0].y, ords[2].x + 1, ords[2].y + 1); return; } - listener.update(worldcoords.x, worldcoords.y, 1, 1); + if(type == BuildType.SINGLE && dimensions != null) { + listener.update(worldcoords.x, worldcoords.y, dimensions.x, dimensions.y); + } else { + listener.update(worldcoords.x, worldcoords.y, 1, 1); + } } public void deactiveate() { @@ -85,6 +89,12 @@ public class BuildLayer extends GameObject implements IMouseCaptureArea, ITransi private int x, y; private boolean mouseDown = false; + private Vector2i dimensions = new Vector2i(1, 1); + + public void setDimensions(Vector2i dimensions) { + this.dimensions = dimensions; + } + @Override public void mouseDown(int button) { if(button == 1 && active && hovered) { @@ -97,7 +107,7 @@ public class BuildLayer extends GameObject implements IMouseCaptureArea, ITransi x = worldcoords.x; y = worldcoords.y; if(type == BuildType.SINGLE) { - listener.build(x, y); + listener.build(x, y, x + dimensions.x - 1, y + dimensions.y - 1); } } } @@ -121,6 +131,7 @@ public class BuildLayer extends GameObject implements IMouseCaptureArea, ITransi } } + @Deprecated(since = "What is this abomination", forRemoval = true) private Vector2i[] orderCoords(Vector2i a, Vector2i b) { return new Vector2i[] { new Vector2i(Math.min(a.x, b.x), Math.min(a.y, b.y)), 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 89b830b..fca0339 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 @@ -62,7 +62,8 @@ public class BuildTab extends Tab implements ISelectionChangeListener, IBuildLay public record BuildableRecord( String name, Constructor constructor, - BuildType type + BuildType type, + Vector2i dimensions ) {} public static void registerBuildable(Class clazz) { @@ -84,12 +85,13 @@ public class BuildTab extends Tab implements ISelectionChangeListener, IBuildLay String category = buildable.getBuildTabCategory(); String name = buildable.getBuildTabName(); BuildType type = buildable.getBuildType(); + Vector2i dim = buildable.getDimensions(); DebugTab.log("Added " + category + " / " + name); if(!buildables.containsKey(category)) buildables.put(category, new ArrayList()); - buildables.get(category).add(new BuildableRecord(name, constructor, type)); + buildables.get(category).add(new BuildableRecord(name, constructor, type, dim)); } catch (Exception e) { e.printStackTrace(); @@ -148,6 +150,7 @@ public class BuildTab extends Tab implements ISelectionChangeListener, IBuildLay selectedBuildable = buildableRecord; buildLayer.activate(this); buildLayer.setBuildType(selectedBuildable.type); + buildLayer.setDimensions(selectedBuildable.dimensions); } @Override @@ -172,20 +175,6 @@ public class BuildTab extends Tab implements ISelectionChangeListener, IBuildLay } } - @Override - public void build(int x1, int y1) { - if(selectedBuildable == null) return; - try { - IBuildable building = selectedBuildable.constructor.newInstance(); - if(building instanceof GameObject) { - add((GameObject) building); - } - building.buildAt(x1, y1, 1, 1); - } catch (Exception e) { - DebugTab.log(e); - } - } - @Override public void cancel() { if(selectedBuildable == null) { diff --git a/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/Buildable.java b/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/Buildable.java index 3e990c5..4922a04 100644 --- a/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/Buildable.java +++ b/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/Buildable.java @@ -10,10 +10,6 @@ import xyz.valnet.hadean.util.detail.Detail; public abstract class Buildable extends WorldObject implements IBuildable, ITileThing, ISelectable { - protected Vector2i getDimensions() { - return new Vector2i(1, 1); - } - @Override public void buildAt(int x, int y, int w, int h) { setPosition(x, y, w, h); diff --git a/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/constructions/Bed.java b/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/constructions/Bed.java index d617063..a133da5 100644 --- a/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/constructions/Bed.java +++ b/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/constructions/Bed.java @@ -9,7 +9,7 @@ import xyz.valnet.hadean.util.Assets; public class Bed extends Construction { @Override - protected Vector2i getDimensions() { + public Vector2i getDimensions() { return new Vector2i(1, 2); } diff --git a/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/constructions/Construction.java b/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/constructions/Construction.java index 5979e30..0cd191d 100644 --- a/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/constructions/Construction.java +++ b/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/constructions/Construction.java @@ -26,9 +26,6 @@ public abstract class Construction extends Buildable implements IItemReceiver { protected abstract IItemPredicate getBuildingMaterial(); protected abstract int getBuildingMaterialCount(); - protected Vector2i getDimensions() { - return new Vector2i(1, 1); - } private final boolean isBuildingMaterialSatisfied() { return containedItems.size() >= getBuildingMaterialCount(); @@ -147,7 +144,7 @@ public abstract class Construction extends Buildable implements IItemReceiver { @Override public BuildType getBuildType() { - return BuildType.AREA; + return BuildType.SINGLE; } @Override public String getBuildTabCategory() { diff --git a/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/constructions/MasonWorkshop.java b/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/constructions/MasonWorkshop.java index 2f26b28..927edfe 100644 --- a/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/constructions/MasonWorkshop.java +++ b/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/constructions/MasonWorkshop.java @@ -34,7 +34,7 @@ public class MasonWorkshop extends Construction { } @Override - protected Vector2i getDimensions() { + public Vector2i getDimensions() { return new Vector2i(3, 3); } diff --git a/src/main/java/xyz/valnet/hadean/interfaces/IBuildLayerListener.java b/src/main/java/xyz/valnet/hadean/interfaces/IBuildLayerListener.java index 99bbc3b..80536de 100644 --- a/src/main/java/xyz/valnet/hadean/interfaces/IBuildLayerListener.java +++ b/src/main/java/xyz/valnet/hadean/interfaces/IBuildLayerListener.java @@ -1,8 +1,9 @@ package xyz.valnet.hadean.interfaces; public interface IBuildLayerListener { + @Deprecated public void update(int x, int y, int w, int h); + @Deprecated public void build(int x, int y, int w, int h); - public void build(int x, int y); public void cancel(); } diff --git a/src/main/java/xyz/valnet/hadean/interfaces/IBuildable.java b/src/main/java/xyz/valnet/hadean/interfaces/IBuildable.java index 7a60a98..44e6690 100644 --- a/src/main/java/xyz/valnet/hadean/interfaces/IBuildable.java +++ b/src/main/java/xyz/valnet/hadean/interfaces/IBuildable.java @@ -1,5 +1,7 @@ package xyz.valnet.hadean.interfaces; +import xyz.valnet.engine.math.Vector2i; + public interface IBuildable { public void buildAt(int x, int y, int w, int h); @@ -8,4 +10,8 @@ public interface IBuildable { public BuildType getBuildType(); public String getBuildTabName(); + public default Vector2i getDimensions() { + return null; + } + }