diff --git a/src/main/java/bzh/risotto/GameMap.java b/src/main/java/bzh/risotto/GameMap.java index fa76316..4ddd75d 100644 --- a/src/main/java/bzh/risotto/GameMap.java +++ b/src/main/java/bzh/risotto/GameMap.java @@ -51,13 +51,18 @@ public class GameMap { public void dig(Vector2 worldCoord) { Vector2 coord = tileMap.toTileMapCoord(worldCoord); + logger.debug("pos: " + coord); tileMap.setTile(13, (int) coord.x, (int) coord.y); - for (int i = -1; i < 2; i ++) { for (int j = -1; j < 2; j ++) { - Tile tile = tileMap.getTile( (int) coord.x + j, (int) coord.y + i); - if (!dirtTiles.contains(tile.getId())) { + Tile tile = null; + try { + tile = tileMap.getTile((int) coord.x + j, (int) coord.y + i); + } catch (IndexOutOfBoundsException e) { + logger.info("Out of world check", e); + } + if ( tile != null && !dirtTiles.contains(tile.getId())) { int tileType = getTileType((int) coord.x + j, (int) coord.y + i); int tileId = tileTypeToId(tileType); @@ -77,9 +82,14 @@ public class GameMap { int tileType = 0; for (int i = -1; i < 2; i ++) { for (int j = -1; j < 2; j ++) { - Tile tile = tileMap.getTile( coordX + j, coordY + i); + Tile tile = null; + try { + tile = tileMap.getTile(coordX + j, coordY + i); + } catch (IndexOutOfBoundsException e) { + logger.info("Out of world check", e); + } - if (!dirtTiles.contains(tile.getId())) { + if (tile != null && !dirtTiles.contains(tile.getId())) { tileType += (int) Math.pow(2, p); } @@ -96,9 +106,9 @@ public class GameMap { return switch (tileType) { case 2, 3, 6, 7, 71, 323, 327, 66, 322, 67, 258, 259, 263, 262, 326, 70 -> 10; // down case 128, 192, 448, 384, 385, 449, 453, 193, 132, 196, 452, 133, 197, 388, 389 -> 22; // up - case 8, 73, 72, 9, 329, 333, 328, 332, 77, 264, 268, 269, 12, 13 -> 17; // right - case 32, 288, 292, 36, 356, 357, 33, 97, 353, 96, 100, 101, 37, 293, 352 -> 15; // left - case 160, 161, 165, 229, 224, 228, 164 -> 21; // inner bot-left corner + case 8, 73, 72, 9, 329, 333, 328, 332, 77, 264, 268, 269, 12, 13, 76 -> 17; // right + case 32, 288, 292, 36, 356, 357, 33, 97, 353, 96, 100, 101, 37, 293, 352, 289 -> 15; // left + case 160, 161, 165, 229, 224, 228, 164, 225 -> 21; // inner bot-left corner case 10, 74, 330, 334, 266, 270, 78, 14 -> 11; // inner top-right corner case 34, 35, 99, 355, 290, 354, 291, 98 -> 9; // inner top-left corner case 136, 137, 393, 397, 140, 141, 392, 396 -> 23; // inner bot-right corner @@ -108,7 +118,7 @@ public class GameMap { case 42, 106, 362, 298 -> 29; // T down case 138, 394, 398, 142 -> 35; // T right case 227, 162, 226, 163 -> 28; // T left - case 38, 102, 358, 359, 294, 295, 39 -> 6; // top-left corner + case 38, 102, 358, 359, 294, 295, 39, 103 -> 6; // top-left corner case 204, 205, 461, 456, 457, 200, 201, 460 -> 20; // bot-left corner case 416, 417, 481, 485, 420, 484, 421, 480 -> 18; // bot-right corner case 11, 75, 79, 335, 267, 271, 351, 15 -> 8; // top-right corner diff --git a/src/main/java/bzh/risotto/Minesweeper.java b/src/main/java/bzh/risotto/Minesweeper.java index c2c585e..dd7259f 100644 --- a/src/main/java/bzh/risotto/Minesweeper.java +++ b/src/main/java/bzh/risotto/Minesweeper.java @@ -9,10 +9,14 @@ import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.utils.ScreenUtils; import com.badlogic.gdx.utils.viewport.FitViewport; -import org.lwjgl.glfw.GLFWDeallocateCallback; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + public class Minesweeper implements ApplicationListener { + private static final Logger log = LogManager.getLogger(Minesweeper.class); private FitViewport viewport; private SpriteBatch spriteBatch; private OrthographicCamera camera; @@ -20,6 +24,8 @@ public class Minesweeper implements ApplicationListener { private GameMap gameMap; + private Logger logger = LogManager.getLogger(); + @Override public void create() {