diff --git a/src/game/Main.java b/src/game/Main.java index cd360df..57c14e4 100644 --- a/src/game/Main.java +++ b/src/game/Main.java @@ -124,6 +124,7 @@ public class Main implements Runnable { if (glfwWindowShouldClose(gameWindow) == GL_TRUE) { running = false; } + break; case PAUSED: // TODO: Make a pause menu diff --git a/src/game/entity/Player.java b/src/game/entity/Player.java index 8a45c4b..bf7dd9c 100644 --- a/src/game/entity/Player.java +++ b/src/game/entity/Player.java @@ -90,6 +90,10 @@ public class Player extends Entity{ Shader.PLAYER.disable(); } + public float getX() { + return position.x; + } + public float getY() { return position.y; } @@ -97,4 +101,11 @@ public class Player extends Entity{ private void setColor() { texture = Options.getBallTexture(); } + + public void setPosition(float x, float y) { + this.position.x = x; + this.position.y = y; + } + + } diff --git a/src/game/level/Level.java b/src/game/level/Level.java index 8953281..5b12c7a 100644 --- a/src/game/level/Level.java +++ b/src/game/level/Level.java @@ -13,6 +13,8 @@ public class Level { private Entity[] entities; private float originX, originY; // Where the 'origin' of the level is the lower left of the floor area + private static final int SPRITE_PIXELS = 64; + public Level() { currentLevel = -1; loadLevel(); @@ -54,6 +56,7 @@ public class Level { public void update() { updateTiles(); updateEntities(); + handleCollisions(); } public void render() { @@ -97,8 +100,19 @@ public class Level { } private void playerWallCollisions() { - boolean collided = false; + // Check for collisions, flip flag, if flag is true move player +// boolean collided = false; - // Check for collisions, flip flag, move player back + for (Tile[] tileRow : tiles) { + for (Tile tile : tileRow) { + if (tile.isWall()) { + if ((2 * tile.getX() - .5f < player.getX() + .25f && 2 * tile.getX() + .5f > player.getX() + .25f) || ((2 * tile.getX() - .5f < player.getX() - .25f && 2 * tile.getX() + .5f > player.getX() - .25f))){ + if ((2 * tile.getY() - .5f < player.getY() + .25f && 2 * tile.getY() + .5f > player.getY() + .25f) || ((2 * tile.getY() - .5f < player.getY() - .25f && 2 * tile.getY() + .5f > player.getY() - .25f))){ + player.setPosition(0f, 0f); + } + } + } + } + } } } diff --git a/src/game/level/tiles/Tile.java b/src/game/level/tiles/Tile.java index e1ba4f4..9314ef5 100644 --- a/src/game/level/tiles/Tile.java +++ b/src/game/level/tiles/Tile.java @@ -55,5 +55,19 @@ public abstract class Tile { public abstract void update(); + public float getSize() { + return SIZE; + } + + public float getX() { + return position.x; + } + public float getY() { + return position.y; + } + + public boolean isWall() { + return isWall; + } }