corrected out of map bug

This commit is contained in:
helori_ollivier
2026-03-13 09:26:57 +01:00
parent 9442cc8b14
commit 06f49b2b23
2 changed files with 26 additions and 10 deletions

View File

@@ -51,13 +51,18 @@ public class GameMap {
public void dig(Vector2 worldCoord) { public void dig(Vector2 worldCoord) {
Vector2 coord = tileMap.toTileMapCoord(worldCoord); Vector2 coord = tileMap.toTileMapCoord(worldCoord);
logger.debug("pos: " + coord);
tileMap.setTile(13, (int) coord.x, (int) coord.y); tileMap.setTile(13, (int) coord.x, (int) coord.y);
for (int i = -1; i < 2; i ++) { for (int i = -1; i < 2; i ++) {
for (int j = -1; j < 2; j ++) { for (int j = -1; j < 2; j ++) {
Tile tile = tileMap.getTile( (int) coord.x + j, (int) coord.y + i); Tile tile = null;
if (!dirtTiles.contains(tile.getId())) { 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 tileType = getTileType((int) coord.x + j, (int) coord.y + i);
int tileId = tileTypeToId(tileType); int tileId = tileTypeToId(tileType);
@@ -77,9 +82,14 @@ public class GameMap {
int tileType = 0; int tileType = 0;
for (int i = -1; i < 2; i ++) { for (int i = -1; i < 2; i ++) {
for (int j = -1; j < 2; j ++) { 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); tileType += (int) Math.pow(2, p);
} }
@@ -96,9 +106,9 @@ public class GameMap {
return switch (tileType) { return switch (tileType) {
case 2, 3, 6, 7, 71, 323, 327, 66, 322, 67, 258, 259, 263, 262, 326, 70 -> 10; // down 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 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 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 -> 15; // left 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 -> 21; // inner bot-left corner 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 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 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 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 42, 106, 362, 298 -> 29; // T down
case 138, 394, 398, 142 -> 35; // T right case 138, 394, 398, 142 -> 35; // T right
case 227, 162, 226, 163 -> 28; // T left 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 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 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 case 11, 75, 79, 335, 267, 271, 351, 15 -> 8; // top-right corner

View File

@@ -9,10 +9,14 @@ import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.utils.ScreenUtils; import com.badlogic.gdx.utils.ScreenUtils;
import com.badlogic.gdx.utils.viewport.FitViewport; 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 { public class Minesweeper implements ApplicationListener {
private static final Logger log = LogManager.getLogger(Minesweeper.class);
private FitViewport viewport; private FitViewport viewport;
private SpriteBatch spriteBatch; private SpriteBatch spriteBatch;
private OrthographicCamera camera; private OrthographicCamera camera;
@@ -20,6 +24,8 @@ public class Minesweeper implements ApplicationListener {
private GameMap gameMap; private GameMap gameMap;
private Logger logger = LogManager.getLogger();
@Override @Override
public void create() { public void create() {