diff --git a/core/src/main/java/Collector/Character/InputController.java b/core/src/main/java/Collector/Character/InputController.java index 0d45753..bc8dd20 100644 --- a/core/src/main/java/Collector/Character/InputController.java +++ b/core/src/main/java/Collector/Character/InputController.java @@ -1,5 +1,6 @@ package Collector.Character; +import Collector.Main; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Input; import com.badlogic.gdx.graphics.g2d.Animation; @@ -9,16 +10,16 @@ import Collector.Restrictions; import java.util.HashMap; -import static Collector.Main.cam; - public class InputController implements Restrictions { private final Player player; int i = 0; private final HashMap> animations; + private Mouse mouse; - public InputController(Player player) { + public InputController(Player player, Mouse mouse) { this.player = player; + this.mouse = mouse; animations = new HashMap<>(); animations.put("Up", new Animation<>(1 / 4f, player.textureAtlas.findRegions(player.getSpriteName() + "_" + "Up"))); animations.put("UpRight", new Animation<>(1 / 4f, player.textureAtlas.findRegions(player.getSpriteName() + "_" + "UpRight"))); @@ -33,16 +34,16 @@ public class InputController implements Restrictions { public void handleInput() { i++; if (Gdx.input.isKeyPressed(Input.Keys.Q)) { - cam.zoom += 5; + Main.cam.zoom += 5; } if (Gdx.input.isKeyPressed(Input.Keys.E)) { - cam.zoom -= 5; + Main.cam.zoom -= 5; } if ((Gdx.input.isButtonJustPressed(Input.Buttons.LEFT) || Gdx.input.isButtonJustPressed(Input.Buttons.RIGHT) )&& i > KEY_DELAY) { 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; + Main.cam.unproject(mousePos); + int x = mouse.getSelectedX(mousePos) >> TILE_SHIFT; + int y = mouse.getSelectedY(mousePos) >> TILE_SHIFT; if(Gdx.input.isButtonJustPressed(Input.Buttons.LEFT)) { i = 0; Chunks.placeBlock(x, y, "wood"); @@ -58,21 +59,21 @@ public class InputController implements Restrictions { player.setAnimation(animations.get("UpLeft")); Player.addX(-MOVEMENT_SPEED); Player.addY(MOVEMENT_SPEED); - cam.translate(-MOVEMENT_SPEED, MOVEMENT_SPEED); + Main.cam.translate(-MOVEMENT_SPEED, MOVEMENT_SPEED); } else if (Gdx.input.isKeyPressed(Input.Keys.W) && Gdx.input.isKeyPressed(Input.Keys.D) && i > KEY_DELAY) { i = 0; player.setAnimation(animations.get("UpRight")); Player.addX(MOVEMENT_SPEED); Player.addY(MOVEMENT_SPEED); - cam.translate(MOVEMENT_SPEED, MOVEMENT_SPEED); + Main.cam.translate(MOVEMENT_SPEED, MOVEMENT_SPEED); } else if (Gdx.input.isKeyPressed(Input.Keys.S) && Gdx.input.isKeyPressed(Input.Keys.A) && i > KEY_DELAY) { i = 0; player.setAnimation(animations.get("DownLeft")); Player.addX(-MOVEMENT_SPEED); Player.addY(-MOVEMENT_SPEED); - cam.translate(-MOVEMENT_SPEED, -MOVEMENT_SPEED); + Main.cam.translate(-MOVEMENT_SPEED, -MOVEMENT_SPEED); } else if (Gdx.input.isKeyPressed(Input.Keys.S) && Gdx.input.isKeyPressed(Input.Keys.D) && i > KEY_DELAY) { i = 0; @@ -80,33 +81,32 @@ public class InputController implements Restrictions { Player.addX(MOVEMENT_SPEED); Player.addY(-MOVEMENT_SPEED); - cam.translate(MOVEMENT_SPEED, -MOVEMENT_SPEED); + Main.cam.translate(MOVEMENT_SPEED, -MOVEMENT_SPEED); } else if (Gdx.input.isKeyPressed(Input.Keys.A) && i > KEY_DELAY) { i = 0; player.setAnimation(animations.get("Left")); Player.addX(-MOVEMENT_SPEED); - cam.translate(-MOVEMENT_SPEED, 0); + Main.cam.translate(-MOVEMENT_SPEED, 0); } else if (Gdx.input.isKeyPressed(Input.Keys.D) && i > KEY_DELAY) { i = 0; player.setAnimation(animations.get("Right")); Player.addX(MOVEMENT_SPEED); - cam.translate(MOVEMENT_SPEED, 0); + Main.cam.translate(MOVEMENT_SPEED, 0); } else if (Gdx.input.isKeyPressed(Input.Keys.S) && i > KEY_DELAY) { i = 0; player.setAnimation(animations.get("Down")); Player.addY(-MOVEMENT_SPEED); - cam.translate(0, -MOVEMENT_SPEED); + Main.cam.translate(0, -MOVEMENT_SPEED); } if (Gdx.input.isKeyPressed(Input.Keys.W) && i > KEY_DELAY) { i = 0; player.setAnimation(animations.get("Up")); Player.addY(MOVEMENT_SPEED); - cam.translate(0, MOVEMENT_SPEED); + Main.cam.translate(0, MOVEMENT_SPEED); } - cam.update(); + Main.cam.update(); } - } diff --git a/core/src/main/java/Collector/Character/Mouse.java b/core/src/main/java/Collector/Character/Mouse.java index eb2263a..2f7f713 100644 --- a/core/src/main/java/Collector/Character/Mouse.java +++ b/core/src/main/java/Collector/Character/Mouse.java @@ -1,10 +1,7 @@ package Collector.Character; -import Collector.Main; import Collector.Restrictions; -import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.Texture; -import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.math.Vector3; public class Mouse implements Restrictions { @@ -14,25 +11,15 @@ public class Mouse implements Restrictions { this.crosshair = new Texture("assets/crosshair.png"); } - public void selectedTile(SpriteBatch batch) { - Vector3 mousePos = new Vector3(Gdx.input.getX(), Gdx.input.getY(), 0); - Main.cam.unproject(mousePos); - int x = getSelectedX(mousePos); - int y = getSelectedY(mousePos); - batch.draw(crosshair, x, y); + public Texture getCrosshair() { + return crosshair; } - public static int getSelectedX(Vector3 mousePos) { + public int getSelectedX(Vector3 mousePos) { return ((int)(mousePos.x)>>4)<<4; } - public static int getSelectedY(Vector3 mousePos) { + public int getSelectedY(Vector3 mousePos) { return ((int)(mousePos.y)>>4)<<4; } - - public void render(SpriteBatch batch) { - selectedTile(batch); - //System.out.println("X = " + getTileX(cam) + " Y = "+ getTileY(cam)); - } - } diff --git a/core/src/main/java/Collector/Dimension/Block.java b/core/src/main/java/Collector/Dimension/Block.java index 09c946f..5e77709 100644 --- a/core/src/main/java/Collector/Dimension/Block.java +++ b/core/src/main/java/Collector/Dimension/Block.java @@ -1,9 +1,5 @@ package Collector.Dimension; -import com.badlogic.gdx.graphics.Texture; - -import java.util.HashMap; - public class Block { private final String name; diff --git a/core/src/main/java/Collector/Dimension/WorldRenderer.java b/core/src/main/java/Collector/Dimension/WorldRenderer.java index b6a3e5b..af26440 100644 --- a/core/src/main/java/Collector/Dimension/WorldRenderer.java +++ b/core/src/main/java/Collector/Dimension/WorldRenderer.java @@ -2,24 +2,29 @@ package Collector.Dimension; import Collector.Character.Player; import Collector.Main; +import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.g2d.Batch; import com.badlogic.gdx.graphics.g2d.SpriteBatch; +import com.badlogic.gdx.math.Vector3; import com.github.czyzby.kiwi.util.tuple.immutable.Triple; import Collector.Character.InputController; import Collector.Character.Mouse; import Collector.Restrictions; +import java.util.Iterator; + public class WorldRenderer implements Restrictions { private final Mouse mouse; private final InputController inputController; - public WorldRenderer(Mouse mouse, InputController inputController) { - this.mouse = mouse; + public WorldRenderer(InputController inputController, Mouse mouse) { this.inputController = inputController; + this.mouse = mouse; } public void drawWorld(Batch batch, int layer) { - for (Triple chunkpair : Chunks.blocks.keySet()) { + for (Iterator> iterator = Chunks.blocks.keySet().iterator(); iterator.hasNext(); ) { + Triple chunkpair = iterator.next(); if (chunkpair.getThird() == layer) { batch.draw( BlockMaterials.textures.get(Chunks.blocks.get(chunkpair).getName()), @@ -30,13 +35,21 @@ public class WorldRenderer implements Restrictions { } } + private void mouseCrosshair(SpriteBatch batch) { + Vector3 mousePos = new Vector3(Gdx.input.getX(), Gdx.input.getY(), 0); + Main.cam.unproject(mousePos); + int x = mouse.getSelectedX(mousePos); + int y = mouse.getSelectedY(mousePos); + batch.draw(mouse.getCrosshair(), x, y); + } + public void render(SpriteBatch batch, float timeSinceLastUpdate) { - inputController.handleInput(); + //Higher means draws in a lower layer drawWorld(batch,0); - drawWorld(batch,1); - batch.setProjectionMatrix(Main.cam.combined); - Main.cam.update(); batch.draw(Player.getAnimation().getKeyFrame(timeSinceLastUpdate, true), Player.x, Player.y,TILE_SIZE,TILE_SIZE); - mouse.render(batch); + drawWorld(batch,1); + mouseCrosshair(batch); + inputController.handleInput(); + batch.setProjectionMatrix(Main.cam.combined); } } diff --git a/core/src/main/java/Collector/Main.java b/core/src/main/java/Collector/Main.java index 9432637..468643b 100644 --- a/core/src/main/java/Collector/Main.java +++ b/core/src/main/java/Collector/Main.java @@ -37,14 +37,14 @@ public class Main extends ApplicationAdapter { mouse = new Mouse(); gui = new GUI(fitViewport); player = new Player(cam, 0, 0); - inputController = new InputController(player); - worldRenderer = new WorldRenderer(mouse, inputController); + inputController = new InputController(player,mouse); + worldRenderer = new WorldRenderer(inputController,mouse); batch = new SpriteBatch(); BlockMaterials.create(); Chunks.create(); - cam.translate(TILE_SIZE >> 1, TILE_SIZE >> 1); + //cam.translate(TILE_SIZE, TILE_SIZE); cam.zoom = 25f; } @@ -54,9 +54,7 @@ public class Main extends ApplicationAdapter { timeSinceLastUpdate += Gdx.graphics.getDeltaTime(); //Accumulate delta time batch.begin(); - if(timeSinceLastUpdate > 1/10f){ - worldRenderer.render(batch,timeSinceLastUpdate); - } + worldRenderer.render(batch,timeSinceLastUpdate); delta += Gdx.graphics.getDeltaTime(); if (delta > RENDER_TIME) { @@ -64,7 +62,7 @@ public class Main extends ApplicationAdapter { World.loadChunks(); World.unloadChunks(); } - + cam.update(); gui.render(); batch.end(); }