From 6e317799f1ee6eac68663989ddb93ffe02c40ff0 Mon Sep 17 00:00:00 2001 From: helori_ollivier Date: Thu, 12 Mar 2026 23:01:07 +0100 Subject: [PATCH] 99% link between tiles when diging --- src/main/java/bzh/risotto/GameMap.java | 140 +++++++++++-------------- src/main/resources/tileset.png | Bin 1466 -> 1967 bytes 2 files changed, 60 insertions(+), 80 deletions(-) diff --git a/src/main/java/bzh/risotto/GameMap.java b/src/main/java/bzh/risotto/GameMap.java index 404de45..952d3e5 100644 --- a/src/main/java/bzh/risotto/GameMap.java +++ b/src/main/java/bzh/risotto/GameMap.java @@ -4,31 +4,25 @@ import bzh.risotto.tilemap.Tile; import bzh.risotto.tilemap.TileMap; import bzh.risotto.tilemap.TileSet; 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 org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import java.net.Inet4Address; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; public class GameMap { - private TileSet tileSet; - private TileMap tileMap; + private final TileSet tileSet; + private final TileMap tileMap; - private List DIRT_TILES; - private Map TILES_TYPE_TO_ID; + private List dirtTiles; - private Logger logger = LogManager.getLogger(); + private final Logger logger = LogManager.getLogger(); 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> map = loadMap(); this.tileMap = new TileMap(this.tileSet, map); this.tileMap.setTile(5,0,0); @@ -65,7 +59,7 @@ public class GameMap { for (int j = -1; j < 2; j ++) { 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); } @@ -88,76 +82,62 @@ public class GameMap { private int tileTypeToId(int tileType) { - switch (tileType) { - case 0: - return 5; - case 2, 3, 6, 7, 71, 323, 327, 66, 322, 67, 258, 259, 263, 262, 326, 70: // down - return 10; // down - case 128, 192, 448, 384, 385, 449, 453, 193, 132, 196, 452, 133, 197, 388, 389 : - return 22; // up - case 8, 73, 72, 9, 329, 333, 328, 332, 77, 264, 268, 269, 12, 13: - return 17; // right - case 32, 288, 292, 36, 356, 357, 33, 97, 353, 96, 100, 101, 37, 293, 352 : - return 15; // left - case 160, 161, 165, 229, 224, 228, 164: - return 21; // inner bot-left corner - case 10, 74, 330, 334, 266, 270, 78, 14: - return 11; // inner top-right corner - case 34, 35, 99, 355, 290, 354, 291, 98: - return 9; // inner top-left corner - case 136, 137, 393, 397, 140, 141, 392, 396: - return 23; // inner bot-right corner - case 168, 169, 173, 172: - return 34; // T up - case 42, 106, 362, 298: - return 29; // T down - case 138, 394, 398, 142: - return 35; // T right - case 227, 162, 226, 163: - return 28; // T left - case 38, 102, 358, 359, 294, 295, 430, 39: - return 6; // top-left corner - case 204, 205, 461, 456, 457, 200, 201, 460: - return 20; // bot-left corner - case 416, 417, 481, 485, 420, 484, 421, 480: - return 18; // bot-right corner - case 11, 75, 79, 335, 267, 271, 351, 15: - return 8; // top-right corner - case 47, 111, 367, 303: - return 7; // up-straight - case 488, 496, 493, 492: - return 19; // bot-straight - case 203, 459, 463, 207: - return 14; // left-stright - case 422, 486, 487, 423: - return 12; // left-stright - case 239: - return 32; // inner top-right - case 431: - return 33; // inner top-left - case 491: - 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; - } + 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 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 + case 40, 44, 45, 109, 365, 105, 361, 296, 360, 104, 364, 41, 297, 301, 108, 300 -> 45; // left-right corridor + case 130, 134, 135, 199, 455, 391, 194, 195, 451, 198, 131, 387, 450, 454, 386, 390 -> 39; // top-down corridor + case 168, 169, 173, 172 -> 34; // T up + 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 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 + case 47, 111, 367, 303 -> 7; // up-straight + case 488, 496, 493, 492, 489 -> 19; // bot-straight + case 203, 459, 463, 207 -> 14; // left-straight + case 422, 486, 487, 423 -> 12; // right-straight + case 232, 233, 237, 236 -> 30; + case 418, 482, 483, 419 -> 24; + case 143, 399, 139, 395 -> 31; + case 46, 110, 366, 302 -> 25; + case 166, 167, 230, 231 -> 46; + case 43, 299, 363, 107 -> 40; + case 202, 206, 462, 458 -> 41; + case 424, 428, 429, 425 -> 47; + case 235 -> 37; // right gateway + case 430 -> 38; // left gateway + case 175 -> 42; // top gateway + case 490 -> 36; // bo gateway + case 239 -> 32; // inner top-right + case 431 -> 33; // inner top-left + case 491 -> 26; // inner bot-left + case 494 -> 27; // inner bot-right + case 427 -> 44; + case 238 -> 43; + case 171 -> 54; + case 174 -> 55; + case 234 -> 48; + case 426 -> 49; + case 495 -> 13; // center full + case 170 -> 16; // center cross + default -> 5; + }; } private void loadConstArrays() { - this.DIRT_TILES = new ArrayList<>(); - this.DIRT_TILES.add(0); - this.DIRT_TILES.add(1); - this.DIRT_TILES.add(2); - this.DIRT_TILES.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); + this.dirtTiles = new ArrayList<>(); + this.dirtTiles.add(0); + this.dirtTiles.add(1); + this.dirtTiles.add(2); + this.dirtTiles.add(4); } } diff --git a/src/main/resources/tileset.png b/src/main/resources/tileset.png index 7cb15a97cf5d223671dd7147d24353da1d2e62ce..1c7579b50f2b905e9c7bdce011a8fd2c2d901c64 100644 GIT binary patch delta 1718 zcmV;n21)t43$G857Yd*V0{{R3#IBjXksff&AB)zfN>su^+qx)i#pjgUmOnIiXo3Fede_3M&x5)d~&%G_(fxSV0 zOwVUZzrXqO&!40Lv{1+J+{;MZ8&Gb~XG5R>TLJj}&Ed1Xhu@zhz?wt#+(*g>P!4~~ z@oyah-XQJaAA9_iZmGUOOP~UjAS;-ljnDHKCjJK7vkXT4+zLQ{+*98la~@0h83SK4UdcSy_LuTy8av{eK{R0b%v9Lhep)0u5y@BOV9#N(AYr~n%QAS1r= z(diSjEVt71RrDzTZetat@d|CD^;GwdpS6xoi+o?$mZn@(;#7e2c$D;Si7eB9NH$te z^**8&jQ%DBK;a_MQe8xK$_K!h(qobKZMFyoWLzWxSUcF11-gUHUDyzLE%+|iT7Xyb z8V*6iA;Ipz+0SbkfPaJRiT?i&fHqv^i@rW)_JaP%|LDI1#O>hk{ItcnodLK%@;~|q z#@}Uw8+LgE-jDo`{(omDq>f=HRtObj-o)wg8B*YMH$$5`zFz4=BL?YSFNNH>n4S17NEF zdH%P;PG#8`wq(=Fh#f$(Z&{}MT;{27>mnMq20#*sDnMi_W~8Ip>Ko7mbbt|O+ekpg zraPJF1tui*pas}~|ApP?8uSAbQuJV}{2hV+rLE`zCZy^?yr2h|(8u*aBn1AK^(Ccx{1Hk?L%Ao|NPW%U71fU{|Y(=*PQ(l6=*u!DF0H~Td` zz~eid{}Z0?&Hhx&dF$^3=l4pW^n7pk7kVcFIRSS7pj&>vxBCk?=m9TS!hq{k0_S_P zKh>yKf(O8)9Wlhu%nV z0L#koQ9g`Cr}-;Ru;}P-e;Gf8~A%kNZg1*7;xZ zzq}t3028`@R_Rvqzq}tp072I;^8HZ{Bx2+5$LMeC!K5BI>IqLTTs=_h0a8zRdg1DU zVzYX}(+gJ*6x+NXLVs5ejC$ZDy)gA)Vq5n^I$fWx2bk^Y1?oZBiB3I0Y)>yb7xD9d z0$bDrbG<-+ar+*D|0ngpR4>q90K8HUC<0^o2XVfCck2P(HT*pR z{R1AqJv~qWO#i_6J_4Vs^#B4y)Bm&{q_LRmfV$T?XZ3*CvELV2{-^bT*s1G-d7X1s z4>Wx+uXE1ofvFEl|7kri^+D-Btp~O~$o|uM;OK+spVtR3-xt~ap?yVmpLbuxoA!G& zZQ&SyvHIZN7g=-ReEtCd>wJG5!2JCnmp~r{(C+`QHc=mdeHj4j z1GGN?VClhU0Ooq|34pI2xb3S4KEPKGd;mNl|MU9bBLGu9_`ov#7tkQxk35`B+5i9m M07*qoM6N<$g1)0^9smFU delta 1213 zcmV;u1Va0-54sDG7Ybkq0{{R3)kcR3ks63}UToCo zXlLI4%~k~!@CQ%N?p|z$Oqz0J_z;y(Y7Q#r(UDWW`zS6xdgek5{nvBvx!vn482BPV zaonFHqshW#SJ6%ObPBiP4Z{Zj%K_}+9gzfpuEG;1aQ-?$N6+EsJIIj@*bJ<{Z|}c< zzvJ`k%l81#RZY*HGO;62l>0^m3g8mJ_jhz3_253dwE$;ym18d^EXI(|!A@5e-R^l-4B}c@0|0OYfMopS*~trY99xq9F1pg+R(6pu zQ^13kLk*AD3E4r<`@xPhtwqTX0Ql=l;cuR7Q%eq74s|bH6Gom10qE4CMm%hPB3SYQ zP?ofA(tOO0rUJ5B)B-T6)s#8fh0aY_iZn60$!B83lr)hk@G>QG*zoG7Nd(}($m%KW z{|^96SNb9EkCA>zds+XbeE_ho*6;Y{>{yQg++NmyX>VBlP6vFVry1~ZS^uTIVf8z~ z`mvrl&1QaasSRy4uj8J8aSg`Ma<01|-h0$8?VN;o~eI|CX(AE5YgjyUY-^du9$kO8%PfDW9f|Ba62 zTJVPqsKW;i>bDj3ztuZ@AOq_1f&G9FWI%tM51N34{l|PT3g~@4sO6fE%YYv9K`GaK zTn6-<4@!!}xD4ncKIj&IJK}Iu?B3#oPPt};G%wc+eDE3JtndM^|I(rF0ldivM2CA3 z9mld$^hbO^%QM&0-IVDM_<-6w$8@~>QvCrRaQlOlAM6j9{Ubi0_M|_6o1L(K#0S)# z@Pifofql#e)c&VG_~{S+#mA7pEJl+lKjd>T>kl-U@`HC0pb;H^V9F0x5Kb#A08_qT zgwtH#mjEXG;NcvM`-67?27J*WEY=__0F3z|^T8|t6=2E_i4W!hr~p%bfO9YnKnI`; zOXrWGeb8D481aQhSUSLj9|#`|15g2G`~ZAlrvc~y3SVf1wE*DR_n{aY?H|%MW&HsU zU;xgLIhu!@YP$+SP{@qxU)t25yJfoJ!B5AFPLdCg3p7#&402WUuvid!Vi)cVr0A`!0xvx_` b2!!_=&ynro$M1z^00000NkvXXu0mjfW`|9L