99% link between tiles when diging
This commit is contained in:
@@ -4,31 +4,25 @@ import bzh.risotto.tilemap.Tile;
|
|||||||
import bzh.risotto.tilemap.TileMap;
|
import bzh.risotto.tilemap.TileMap;
|
||||||
import bzh.risotto.tilemap.TileSet;
|
import bzh.risotto.tilemap.TileSet;
|
||||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
||||||
import com.badlogic.gdx.maps.tiled.TiledMap;
|
|
||||||
import com.badlogic.gdx.maps.tiled.TiledMapTileSet;
|
|
||||||
import com.badlogic.gdx.math.Vector2;
|
import com.badlogic.gdx.math.Vector2;
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
import java.net.Inet4Address;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
public class GameMap {
|
public class GameMap {
|
||||||
|
|
||||||
private TileSet tileSet;
|
private final TileSet tileSet;
|
||||||
private TileMap tileMap;
|
private final TileMap tileMap;
|
||||||
|
|
||||||
private List<Integer> DIRT_TILES;
|
private List<Integer> dirtTiles;
|
||||||
private Map<Integer, Integer> TILES_TYPE_TO_ID;
|
|
||||||
|
|
||||||
private Logger logger = LogManager.getLogger();
|
private final Logger logger = LogManager.getLogger();
|
||||||
|
|
||||||
public GameMap() {
|
public GameMap() {
|
||||||
|
|
||||||
this.tileSet = new TileSet("tileset.png", new Vector2(16,16), new Vector2(6,6));
|
this.tileSet = new TileSet("tileset.png", new Vector2(16,16), new Vector2(6,10));
|
||||||
List<List<Integer>> map = loadMap();
|
List<List<Integer>> map = loadMap();
|
||||||
this.tileMap = new TileMap(this.tileSet, map);
|
this.tileMap = new TileMap(this.tileSet, map);
|
||||||
this.tileMap.setTile(5,0,0);
|
this.tileMap.setTile(5,0,0);
|
||||||
@@ -65,7 +59,7 @@ public class GameMap {
|
|||||||
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 = tileMap.getTile((int) coord.x + j, (int) coord.y + i);
|
||||||
|
|
||||||
if (!DIRT_TILES.contains(tile.getId())) {
|
if (!dirtTiles.contains(tile.getId())) {
|
||||||
tileType += (int) Math.pow(2, p);
|
tileType += (int) Math.pow(2, p);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -88,76 +82,62 @@ public class GameMap {
|
|||||||
|
|
||||||
|
|
||||||
private int tileTypeToId(int tileType) {
|
private int tileTypeToId(int tileType) {
|
||||||
switch (tileType) {
|
return switch (tileType) {
|
||||||
case 0:
|
case 2, 3, 6, 7, 71, 323, 327, 66, 322, 67, 258, 259, 263, 262, 326, 70 -> 10; // down
|
||||||
return 5;
|
case 128, 192, 448, 384, 385, 449, 453, 193, 132, 196, 452, 133, 197, 388, 389 -> 22; // up
|
||||||
case 2, 3, 6, 7, 71, 323, 327, 66, 322, 67, 258, 259, 263, 262, 326, 70: // down
|
case 8, 73, 72, 9, 329, 333, 328, 332, 77, 264, 268, 269, 12, 13 -> 17; // right
|
||||||
return 10; // down
|
case 32, 288, 292, 36, 356, 357, 33, 97, 353, 96, 100, 101, 37, 293, 352 -> 15; // left
|
||||||
case 128, 192, 448, 384, 385, 449, 453, 193, 132, 196, 452, 133, 197, 388, 389 :
|
case 160, 161, 165, 229, 224, 228, 164 -> 21; // inner bot-left corner
|
||||||
return 22; // up
|
case 10, 74, 330, 334, 266, 270, 78, 14 -> 11; // inner top-right corner
|
||||||
case 8, 73, 72, 9, 329, 333, 328, 332, 77, 264, 268, 269, 12, 13:
|
case 34, 35, 99, 355, 290, 354, 291, 98 -> 9; // inner top-left corner
|
||||||
return 17; // right
|
case 136, 137, 393, 397, 140, 141, 392, 396 -> 23; // inner bot-right corner
|
||||||
case 32, 288, 292, 36, 356, 357, 33, 97, 353, 96, 100, 101, 37, 293, 352 :
|
case 40, 44, 45, 109, 365, 105, 361, 296, 360, 104, 364, 41, 297, 301, 108, 300 -> 45; // left-right corridor
|
||||||
return 15; // left
|
case 130, 134, 135, 199, 455, 391, 194, 195, 451, 198, 131, 387, 450, 454, 386, 390 -> 39; // top-down corridor
|
||||||
case 160, 161, 165, 229, 224, 228, 164:
|
case 168, 169, 173, 172 -> 34; // T up
|
||||||
return 21; // inner bot-left corner
|
case 42, 106, 362, 298 -> 29; // T down
|
||||||
case 10, 74, 330, 334, 266, 270, 78, 14:
|
case 138, 394, 398, 142 -> 35; // T right
|
||||||
return 11; // inner top-right corner
|
case 227, 162, 226, 163 -> 28; // T left
|
||||||
case 34, 35, 99, 355, 290, 354, 291, 98:
|
case 38, 102, 358, 359, 294, 295, 39 -> 6; // top-left corner
|
||||||
return 9; // inner top-left corner
|
case 204, 205, 461, 456, 457, 200, 201, 460 -> 20; // bot-left corner
|
||||||
case 136, 137, 393, 397, 140, 141, 392, 396:
|
case 416, 417, 481, 485, 420, 484, 421, 480 -> 18; // bot-right corner
|
||||||
return 23; // inner bot-right corner
|
case 11, 75, 79, 335, 267, 271, 351, 15 -> 8; // top-right corner
|
||||||
case 168, 169, 173, 172:
|
case 47, 111, 367, 303 -> 7; // up-straight
|
||||||
return 34; // T up
|
case 488, 496, 493, 492, 489 -> 19; // bot-straight
|
||||||
case 42, 106, 362, 298:
|
case 203, 459, 463, 207 -> 14; // left-straight
|
||||||
return 29; // T down
|
case 422, 486, 487, 423 -> 12; // right-straight
|
||||||
case 138, 394, 398, 142:
|
case 232, 233, 237, 236 -> 30;
|
||||||
return 35; // T right
|
case 418, 482, 483, 419 -> 24;
|
||||||
case 227, 162, 226, 163:
|
case 143, 399, 139, 395 -> 31;
|
||||||
return 28; // T left
|
case 46, 110, 366, 302 -> 25;
|
||||||
case 38, 102, 358, 359, 294, 295, 430, 39:
|
case 166, 167, 230, 231 -> 46;
|
||||||
return 6; // top-left corner
|
case 43, 299, 363, 107 -> 40;
|
||||||
case 204, 205, 461, 456, 457, 200, 201, 460:
|
case 202, 206, 462, 458 -> 41;
|
||||||
return 20; // bot-left corner
|
case 424, 428, 429, 425 -> 47;
|
||||||
case 416, 417, 481, 485, 420, 484, 421, 480:
|
case 235 -> 37; // right gateway
|
||||||
return 18; // bot-right corner
|
case 430 -> 38; // left gateway
|
||||||
case 11, 75, 79, 335, 267, 271, 351, 15:
|
case 175 -> 42; // top gateway
|
||||||
return 8; // top-right corner
|
case 490 -> 36; // bo gateway
|
||||||
case 47, 111, 367, 303:
|
case 239 -> 32; // inner top-right
|
||||||
return 7; // up-straight
|
case 431 -> 33; // inner top-left
|
||||||
case 488, 496, 493, 492:
|
case 491 -> 26; // inner bot-left
|
||||||
return 19; // bot-straight
|
case 494 -> 27; // inner bot-right
|
||||||
case 203, 459, 463, 207:
|
case 427 -> 44;
|
||||||
return 14; // left-stright
|
case 238 -> 43;
|
||||||
case 422, 486, 487, 423:
|
case 171 -> 54;
|
||||||
return 12; // left-stright
|
case 174 -> 55;
|
||||||
case 239:
|
case 234 -> 48;
|
||||||
return 32; // inner top-right
|
case 426 -> 49;
|
||||||
case 431:
|
case 495 -> 13; // center full
|
||||||
return 33; // inner top-left
|
case 170 -> 16; // center cross
|
||||||
case 491:
|
default -> 5;
|
||||||
return 26; // inner bot-left
|
};
|
||||||
case 494:
|
|
||||||
return 27; // inner bot-right
|
|
||||||
case 495:
|
|
||||||
return 13; // center full
|
|
||||||
|
|
||||||
case 170:
|
|
||||||
return 16; // center cross
|
|
||||||
default:
|
|
||||||
return 5;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void loadConstArrays() {
|
private void loadConstArrays() {
|
||||||
this.DIRT_TILES = new ArrayList<>();
|
this.dirtTiles = new ArrayList<>();
|
||||||
this.DIRT_TILES.add(0);
|
this.dirtTiles.add(0);
|
||||||
this.DIRT_TILES.add(1);
|
this.dirtTiles.add(1);
|
||||||
this.DIRT_TILES.add(2);
|
this.dirtTiles.add(2);
|
||||||
this.DIRT_TILES.add(4);
|
this.dirtTiles.add(4);
|
||||||
|
|
||||||
this.TILES_TYPE_TO_ID = new HashMap<>();
|
|
||||||
this.TILES_TYPE_TO_ID.put(1, 5);
|
|
||||||
this.TILES_TYPE_TO_ID.put(2, 22);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.9 KiB |
Reference in New Issue
Block a user