diff --git a/core/src/com/mygdx/game/Block.java b/core/src/com/mygdx/game/Block.java index 5dc72c5..e93c798 100644 --- a/core/src/com/mygdx/game/Block.java +++ b/core/src/com/mygdx/game/Block.java @@ -1,10 +1,18 @@ package com.mygdx.game; +import com.badlogic.gdx.graphics.Texture; + public class Block { private String material; + private Texture texture; + + public Block(){ + material = null; + } public Block(String tempMaterial) { material = tempMaterial; + texture = new Texture("core/assets/"+tempMaterial+".png"); } public String getMaterial() { @@ -14,4 +22,12 @@ public class Block { public void setMaterial(String material) { this.material = material; } + + public Texture getTexture() { + return texture; + } + + public void setTexture(Texture texture) { + this.texture = texture; + } } diff --git a/core/src/com/mygdx/game/InputController.java b/core/src/com/mygdx/game/InputController.java new file mode 100644 index 0000000..20c21f0 --- /dev/null +++ b/core/src/com/mygdx/game/InputController.java @@ -0,0 +1,44 @@ +package com.mygdx.game; + +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.Input; +import com.badlogic.gdx.graphics.OrthographicCamera; +import com.badlogic.gdx.math.MathUtils; + +public class InputController { + + private OrthographicCamera cam; + + public InputController(OrthographicCamera cam) { + this.cam = cam; + } + + public void handleInput() { + if (Gdx.input.isKeyPressed(Input.Keys.A)) { + cam.zoom += 0.02; + } + if (Gdx.input.isKeyPressed(Input.Keys.Q)) { + cam.zoom -= 0.02; + } + if (Gdx.input.isKeyPressed(Input.Keys.LEFT)) { + cam.translate(-3, 0, 0); + } + if (Gdx.input.isKeyPressed(Input.Keys.RIGHT)) { + cam.translate(3, 0, 0); + } + if (Gdx.input.isKeyPressed(Input.Keys.DOWN)) { + cam.translate(0, -3, 0); + } + if (Gdx.input.isKeyPressed(Input.Keys.UP)) { + cam.translate(0, 3, 0); + } + + cam.zoom = MathUtils.clamp(cam.zoom, 0.1f, 100/cam.viewportWidth); + + float effectiveViewportWidth = cam.viewportWidth * cam.zoom; + float effectiveViewportHeight = cam.viewportHeight * cam.zoom; + + cam.position.x = MathUtils.clamp(cam.position.x, effectiveViewportWidth / 2f, 100 - effectiveViewportWidth / 2f); + cam.position.y = MathUtils.clamp(cam.position.y, effectiveViewportHeight / 2f, 100 - effectiveViewportHeight / 2f); + } +} diff --git a/core/src/com/mygdx/game/Main.java b/core/src/com/mygdx/game/Main.java index 16dd0ae..91b4703 100644 --- a/core/src/com/mygdx/game/Main.java +++ b/core/src/com/mygdx/game/Main.java @@ -2,15 +2,8 @@ package com.mygdx.game; import com.badlogic.gdx.ApplicationAdapter; import com.badlogic.gdx.Gdx; -import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.GL20; -import com.badlogic.gdx.graphics.OrthographicCamera; -import com.badlogic.gdx.graphics.Texture; -import com.badlogic.gdx.graphics.g2d.Batch; import com.badlogic.gdx.graphics.g2d.SpriteBatch; -import javafx.util.Pair; - -import java.util.HashMap; public class Main extends ApplicationAdapter { private SpriteBatch batch; diff --git a/core/src/com/mygdx/game/World.java b/core/src/com/mygdx/game/World.java index 1c1515f..8703036 100644 --- a/core/src/com/mygdx/game/World.java +++ b/core/src/com/mygdx/game/World.java @@ -1,5 +1,6 @@ package com.mygdx.game; +import com.badlogic.gdx.graphics.Texture; import javafx.util.Pair; import java.util.HashMap; @@ -17,20 +18,21 @@ public class World { fillWorld(); } - public Map, Block> getBlocks() { - return blocks; - } - public void addTile(int x, int y, Block block){ this.blocks.put(new Pair<>(x,y),block); } + public Block getTile(int x, int y){ + return this.blocks.get(new Pair<>(x,y)); + } + + public Texture getTileTexture(int x, int y){ + return this.blocks.get(new Pair<>(x,y)).getTexture(); + } + public void fillWorld(){ this.addTile(1,1,new Block("grass")); - this.addTile(1,2,new Block("grass")); - this.addTile(1,3,new Block("grass")); - this.addTile(-1,-2,new Block("grass")); - + this.addTile(0,0,new Block("grass")); } } diff --git a/core/src/com/mygdx/game/WorldRenderer.java b/core/src/com/mygdx/game/WorldRenderer.java index ad008ca..3337be0 100644 --- a/core/src/com/mygdx/game/WorldRenderer.java +++ b/core/src/com/mygdx/game/WorldRenderer.java @@ -3,45 +3,25 @@ package com.mygdx.game; import com.badlogic.gdx.graphics.OrthographicCamera; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.Batch; -import com.badlogic.gdx.graphics.g2d.Sprite; -import com.badlogic.gdx.graphics.g2d.SpriteBatch; -import javafx.util.Pair; - -import java.util.HashMap; -import java.util.Map; public class WorldRenderer { private Texture texture; private OrthographicCamera cam; private World world; private Player player; - + private InputController inputController; public WorldRenderer(World world, Player player) { this.player = player; this.world = world; - texture = new Texture("core/assets/grass.png"); - cam = new OrthographicCamera(10, 7); - cam.position.set(this.player.getX(), this.player.getY(),0); - } - - public WorldRenderer(OrthographicCamera cam, World world, Player player) { - this.cam = cam; - this.world = world; - this.player = player; - - texture = new Texture("core/assets/grass.png"); - cam.zoom = 1; - - cam = new OrthographicCamera(10, 7); - cam.position.set(player.getX(), player.getY(),0); + inputController = new InputController(cam); } public void render(Batch batch){ - cam.position.x = player.getX(); - cam.position.y = player.getY(); + inputController.handleInput(); + batch.setProjectionMatrix(cam.combined); drawWorld(batch, player); cam.update(); } @@ -49,7 +29,9 @@ public class WorldRenderer { private void drawWorld(Batch batch,Player player) { for(int x = player.getX()-10; x