From afba135b7e99bc2cb182138eb132b6d781c025d6 Mon Sep 17 00:00:00 2001 From: Ivory Date: Wed, 4 Jan 2023 05:06:53 -0500 Subject: [PATCH] progress bars, minor balance changes --- res/textures.png | Bin 12447 -> 27455 bytes .../java/xyz/valnet/engine/math/Vector4f.java | 4 ++++ .../xyz/valnet/hadean/gameobjects/Camera.java | 16 ++++++++++++++++ .../xyz/valnet/hadean/gameobjects/Clock.java | 2 +- .../hadean/gameobjects/worldobjects/Bed.java | 16 ++++++++++++---- .../hadean/gameobjects/worldobjects/Tree.java | 7 +++++-- .../gameobjects/worldobjects/items/Item.java | 6 +++--- .../java/xyz/valnet/hadean/util/Assets.java | 14 ++++++++++++++ 8 files changed, 55 insertions(+), 10 deletions(-) diff --git a/res/textures.png b/res/textures.png index a1aa83fa74f1ce1a249343eed8b3bf69dec1e700..d344013f3bc88a19b623d07a3bc487acde063e98 100644 GIT binary patch literal 27455 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 MxuadGY5(HC05541@&Et; literal 12447 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�a>_!se^yr12HzE7N3;ff% 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 HCggtr!SpQ@ diff --git a/src/main/java/xyz/valnet/engine/math/Vector4f.java b/src/main/java/xyz/valnet/engine/math/Vector4f.java index 252e9f3..a9a92f7 100644 --- a/src/main/java/xyz/valnet/engine/math/Vector4f.java +++ b/src/main/java/xyz/valnet/engine/math/Vector4f.java @@ -54,4 +54,8 @@ public class Vector4f implements Serializable { ); } + public Vector4i asInt() { + return new Vector4i((int)x, (int)y, (int)z, (int)w); + } + } diff --git a/src/main/java/xyz/valnet/hadean/gameobjects/Camera.java b/src/main/java/xyz/valnet/hadean/gameobjects/Camera.java index 05327df..4cb7cc6 100644 --- a/src/main/java/xyz/valnet/hadean/gameobjects/Camera.java +++ b/src/main/java/xyz/valnet/hadean/gameobjects/Camera.java @@ -1,11 +1,16 @@ package xyz.valnet.hadean.gameobjects; +import static xyz.valnet.engine.util.Math.lerp; + import xyz.valnet.engine.graphics.Drawing; import xyz.valnet.engine.graphics.Sprite; import xyz.valnet.engine.math.Vector2f; import xyz.valnet.engine.math.Vector4f; +import xyz.valnet.engine.math.Vector4i; import xyz.valnet.engine.scenegraph.GameObject; import xyz.valnet.hadean.interfaces.IWorldBoundsAdapter; +import xyz.valnet.hadean.util.Assets; +import xyz.valnet.hadean.util.Layers; public class Camera extends GameObject { @@ -76,5 +81,16 @@ public class Camera extends GameObject { Drawing.setLayer(layer + (((y + h) - minY) / (maxY - minY))); Drawing.drawSprite(sprite, (int)(screenPos.x), (int)(screenPos.y), (int)(tileWidth * w), (int)(tileWidth * h)); } + + public void drawProgressBar(float progress, Vector4f worldBox) { + int h = 6; + Vector4i box = world2Screen(worldBox).toXYWH().asInt(); + Drawing.setLayer(Layers.GENERAL_UI); + Assets.flat.pushColor(new Vector4f(0, 0, 0, 1)); + Assets.uiFrame.draw(box.x - h, box.y + box.w / 2 - h / 2, box.z + h * 2, h); + Assets.flat.swapColor(new Vector4f(1, 1, 0, 1)); + Assets.fillColor.draw(box.x + 1 - h, box.y + 1 + box.w / 2 - h / 2, (int)Math.round(lerp(0, box.z - 3 + h * 2, progress)) + 1, h - 2); + Assets.flat.popColor(); + } } diff --git a/src/main/java/xyz/valnet/hadean/gameobjects/Clock.java b/src/main/java/xyz/valnet/hadean/gameobjects/Clock.java index fd0dc02..0509358 100644 --- a/src/main/java/xyz/valnet/hadean/gameobjects/Clock.java +++ b/src/main/java/xyz/valnet/hadean/gameobjects/Clock.java @@ -12,7 +12,7 @@ public class Clock extends GameObject { @Override public void update(float dTime) { - time += 0.0004f; + time += 0.0002f * dTime; while (time >= 24) time -= 24; } diff --git a/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/Bed.java b/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/Bed.java index 755cc8b..e4ebe03 100644 --- a/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/Bed.java +++ b/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/Bed.java @@ -1,7 +1,5 @@ package xyz.valnet.hadean.gameobjects.worldobjects; -import static xyz.valnet.engine.util.Math.lerp; - import xyz.valnet.engine.math.Vector2i; import xyz.valnet.engine.math.Vector4f; import xyz.valnet.hadean.gameobjects.Job; @@ -44,12 +42,22 @@ public class Bed extends WorldObject implements IBuildable, IItemReceiver, IWork @Override public void render() { super.render(); + if(isBuilt()) { camera.draw(Layers.GROUND, Assets.bed, (int)x, (int)y, 1, 2); } else { - Assets.flat.pushColor(Vector4f.opacity(lerp(0.5f, 1.0f, work / maxWork))); + float p = work / maxWork; + float b = 4; + + Assets.flat.pushColor(new Vector4f(b, b, b, 0.5f)); camera.draw(Layers.GROUND, Assets.bed, (int)x, (int)y, 1, 2); Assets.flat.popColor(); + + if(logs > 0) { + camera.drawProgressBar(p, getWorldBox()); + } + // Assets.uiFrame.draw(box.x -3, box.y - 6, (int)Math.round(lerp(0, box.z + 6, p)), 4); + } } @@ -133,7 +141,7 @@ public class Bed extends WorldObject implements IBuildable, IItemReceiver, IWork public Detail[] getDetails() { return new Detail[] { new BooleanDetail("Built", isBuilt()), - new PercentDetail("Work", work / maxWork), + new PercentDetail("Work", work / maxWork, 1), new ObjectDetail("Logs", logs), }; } diff --git a/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/Tree.java b/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/Tree.java index e106ad9..ddc89d7 100644 --- a/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/Tree.java +++ b/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/Tree.java @@ -30,10 +30,13 @@ public class Tree extends WorldObject implements ITileThing, ISelectable, IWorka @Override public void render() { - Assets.flat.pushColor(new Vector4f(1 - getProgress(), 1 - getProgress(), 1 - getProgress(), 1.0f)); + // Assets.flat.pushColor(new Vector4f(1 - getProgress(), 1 - getProgress(), 1 - getProgress(), 1.0f)); camera.draw(Layers.AIR, Assets.tree, x - 1, y - 2, 3, 3); - Assets.flat.popColor(); + // Assets.flat.popColor(); if(chopJob != null) { + if(getProgress() > 0) { + camera.drawProgressBar(getProgress(), new Vector4f(x - 1, y - 2, x + 2, y + 1)); + } camera.draw(Layers.MARKERS, Assets.lilAxe, x, y); } } diff --git a/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/items/Item.java b/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/items/Item.java index e6653fb..11a60c9 100644 --- a/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/items/Item.java +++ b/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/items/Item.java @@ -56,9 +56,9 @@ public abstract class Item extends WorldObject implements ISelectable, ITileThin @Override public void renderAlpha() { if(haulJob != null) { - Assets.flat.pushColor(Vector4f.opacity(0.4f)); - camera.draw(Layers.GENERAL_UI, Assets.haulArrow, getWorldPosition()); - Assets.flat.popColor(); + // Assets.flat.pushColor(Vector4f.opacity(1f)); + camera.draw(Layers.MARKERS, Assets.haulArrow, getWorldPosition()); + // Assets.flat.popColor(); } } diff --git a/src/main/java/xyz/valnet/hadean/util/Assets.java b/src/main/java/xyz/valnet/hadean/util/Assets.java index 5cfc323..b4474fd 100644 --- a/src/main/java/xyz/valnet/hadean/util/Assets.java +++ b/src/main/java/xyz/valnet/hadean/util/Assets.java @@ -22,6 +22,8 @@ public class Assets { public static final Tile9 uiFrame; public static final Tile9 uiFrameLight; public static final Tile9 uiFrameDark; + public static final Tile9 fillColor; + public static final Sprite[] defaultTerrain; public static final Sprite[] growingRice; @@ -247,6 +249,18 @@ public class Assets { new Sprite(atlas, 15, 97, 2, 7), new Sprite(atlas, 17, 97, 7, 7) ); + + fillColor = new Tile9( + new Sprite(atlas, 44, 64, 1, 1), + new Sprite(atlas, 44, 64, 1, 1), + new Sprite(atlas, 44, 64, 1, 1), + new Sprite(atlas, 44, 64, 1, 1), + new Sprite(atlas, 44, 64, 1, 1), + new Sprite(atlas, 44, 64, 1, 1), + new Sprite(atlas, 44, 64, 1, 1), + new Sprite(atlas, 44, 64, 1, 1), + new Sprite(atlas, 44, 64, 1, 1) + ); uiFrame = new Tile9( new Sprite(atlas, 32, 80, 1, 1),