From 47099b3057828d1429859125b215affd5b7e6ec7 Mon Sep 17 00:00:00 2001 From: Valerie Date: Mon, 23 May 2022 19:10:03 -0400 Subject: [PATCH] starting hauling jobs --- res/textures.png | Bin 7199 -> 7263 bytes src/main/java/xyz/valnet/hadean/Tile.java | 14 +++- .../hadean/gameobjects/ITransferrable.java | 5 ++ .../xyz/valnet/hadean/gameobjects/Log.java | 27 +++++++- .../xyz/valnet/hadean/gameobjects/Pawn.java | 2 + .../valnet/hadean/gameobjects/Stockpile.java | 65 ++++++++++++++++++ .../valnet/hadean/gameobjects/Terrain.java | 14 +++- .../java/xyz/valnet/hadean/util/Assets.java | 2 + 8 files changed, 126 insertions(+), 3 deletions(-) create mode 100644 src/main/java/xyz/valnet/hadean/gameobjects/ITransferrable.java create mode 100644 src/main/java/xyz/valnet/hadean/gameobjects/Stockpile.java diff --git a/res/textures.png b/res/textures.png index 3d743c5bccf2f3e0e2d2a9f0f3e7c1f31883a94d..ca2df03eb50f4a4c3f47d6d693428099d338e342 100644 GIT binary patch delta 6853 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 delta 6747 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 diff --git a/src/main/java/xyz/valnet/hadean/Tile.java b/src/main/java/xyz/valnet/hadean/Tile.java index 4fa685e..cc54b5f 100644 --- a/src/main/java/xyz/valnet/hadean/Tile.java +++ b/src/main/java/xyz/valnet/hadean/Tile.java @@ -5,6 +5,7 @@ import java.util.List; import xyz.valnet.engine.graphics.Drawing; import xyz.valnet.engine.graphics.Sprite; +import xyz.valnet.engine.math.Vector2i; import xyz.valnet.engine.math.Vector4f; import xyz.valnet.engine.scenegraph.GameObject; import xyz.valnet.hadean.gameobjects.Camera; @@ -29,6 +30,10 @@ public class Tile extends GameObject { this.y = y; } + public Vector2i getCoords() { + return new Vector2i(x, y); + } + public void start() { camera = get(Camera.class); @@ -39,6 +44,13 @@ public class Tile extends GameObject { } } + public void placeThing(ITileThing thing) { + stuff.add(thing); + if(thing instanceof GameObject) { + add((GameObject)thing); + } + } + @Override public void update(float dTime) { for(ITileThing thing : stuff) { @@ -58,7 +70,7 @@ public class Tile extends GameObject { @Override public void render() { - Drawing.setLayer(2f); + Drawing.setLayer(Layers.TILES); Assets.flat.pushColor(color); camera.draw(sprite, x, y); Assets.flat.popColor(); diff --git a/src/main/java/xyz/valnet/hadean/gameobjects/ITransferrable.java b/src/main/java/xyz/valnet/hadean/gameobjects/ITransferrable.java new file mode 100644 index 0000000..737e47b --- /dev/null +++ b/src/main/java/xyz/valnet/hadean/gameobjects/ITransferrable.java @@ -0,0 +1,5 @@ +package xyz.valnet.hadean.gameobjects; + +public interface ITransferrable { + +} diff --git a/src/main/java/xyz/valnet/hadean/gameobjects/Log.java b/src/main/java/xyz/valnet/hadean/gameobjects/Log.java index 657d1de..156ab33 100644 --- a/src/main/java/xyz/valnet/hadean/gameobjects/Log.java +++ b/src/main/java/xyz/valnet/hadean/gameobjects/Log.java @@ -1,13 +1,14 @@ package xyz.valnet.hadean.gameobjects; import xyz.valnet.engine.graphics.Drawing; +import xyz.valnet.engine.math.Vector2i; import xyz.valnet.engine.math.Vector4f; import xyz.valnet.engine.scenegraph.GameObject; import xyz.valnet.hadean.Layers; import xyz.valnet.hadean.util.Action; import xyz.valnet.hadean.util.Assets; -public class Log extends GameObject implements ITileThing, ISelectable { +public class Log extends GameObject implements ITileThing, ISelectable, ITransferrable, IWorkable { private Camera camera; @@ -59,5 +60,29 @@ public class Log extends GameObject implements ITileThing, ISelectable { public String details() { return "A fat log"; } + + @Override + public boolean hasWork() { + // TODO Auto-generated method stub + return false; + } + + @Override + public Vector2i[] getWorablePositions() { + // TODO Auto-generated method stub + return null; + } + + @Override + public void doWork() { + // TODO Auto-generated method stub + + } + + @Override + public Vector2i getLocation() { + // TODO Auto-generated method stub + return null; + } } diff --git a/src/main/java/xyz/valnet/hadean/gameobjects/Pawn.java b/src/main/java/xyz/valnet/hadean/gameobjects/Pawn.java index ca215d4..0129bda 100644 --- a/src/main/java/xyz/valnet/hadean/gameobjects/Pawn.java +++ b/src/main/java/xyz/valnet/hadean/gameobjects/Pawn.java @@ -26,6 +26,8 @@ import xyz.valnet.hadean.util.Assets; public class Pawn extends GameObject implements ISelectable { + private ITransferrable carrying = null; + private float x = 0.5f + (int)(Math.random() * Terrain.WORLD_SIZE), y = 0.5f + (int)(Math.random() * Terrain.WORLD_SIZE); private float counter = 0; diff --git a/src/main/java/xyz/valnet/hadean/gameobjects/Stockpile.java b/src/main/java/xyz/valnet/hadean/gameobjects/Stockpile.java new file mode 100644 index 0000000..c4bcd5e --- /dev/null +++ b/src/main/java/xyz/valnet/hadean/gameobjects/Stockpile.java @@ -0,0 +1,65 @@ +package xyz.valnet.hadean.gameobjects; + +import xyz.valnet.engine.graphics.Drawing; +import xyz.valnet.engine.math.Vector4f; +import xyz.valnet.engine.scenegraph.GameObject; +import xyz.valnet.hadean.Layers; +import xyz.valnet.hadean.util.Action; +import xyz.valnet.hadean.util.Assets; + +public class Stockpile extends GameObject implements ITileThing, ISelectable { + + private int x, y; + private Camera camera; + + public Stockpile(int x, int y) { + this.x = x; + this.y = y; + } + + @Override + public void start() { + camera = get(Camera.class); + } + + @Override + public void render() { + Drawing.setLayer(Layers.GROUND); + camera.draw(Assets.stockpile, x, y); + } + + @Override + public boolean isWalkable() { + return true; + } + + @Override + public boolean shouldRemove() { + return false; + } + + @Override + public void onRemove() { + + } + + @Override + public Vector4f getWorldBox() { + return new Vector4f(x, y, x+1, y+1); + } + + @Override + public Action[] getActions() { + return new Action[] {}; + } + + @Override + public void runAction(Action action) { + } + + @Override + public String details() { + return ""; + } + +} diff --git a/src/main/java/xyz/valnet/hadean/gameobjects/Terrain.java b/src/main/java/xyz/valnet/hadean/gameobjects/Terrain.java index ad279c5..edad605 100644 --- a/src/main/java/xyz/valnet/hadean/gameobjects/Terrain.java +++ b/src/main/java/xyz/valnet/hadean/gameobjects/Terrain.java @@ -1,5 +1,6 @@ package xyz.valnet.hadean.gameobjects; +import xyz.valnet.engine.math.Vector2i; import xyz.valnet.engine.scenegraph.GameObject; import xyz.valnet.hadean.Tile; import xyz.valnet.hadean.pathfinding.IPathable; @@ -22,11 +23,22 @@ public class Terrain extends GameObject implements IPathable { add(tiles[i][j]); } } + + Tile randomTile = getRandomTile(); + Vector2i coords = randomTile.getCoords(); + Stockpile stockpile = new Stockpile(coords.x, coords.y); + randomTile.placeThing(stockpile); + camera = get(Camera.class); - camera.focus(WORLD_SIZE / 2, WORLD_SIZE / 2); } + private Tile getRandomTile() { + int x = (int) Math.floor(Math.random() * WORLD_SIZE); + int y = (int) Math.floor(Math.random() * WORLD_SIZE); + return getTile(x, y); + } + public Tile getTile(int x, int y) { return tiles[x][y]; } diff --git a/src/main/java/xyz/valnet/hadean/util/Assets.java b/src/main/java/xyz/valnet/hadean/util/Assets.java index 44b2932..44cc7bc 100644 --- a/src/main/java/xyz/valnet/hadean/util/Assets.java +++ b/src/main/java/xyz/valnet/hadean/util/Assets.java @@ -30,6 +30,7 @@ public class Assets { public static final Sprite log; public static final Sprite lilAxe; public static final Sprite haulArrow; + public static final Sprite stockpile; public static final SimpleShader flat; @@ -51,6 +52,7 @@ public class Assets { log = new Sprite(atlas, 48, 96, 16, 16); lilAxe = new Sprite(atlas, 64, 88, 16, 16); haulArrow = new Sprite(atlas, 80, 88, 16, 16); + stockpile = new Sprite(atlas, 40, 64, 16, 16); Map charset = new HashMap();