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 4f6a3d5..683a2e2 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 @@ -3,6 +3,8 @@ package xyz.valnet.hadean.gameobjects.worldobjects.constructions; import java.util.ArrayList; import java.util.List; +import xyz.valnet.engine.graphics.Color; +import xyz.valnet.engine.graphics.Sprite; import xyz.valnet.engine.math.Vector2i; import xyz.valnet.hadean.gameobjects.jobs.Job; import xyz.valnet.hadean.gameobjects.jobs.JobBoard; @@ -12,6 +14,8 @@ import xyz.valnet.hadean.gameobjects.worldobjects.items.Item; import xyz.valnet.hadean.interfaces.IItemPredicate; import xyz.valnet.hadean.interfaces.IItemReceiver; import xyz.valnet.hadean.interfaces.IWorkable; +import xyz.valnet.hadean.util.Assets; +import xyz.valnet.hadean.util.Layers; public abstract class Construction extends Buildable implements IItemReceiver { @@ -120,4 +124,23 @@ public abstract class Construction extends Buildable implements IItemReceiver { public Vector2i[] getItemDropoffLocations() { return getWorldBox().toXYWH().asInt().getBorders(); } + + + @Override + public void render() { + Sprite sprite = getDefaultSprite(); + if(isBuilt()) { + camera.draw(Layers.TILES, sprite, getWorldPosition()); + } else { + float b = 4; + + Assets.flat.pushColor(Color.grey(b).withAlpha(0.5f)); + camera.draw(Layers.GROUND, Assets.quarry, getWorldPosition()); + Assets.flat.popColor(); + + camera.drawProgressBar(getBuildProgress(), getWorldBox()); + } + } + + protected abstract Sprite getDefaultSprite(); } diff --git a/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/constructions/Quarry.java b/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/constructions/Quarry.java index fdbd5cf..ce321f4 100644 --- a/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/constructions/Quarry.java +++ b/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/constructions/Quarry.java @@ -1,6 +1,7 @@ package xyz.valnet.hadean.gameobjects.worldobjects.constructions; import xyz.valnet.engine.graphics.Color; +import xyz.valnet.engine.graphics.Sprite; import xyz.valnet.engine.math.Vector2i; import xyz.valnet.hadean.gameobjects.jobs.Job; import xyz.valnet.hadean.gameobjects.jobs.JobBoard; @@ -16,26 +17,6 @@ public class Quarry extends Construction { private Job digJob = null; - @Override - public void render() { - if(isBuilt()) { - camera.draw(Layers.TILES, Assets.quarry, getWorldPosition()); - - if(digJob != null && !digJob.isCompleted()) { - camera.drawProgressBar(digProgress, getWorldBox()); - } - - } else { - float b = 4; - - Assets.flat.pushColor(Color.grey(b).withAlpha(0.5f)); - camera.draw(Layers.GROUND, Assets.quarry, getWorldPosition()); - Assets.flat.popColor(); - - camera.drawProgressBar(getBuildProgress(), getWorldBox()); - } - } - @Override public Vector2i getDimensions() { return new Vector2i(3, 3); @@ -118,4 +99,19 @@ public class Quarry extends Construction { protected int getBuildingMaterialCount() { return 0; } + + @Override + protected final Sprite getDefaultSprite() { + return Assets.quarry; + } + + @Override + public void render() { + super.render(); + if(!isBuilt()) return; + + if(digJob != null && !digJob.isCompleted() && digProgress > 0) { + camera.drawProgressBar(digProgress, getWorldBox()); + } + } }