From ce5906b7683aa8b929b956d5c51b4e89f58763c5 Mon Sep 17 00:00:00 2001 From: Ivory Date: Sun, 5 Feb 2023 02:11:47 -0500 Subject: [PATCH] ner ner ner ner ner ner nernnnnn --- .../valnet/engine/scenegraph/SceneGraph.java | 2 + .../hadean/gameobjects/terrain/Tile.java | 3 +- .../hadean/gameobjects/ui/SelectionUI.java | 2 +- .../hadean/gameobjects/ui/tabs/BuildTab.java | 2 + .../gameobjects/worldobjects/Buildable.java | 1 - .../constructions/Construction.java | 9 ++-- .../constructions/MasonWorkshop.java | 41 +++++++++++++++++++ .../java/xyz/valnet/hadean/util/Assets.java | 2 +- 8 files changed, 53 insertions(+), 9 deletions(-) create mode 100644 src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/constructions/MasonWorkshop.java diff --git a/src/main/java/xyz/valnet/engine/scenegraph/SceneGraph.java b/src/main/java/xyz/valnet/engine/scenegraph/SceneGraph.java index d811d80..e87908a 100644 --- a/src/main/java/xyz/valnet/engine/scenegraph/SceneGraph.java +++ b/src/main/java/xyz/valnet/engine/scenegraph/SceneGraph.java @@ -16,6 +16,7 @@ import java.util.stream.Collectors; import xyz.valnet.engine.App; import xyz.valnet.engine.math.Box; +import xyz.valnet.hadean.HadeanGame; import xyz.valnet.hadean.gameobjects.ui.tabs.DebugTab; public abstract class SceneGraph implements IScene { @@ -49,6 +50,7 @@ public abstract class SceneGraph implements IScene { @Override public void update(float dTime) { + dTime = 1; // ADD OBJECTS if(!newObjects.isEmpty()) { List added = new ArrayList(); diff --git a/src/main/java/xyz/valnet/hadean/gameobjects/terrain/Tile.java b/src/main/java/xyz/valnet/hadean/gameobjects/terrain/Tile.java index 25f6961..4423c7b 100644 --- a/src/main/java/xyz/valnet/hadean/gameobjects/terrain/Tile.java +++ b/src/main/java/xyz/valnet/hadean/gameobjects/terrain/Tile.java @@ -14,6 +14,7 @@ import xyz.valnet.hadean.gameobjects.worldobjects.Tree; import xyz.valnet.hadean.gameobjects.worldobjects.WorldObject; import xyz.valnet.hadean.gameobjects.worldobjects.items.Boulder; import xyz.valnet.hadean.gameobjects.worldobjects.items.Item; +import xyz.valnet.hadean.gameobjects.worldobjects.items.Log; import xyz.valnet.hadean.gameobjects.worldobjects.zones.FarmPlot; import xyz.valnet.hadean.interfaces.IItemPredicate; import xyz.valnet.hadean.interfaces.IPingable; @@ -69,7 +70,7 @@ public class Tile extends WorldObject implements IWorkable { add(new Tree(pos.x, pos.y)); } else if(Math.random() > 0.98) { rocks = false; - add(new Boulder(pos.x, pos.y)); + add(new Log(pos.x, pos.y)); } } diff --git a/src/main/java/xyz/valnet/hadean/gameobjects/ui/SelectionUI.java b/src/main/java/xyz/valnet/hadean/gameobjects/ui/SelectionUI.java index 50ae5e4..be09385 100644 --- a/src/main/java/xyz/valnet/hadean/gameobjects/ui/SelectionUI.java +++ b/src/main/java/xyz/valnet/hadean/gameobjects/ui/SelectionUI.java @@ -132,7 +132,7 @@ public class SelectionUI extends ImmediateUI implements ISelectionChangeListener if(details.length == 0) { text("No details available."); } else for(Detail detail : details) { - text(detail.toString(15)); + text(detail.toString(30)); } }); } else { 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 426fde4..89b830b 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 @@ -19,6 +19,7 @@ import xyz.valnet.hadean.gameobjects.inputlayer.SelectionLayer; import xyz.valnet.hadean.gameobjects.worldobjects.zones.FarmPlot; import xyz.valnet.hadean.gameobjects.worldobjects.zones.Stockpile; import xyz.valnet.hadean.gameobjects.worldobjects.constructions.Bed; +import xyz.valnet.hadean.gameobjects.worldobjects.constructions.MasonWorkshop; import xyz.valnet.hadean.gameobjects.worldobjects.constructions.Quarry; import xyz.valnet.hadean.gameobjects.worldobjects.constructions.Wall; import xyz.valnet.hadean.interfaces.BuildType; @@ -55,6 +56,7 @@ public class BuildTab extends Tab implements ISelectionChangeListener, IBuildLay BuildTab.registerBuildable(FarmPlot.class); BuildTab.registerBuildable(Stockpile.class); + BuildTab.registerBuildable(MasonWorkshop.class); } public record BuildableRecord( 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 0fe4e29..3e990c5 100644 --- a/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/Buildable.java +++ b/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/Buildable.java @@ -24,7 +24,6 @@ public abstract class Buildable extends WorldObject implements IBuildable, ITile @Override public Action[] getActions() { - // TODO Auto-generated method stub return new Action[] {}; } 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 fd7dc18..5979e30 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 @@ -9,7 +9,6 @@ import xyz.valnet.engine.math.Vector2i; import xyz.valnet.hadean.gameobjects.jobs.Job; import xyz.valnet.hadean.gameobjects.jobs.JobBoard; import xyz.valnet.hadean.gameobjects.worldobjects.Buildable; -import xyz.valnet.hadean.gameobjects.worldobjects.items.Boulder; import xyz.valnet.hadean.gameobjects.worldobjects.items.Item; import xyz.valnet.hadean.interfaces.BuildType; import xyz.valnet.hadean.interfaces.IItemPredicate; @@ -55,7 +54,7 @@ public abstract class Construction extends Buildable implements IItemReceiver { work += dTime; return isBuilt(); } - + @Override public Vector2i[] getWorkablePositions() { return getWorldBox().toXYWH().asInt().getBorders(); @@ -115,9 +114,9 @@ public abstract class Construction extends Buildable implements IItemReceiver { @Override public final boolean receive(Item item) { if(item == null) return false; - if(!item.matches(Boulder.BOULDER_PREDICATE)) return false; + if(!item.matches(getBuildingMaterial())) return false; remove(item); - // boulders ++; + containedItems.add(item); return true; } @@ -148,7 +147,7 @@ public abstract class Construction extends Buildable implements IItemReceiver { @Override public BuildType getBuildType() { - return BuildType.SINGLE; + return BuildType.AREA; } @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 new file mode 100644 index 0000000..2f26b28 --- /dev/null +++ b/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/constructions/MasonWorkshop.java @@ -0,0 +1,41 @@ +package xyz.valnet.hadean.gameobjects.worldobjects.constructions; + +import xyz.valnet.engine.graphics.Sprite; +import xyz.valnet.engine.math.Vector2i; +import xyz.valnet.hadean.gameobjects.worldobjects.items.Log; +import xyz.valnet.hadean.interfaces.IItemPredicate; +import xyz.valnet.hadean.util.Assets; + +public class MasonWorkshop extends Construction { + + @Override + protected IItemPredicate getBuildingMaterial() { + return Log.LOG_PREDICATE; + } + + @Override + protected int getBuildingMaterialCount() { + return 1; + } + + @Override + public boolean isWalkable() { + return false; + } + + @Override + public String getName() { + return "Mason's Workshop"; + } + + @Override + protected Sprite getDefaultSprite() { + return Assets.testTile; + } + + @Override + protected Vector2i getDimensions() { + return new Vector2i(3, 3); + } + +} diff --git a/src/main/java/xyz/valnet/hadean/util/Assets.java b/src/main/java/xyz/valnet/hadean/util/Assets.java index 81d290a..61a5e94 100644 --- a/src/main/java/xyz/valnet/hadean/util/Assets.java +++ b/src/main/java/xyz/valnet/hadean/util/Assets.java @@ -100,7 +100,7 @@ public class Assets { egg = new Sprite(atlas, 8, 104, 8, 8); bigRock = new Sprite(atlas, 16, 104, 8, 8); lilPickaxe = new Sprite(atlas, 8, 120, 16, 16); - testTile = new Sprite(atlas, 16, 16, 64, 112); + testTile = new Sprite(atlas, 64, 112, 16, 16); quarry = new Sprite(atlas, 88, 64, 24, 24); Map charset = new HashMap();