From cb9d3a4107bbefc274dde7a70e7ac155174e36fb Mon Sep 17 00:00:00 2001 From: Solargale Date: Fri, 10 Apr 2020 08:37:31 -0600 Subject: [PATCH] Added block placement --- core/assets/roof.png | Bin 0 -> 2960 bytes core/assets/sand.png | Bin 2994 -> 2156 bytes core/assets/wall.png | Bin 0 -> 1380 bytes .../mygdx/game/Character/InputController.java | 47 ++++++++++-------- core/src/com/mygdx/game/Character/Mouse.java | 6 +-- core/src/com/mygdx/game/Dimension/Block.java | 18 +++++-- .../mygdx/game/Dimension/BlockMaterials.java | 17 +------ core/src/com/mygdx/game/Dimension/Chunks.java | 37 ++++++++++---- core/src/com/mygdx/game/Dimension/World.java | 1 - .../mygdx/game/Dimension/WorldRenderer.java | 6 +-- core/src/com/mygdx/game/Main.java | 2 + core/src/com/mygdx/game/Restrictions.java | 4 +- core/src/com/mygdx/game/Storage.java | 4 ++ 13 files changed, 81 insertions(+), 61 deletions(-) create mode 100644 core/assets/roof.png create mode 100644 core/assets/wall.png create mode 100644 core/src/com/mygdx/game/Storage.java diff --git a/core/assets/roof.png b/core/assets/roof.png new file mode 100644 index 0000000000000000000000000000000000000000..21534abea4aead6a410e68ee1f69f90702cabe93 GIT binary patch literal 2960 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 diff --git a/core/assets/wall.png b/core/assets/wall.png new file mode 100644 index 0000000000000000000000000000000000000000..df0596da385e38cfb86e642a76b2c3c5e53064e0 GIT binary patch literal 1380 zcmV-q1)KVbP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+U=K7lH?`~hTl0wj({YD#Bnf~s@x#Q&kx4V^z6>o z?j|p(YA6F1APIfKJrmBq{v6>C6pkE2QuADLjwq?5!W9FLSE;L|m{z-A;yrkghi8Hz z67+JtdfxIAa>jbz^0xI<$n}Gwa_))ab)s%X?AyR?aT^l448*<_)vZW)TTa*eu`TD~ z_VEaNUmSaWg#k~PO%mg*nJl4A9L;jU*f}Oc+`6ufT;@JKZbh%};aW8w<-jc-08)Y>KiqdoR77bRw0`bn2N;JN+zY9Z0ny zBMlvSSQtLas1LP`^_%(&)M!)VMQSdzhZ>}2w+fn{6P?UJj1vL4ff|S*u_v?WloC&J zlUXc`TcHdmb;9X1iGg4`iFMG!Zj%d$;(x*|m@jVpZ^?y;?kCB8%k6vA`uurri`aDy zXHcWy_MHdpv)55XdW&<2U(L^b_-f);`?sREqPL>AqPL>AqPL>|hawsH0|Ng&hQ9$H zPPjRTuMk!M00D$)LqkwWLqi~Na&Km7Y-IodD3N`UJxIe)6opUIic%^Lb`TNCP@OD@ zia2T&iclfc3avVryz~#6G$bi5j)H5!!JoydgNw7S4z7YA_ygkP=%nZ(CEk}5TEzI^ z@;=Uc=WySBfY7Kg%?gbJnr@rvWJ1j5R>kgDgb;>6H7qmBn3JRweAm}K0(`%V^DO^+ zf399NZ!sVs63;Tjw23!}r#Eeb^FDEum1LFpoOsNn28kcJu6X>$x#+UMGoxlEJx?4Z z7KnqD#ry4>Mi&%mL5ejN3qXHXo z+I3Par0G22;~#YW61fy|mBGldfGRY|t{?mle$Un_Oip-7kp$57;y528K=&@ttUJ#4 zvEwvPfZ#K5rMLan1~BtUdcCd1j)1;x;NrTiDSN=>4lwX!$foQ{K`Nn80N&5&n{q(^ zEf8Mw=GHpL=>w3VS*31(gF|4nNZIQ?@9ycG+rM{O^ZNny;Bs}*n0fU8000JJOGiWi z@Bq31V%h?bkN^Mx32;bRa{vG?BLDy{BLR4&KXw2B00(qQO+^Rf1PTHRD&Y5V;{X5v z8FWQhbVF}#ZDnqB07G(RVRU6=Aa`kWXdp*PO;A^X4i^9b03At0K~y-)W4yI8;y(ig mfQf-ZFlxZ40iy;C76Sm(B?9{OEAVsx0000>UTN- literal 0 HcmV?d00001 diff --git a/core/src/com/mygdx/game/Character/InputController.java b/core/src/com/mygdx/game/Character/InputController.java index 1d807ad..66ca8b7 100644 --- a/core/src/com/mygdx/game/Character/InputController.java +++ b/core/src/com/mygdx/game/Character/InputController.java @@ -3,6 +3,8 @@ package com.mygdx.game.Character; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Input; import com.badlogic.gdx.graphics.g2d.Animation; +import com.badlogic.gdx.math.Vector3; +import com.mygdx.game.Dimension.Chunks; import com.mygdx.game.Restrictions; import static com.mygdx.game.Main.cam; @@ -21,61 +23,62 @@ public class InputController implements Restrictions { if (Gdx.input.isKeyPressed(Input.Keys.Q)) { cam.zoom -= 5; } + if (Gdx.input.isTouched()) { + Vector3 mousePos = new Vector3(Gdx.input.getX(), Gdx.input.getY(), 0); + cam.unproject(mousePos); + int x = Mouse.getSelectedX(mousePos) >> TILE_SHIFT; + int y = Mouse.getSelectedY(mousePos) >> TILE_SHIFT; + + Chunks.placeBlock(x,y,"wood"); + } if (Gdx.input.isKeyPressed(Input.Keys.UP) && Gdx.input.isKeyPressed(Input.Keys.LEFT) && i > KEY_DELAY) { i = 0; directionAnimation("UpLeft"); Player.addX(-MOVEMENT_SPEED); Player.addY(MOVEMENT_SPEED); - cam.translate(-MOVEMENT_SPEED,MOVEMENT_SPEED); - } - else if (Gdx.input.isKeyPressed(Input.Keys.UP)&& Gdx.input.isKeyPressed(Input.Keys.RIGHT) &&i > KEY_DELAY) { + cam.translate(-MOVEMENT_SPEED, MOVEMENT_SPEED); + } else if (Gdx.input.isKeyPressed(Input.Keys.UP) && Gdx.input.isKeyPressed(Input.Keys.RIGHT) && i > KEY_DELAY) { i = 0; directionAnimation("UpRight"); Player.addX(MOVEMENT_SPEED); Player.addY(MOVEMENT_SPEED); - cam.translate(MOVEMENT_SPEED,MOVEMENT_SPEED); - } - else if (Gdx.input.isKeyPressed(Input.Keys.DOWN)&& Gdx.input.isKeyPressed(Input.Keys.LEFT) && i > KEY_DELAY) { + cam.translate(MOVEMENT_SPEED, MOVEMENT_SPEED); + } else if (Gdx.input.isKeyPressed(Input.Keys.DOWN) && Gdx.input.isKeyPressed(Input.Keys.LEFT) && i > KEY_DELAY) { i = 0; directionAnimation("DownLeft"); Player.addX(-MOVEMENT_SPEED); Player.addY(-MOVEMENT_SPEED); - cam.translate(-MOVEMENT_SPEED,-MOVEMENT_SPEED); - } - else if (Gdx.input.isKeyPressed(Input.Keys.DOWN)&& Gdx.input.isKeyPressed(Input.Keys.RIGHT) && i > KEY_DELAY) { + cam.translate(-MOVEMENT_SPEED, -MOVEMENT_SPEED); + } else if (Gdx.input.isKeyPressed(Input.Keys.DOWN) && Gdx.input.isKeyPressed(Input.Keys.RIGHT) && i > KEY_DELAY) { i = 0; directionAnimation("DownRight"); Player.addX(MOVEMENT_SPEED); Player.addY(-MOVEMENT_SPEED); - cam.translate(MOVEMENT_SPEED,-MOVEMENT_SPEED); - } - - else if (Gdx.input.isKeyPressed(Input.Keys.LEFT) && i > KEY_DELAY) { + cam.translate(MOVEMENT_SPEED, -MOVEMENT_SPEED); + } else if (Gdx.input.isKeyPressed(Input.Keys.LEFT) && i > KEY_DELAY) { i = 0; directionAnimation("Left"); Player.addX(-MOVEMENT_SPEED); - cam.translate(-MOVEMENT_SPEED,0); - } - else if (Gdx.input.isKeyPressed(Input.Keys.RIGHT)&& i > KEY_DELAY) { + cam.translate(-MOVEMENT_SPEED, 0); + } else if (Gdx.input.isKeyPressed(Input.Keys.RIGHT) && i > KEY_DELAY) { i = 0; directionAnimation("Right"); Player.addX(MOVEMENT_SPEED); - cam.translate(MOVEMENT_SPEED,0); - } - else if (Gdx.input.isKeyPressed(Input.Keys.DOWN)&& i > KEY_DELAY) { + cam.translate(MOVEMENT_SPEED, 0); + } else if (Gdx.input.isKeyPressed(Input.Keys.DOWN) && i > KEY_DELAY) { i = 0; directionAnimation("Down"); Player.addY(-MOVEMENT_SPEED); - cam.translate(0,-MOVEMENT_SPEED); + cam.translate(0, -MOVEMENT_SPEED); } - if (Gdx.input.isKeyPressed(Input.Keys.UP)&& i > KEY_DELAY) { + if (Gdx.input.isKeyPressed(Input.Keys.UP) && i > KEY_DELAY) { i = 0; directionAnimation("Up"); Player.addY(MOVEMENT_SPEED); - cam.translate(0,MOVEMENT_SPEED); + cam.translate(0, MOVEMENT_SPEED); } cam.update(); diff --git a/core/src/com/mygdx/game/Character/Mouse.java b/core/src/com/mygdx/game/Character/Mouse.java index 9b75805..e10a87a 100644 --- a/core/src/com/mygdx/game/Character/Mouse.java +++ b/core/src/com/mygdx/game/Character/Mouse.java @@ -12,7 +12,6 @@ import static com.mygdx.game.Main.cam; public class Mouse implements Restrictions { Texture crosshair = new Texture("core/assets/crosshair.png"); - public void selectedTile(SpriteBatch batch){ Vector3 mousePos = new Vector3( Gdx.input.getX(), Gdx.input.getY(),0); cam.unproject(mousePos); @@ -21,11 +20,11 @@ public class Mouse implements Restrictions { batch.draw(crosshair, x, y); } - public int getSelectedX(Vector3 mousePos) { + public static int getSelectedX(Vector3 mousePos) { return ((int)(mousePos.x)>>4)<<4; } - public int getSelectedY(Vector3 mousePos) { + public static int getSelectedY(Vector3 mousePos) { return ((int)(mousePos.y)>>4)<<4; } @@ -41,7 +40,6 @@ public class Mouse implements Restrictions { return (getSelectedY(mousePos) + Player.getY()>>1)/TILE_SIZE; } - public void render(SpriteBatch batch) { selectedTile(batch); //System.out.println("X = " + getTileX(cam) + " Y = "+ getTileY(cam)); diff --git a/core/src/com/mygdx/game/Dimension/Block.java b/core/src/com/mygdx/game/Dimension/Block.java index cdb93b0..b88c6f8 100644 --- a/core/src/com/mygdx/game/Dimension/Block.java +++ b/core/src/com/mygdx/game/Dimension/Block.java @@ -1,19 +1,31 @@ package com.mygdx.game.Dimension; +import com.badlogic.gdx.graphics.Texture; + public class Block { private String name; + private Texture texture; private Boolean harvestable; private Boolean breakable; private Boolean passable; public Block(String name) { this.name = name; - this.harvestable = harvestable; - this.breakable = breakable; - this.passable = passable; + this.texture = new Texture("core/assets/" + name + ".png"); + this.harvestable = true; + this.breakable = true; + this.passable = false; } public String getName() { return name; } + + public Texture getTexture() { + return texture; + } + + public void setTexture(Texture texture) { + this.texture = texture; + } } diff --git a/core/src/com/mygdx/game/Dimension/BlockMaterials.java b/core/src/com/mygdx/game/Dimension/BlockMaterials.java index 97e0953..7e42cad 100644 --- a/core/src/com/mygdx/game/Dimension/BlockMaterials.java +++ b/core/src/com/mygdx/game/Dimension/BlockMaterials.java @@ -1,20 +1,13 @@ package com.mygdx.game.Dimension; -import com.badlogic.gdx.graphics.Texture; - import java.util.HashMap; public class BlockMaterials { public static HashMap materials = new HashMap<>(); - public static HashMap textures = new HashMap<>(); //Private so the singleton can't be instantiated private BlockMaterials() {} - public static Texture getTexture(String material) { - return textures.get(material); - } - public static void create(){ materials.put("grass",new Block("grass")); materials.put("wood",new Block("wood")); @@ -23,13 +16,7 @@ public class BlockMaterials { materials.put("snow",new Block("snow")); materials.put("sand",new Block("sand")); materials.put("air",new Block("air")); - - textures.put("grass", new Texture("core/assets/grass.png")); - textures.put("wood", new Texture("core/assets/wood.png")); - textures.put("water", new Texture("core/assets/water.png")); - textures.put("stone", new Texture("core/assets/stone.png")); - textures.put("snow", new Texture("core/assets/snow.png")); - textures.put("sand", new Texture("core/assets/sand.png")); - textures.put("air", new Texture("core/assets/air.png")); + materials.put("roof",new Block("roof")); + materials.put("wall",new Block("wall")); } } diff --git a/core/src/com/mygdx/game/Dimension/Chunks.java b/core/src/com/mygdx/game/Dimension/Chunks.java index beab482..319adfe 100644 --- a/core/src/com/mygdx/game/Dimension/Chunks.java +++ b/core/src/com/mygdx/game/Dimension/Chunks.java @@ -1,6 +1,7 @@ //https://www.redblobgames.com/maps/terrain-from-noise/ package com.mygdx.game.Dimension; +import com.github.czyzby.kiwi.util.tuple.immutable.Pair; import com.github.czyzby.kiwi.util.tuple.immutable.Triple; import com.mygdx.game.OpenSimplexNoise; @@ -8,9 +9,28 @@ import java.util.HashMap; import static com.mygdx.game.Restrictions.*; -public class Chunks { +public class Chunks{ + + public static void create(){ + int i = 10; + setBlock(3+i,2,"wall"); + setBlock(4+i,2,"wall"); + setBlock(3+i,3,"roof"); + setBlock(4+i,3,"roof"); + } + + public static void setBlock(int x, int y, String name){ + buildings.put(new Pair<>(x,y),new Block(name)); + } + + public static void placeBlock(int x, int y, String name){ + Triple triple = new Triple<>(x, y,1); + Chunks.blocks.replace(triple, Chunks.blocks.get(triple), new Block(name)); + } + public static HashMap, Block> blocks = new HashMap<>(); - private long seed = SEED; + + public static HashMap, Block> buildings = new HashMap<>(); public void ungenerateChunk(int x, int y) { int startX = x << CHUNK_SHIFT; @@ -56,21 +76,17 @@ public class Chunks { } public Block getBuildings(int x, int y) { - if(x == 2 && y == 2) return new Block("wood"); - if(x == 2 && y == 1) return new Block("wood"); - if(x == 1 && y == 2) return new Block("wood"); - if(x == 1 && y == 1) return new Block("wood"); - return new Block("air"); + return buildings.getOrDefault(new Pair<>(x,y),new Block("air")); } public double noise1(double nx, double ny) { - OpenSimplexNoise gen1 = new OpenSimplexNoise(seed+1); + OpenSimplexNoise gen1 = new OpenSimplexNoise(SEED+1); return gen1.eval(nx, ny)/2 + 0.5; } public double noise2(double nx, double ny) { - OpenSimplexNoise gen2 = new OpenSimplexNoise(seed); + OpenSimplexNoise gen2 = new OpenSimplexNoise(SEED); return gen2.eval(nx, ny)/2 + 0.5; } @@ -153,7 +169,8 @@ public class Chunks { return "TropicalRainForest"; } - public Boolean isEmpty(int x, int y){ + public static Boolean isEmpty(int x, int y){ return blocks.get(new Triple<>(x * 8, y * 8,0)) == null; } + } diff --git a/core/src/com/mygdx/game/Dimension/World.java b/core/src/com/mygdx/game/Dimension/World.java index 748f80a..5c52aac 100644 --- a/core/src/com/mygdx/game/Dimension/World.java +++ b/core/src/com/mygdx/game/Dimension/World.java @@ -56,4 +56,3 @@ public class World { } } - diff --git a/core/src/com/mygdx/game/Dimension/WorldRenderer.java b/core/src/com/mygdx/game/Dimension/WorldRenderer.java index 0c50d83..10323eb 100644 --- a/core/src/com/mygdx/game/Dimension/WorldRenderer.java +++ b/core/src/com/mygdx/game/Dimension/WorldRenderer.java @@ -20,11 +20,9 @@ public class WorldRenderer implements Restrictions { public void drawWorld(Batch batch, int layer) { for (Triple chunkpair : Chunks.blocks.keySet()) { - String name = null; if(chunkpair.getThird() == layer) { - name = Chunks.blocks.get(chunkpair).getName(); batch.draw( - BlockMaterials.getTexture(name), + Chunks.blocks.get(chunkpair).getTexture(), chunkpair.getFirst() << TILE_SHIFT, chunkpair.getSecond() << TILE_SHIFT ); @@ -33,9 +31,9 @@ public class WorldRenderer implements Restrictions { } public void render(SpriteBatch batch) { + inputController.handleInput(); drawWorld(batch,0); drawWorld(batch,1); - inputController.handleInput(); batch.setProjectionMatrix(cam.combined); cam.update(); mouse.render(batch); diff --git a/core/src/com/mygdx/game/Main.java b/core/src/com/mygdx/game/Main.java index 42b0fda..fcc2d53 100644 --- a/core/src/com/mygdx/game/Main.java +++ b/core/src/com/mygdx/game/Main.java @@ -9,6 +9,7 @@ import com.badlogic.gdx.utils.viewport.FitViewport; import com.mygdx.game.Character.Mouse; import com.mygdx.game.Character.Player; import com.mygdx.game.Dimension.BlockMaterials; +import com.mygdx.game.Dimension.Chunks; import com.mygdx.game.Dimension.World; import com.mygdx.game.Dimension.WorldRenderer; import com.mygdx.game.UI.GUI; @@ -31,6 +32,7 @@ public class Main extends ApplicationAdapter { cam = new OrthographicCamera(VIEWPORT_WIDTH, VIEWPORT_HEIGHT); fitViewport = new FitViewport(VIEWPORT_WIDTH,VIEWPORT_HEIGHT, cam); BlockMaterials.create(); + Chunks.create(); //Starting location of the player cam.translate(TILE_SIZE >> 1, TILE_SIZE >> 1); diff --git a/core/src/com/mygdx/game/Restrictions.java b/core/src/com/mygdx/game/Restrictions.java index bf33889..31e7c78 100644 --- a/core/src/com/mygdx/game/Restrictions.java +++ b/core/src/com/mygdx/game/Restrictions.java @@ -6,7 +6,7 @@ public interface Restrictions { float VIEWPORT_HEIGHT = 9/2f; float VIEWPORT_WIDTH = 16/2f; - int MOVEMENT_SPEED = 1; + int MOVEMENT_SPEED = 2; int KEY_DELAY = 0; int TILE_SIZE = 16; @@ -19,5 +19,5 @@ public interface Restrictions { //int SUPER_CHUNK_SHIFT = 0; int RENDER_DISTANCE = 3; - float RENDER_TIME = 1f; + float RENDER_TIME = 1/60f; } diff --git a/core/src/com/mygdx/game/Storage.java b/core/src/com/mygdx/game/Storage.java new file mode 100644 index 0000000..59b41b2 --- /dev/null +++ b/core/src/com/mygdx/game/Storage.java @@ -0,0 +1,4 @@ +package com.mygdx.game; + +public class Storage { +}