diff --git a/core/assets-raw/sprites/blocks/extra/cross.png b/core/assets-raw/sprites/blocks/extra/cross-1.png similarity index 100% rename from core/assets-raw/sprites/blocks/extra/cross.png rename to core/assets-raw/sprites/blocks/extra/cross-1.png diff --git a/core/assets-raw/sprites/blocks/extra/cross-2.png b/core/assets-raw/sprites/blocks/extra/cross-2.png new file mode 100644 index 0000000000..bb68312a60 Binary files /dev/null and b/core/assets-raw/sprites/blocks/extra/cross-2.png differ diff --git a/core/assets-raw/sprites/blocks/production/quartzextractor.png b/core/assets-raw/sprites/blocks/production/quartzextractor.png index a1b7ecca1c..dc16631e3f 100644 Binary files a/core/assets-raw/sprites/blocks/production/quartzextractor.png and b/core/assets-raw/sprites/blocks/production/quartzextractor.png differ diff --git a/core/assets-raw/sprites/blocks/tech/shieldprojector.png b/core/assets-raw/sprites/blocks/tech/shieldprojector.png new file mode 100644 index 0000000000..528cd08109 Binary files /dev/null and b/core/assets-raw/sprites/blocks/tech/shieldprojector.png differ diff --git a/core/assets-raw/sprites/blocks/turrets/block.png b/core/assets-raw/sprites/blocks/turrets/block-1.png similarity index 100% rename from core/assets-raw/sprites/blocks/turrets/block.png rename to core/assets-raw/sprites/blocks/turrets/block-1.png diff --git a/core/assets-raw/sprites/blocks/turrets/block-2x2.png b/core/assets-raw/sprites/blocks/turrets/block-2.png similarity index 100% rename from core/assets-raw/sprites/blocks/turrets/block-2x2.png rename to core/assets-raw/sprites/blocks/turrets/block-2.png diff --git a/core/assets-raw/sprites/blocks/turrets/block-3x3.png b/core/assets-raw/sprites/blocks/turrets/block-3.png similarity index 100% rename from core/assets-raw/sprites/blocks/turrets/block-3x3.png rename to core/assets-raw/sprites/blocks/turrets/block-3.png diff --git a/core/assets-raw/sprites/blocks/turrets/chainturret.png b/core/assets-raw/sprites/blocks/turrets/chainturret.png index e731a828f2..dab2e4df60 100644 Binary files a/core/assets-raw/sprites/blocks/turrets/chainturret.png and b/core/assets-raw/sprites/blocks/turrets/chainturret.png differ diff --git a/core/assets-raw/sprites/blocks/turrets/flakturret.png b/core/assets-raw/sprites/blocks/turrets/flakturret.png new file mode 100644 index 0000000000..6f5abdcde7 Binary files /dev/null and b/core/assets-raw/sprites/blocks/turrets/flakturret.png differ diff --git a/core/assets-raw/sprites/blocks/turrets/machineturret.png b/core/assets-raw/sprites/blocks/turrets/gatlingturret.png similarity index 100% rename from core/assets-raw/sprites/blocks/turrets/machineturret.png rename to core/assets-raw/sprites/blocks/turrets/gatlingturret.png diff --git a/core/assets-raw/sprites/blocks/turrets/laserturret.png b/core/assets-raw/sprites/blocks/turrets/laserturret.png index 7452832d41..f672bccb40 100644 Binary files a/core/assets-raw/sprites/blocks/turrets/laserturret.png and b/core/assets-raw/sprites/blocks/turrets/laserturret.png differ diff --git a/core/assets-raw/sprites/blocks/turrets/magmaturret.png b/core/assets-raw/sprites/blocks/turrets/magmaturret.png new file mode 100644 index 0000000000..d0056317ba Binary files /dev/null and b/core/assets-raw/sprites/blocks/turrets/magmaturret.png differ diff --git a/core/assets-raw/sprites/blocks/turrets/megarepairturret.png b/core/assets-raw/sprites/blocks/turrets/megarepairturret.png index e4c5166d07..97612b9499 100644 Binary files a/core/assets-raw/sprites/blocks/turrets/megarepairturret.png and b/core/assets-raw/sprites/blocks/turrets/megarepairturret.png differ diff --git a/core/assets-raw/sprites/blocks/turrets/mortarturret.png b/core/assets-raw/sprites/blocks/turrets/mortarturret.png deleted file mode 100644 index 3435a9f0ca..0000000000 Binary files a/core/assets-raw/sprites/blocks/turrets/mortarturret.png and /dev/null differ diff --git a/core/assets-raw/sprites/blocks/turrets/sniperturret.png b/core/assets-raw/sprites/blocks/turrets/railgunturret.png similarity index 100% rename from core/assets-raw/sprites/blocks/turrets/sniperturret.png rename to core/assets-raw/sprites/blocks/turrets/railgunturret.png diff --git a/core/assets-raw/sprites/blocks/turrets/teslaturret.png b/core/assets-raw/sprites/blocks/turrets/teslaturret.png new file mode 100644 index 0000000000..9342bb805b Binary files /dev/null and b/core/assets-raw/sprites/blocks/turrets/teslaturret.png differ diff --git a/core/assets-raw/sprites/blocks/turrets/titancannon.png b/core/assets-raw/sprites/blocks/turrets/titancannon.png index cda526dc61..0c0b0d1b4f 100644 Binary files a/core/assets-raw/sprites/blocks/turrets/titancannon.png and b/core/assets-raw/sprites/blocks/turrets/titancannon.png differ diff --git a/core/assets-raw/sprites/blocks/turrets/waveturret.png b/core/assets-raw/sprites/blocks/turrets/waveturret.png deleted file mode 100644 index 7ca8d8a3f8..0000000000 Binary files a/core/assets-raw/sprites/blocks/turrets/waveturret.png and /dev/null differ diff --git a/core/assets-raw/sprites/blank.png b/core/assets-raw/sprites/effects/blank.png similarity index 100% rename from core/assets-raw/sprites/blank.png rename to core/assets-raw/sprites/effects/blank.png diff --git a/core/assets-raw/sprites/bullet.png b/core/assets-raw/sprites/effects/bullet.png similarity index 100% rename from core/assets-raw/sprites/bullet.png rename to core/assets-raw/sprites/effects/bullet.png diff --git a/core/assets-raw/sprites/chainbullet.png b/core/assets-raw/sprites/effects/chainbullet.png similarity index 100% rename from core/assets-raw/sprites/chainbullet.png rename to core/assets-raw/sprites/effects/chainbullet.png diff --git a/core/assets-raw/sprites/enemyarrow.png b/core/assets-raw/sprites/effects/enemyarrow.png similarity index 100% rename from core/assets-raw/sprites/enemyarrow.png rename to core/assets-raw/sprites/effects/enemyarrow.png diff --git a/core/assets-raw/sprites/laser.png b/core/assets-raw/sprites/effects/laser.png similarity index 100% rename from core/assets-raw/sprites/laser.png rename to core/assets-raw/sprites/effects/laser.png diff --git a/core/assets-raw/sprites/laserend.png b/core/assets-raw/sprites/effects/laserend.png similarity index 100% rename from core/assets-raw/sprites/laserend.png rename to core/assets-raw/sprites/effects/laserend.png diff --git a/core/assets-raw/sprites/laserfull.png b/core/assets-raw/sprites/effects/laserfull.png similarity index 100% rename from core/assets-raw/sprites/laserfull.png rename to core/assets-raw/sprites/effects/laserfull.png diff --git a/core/assets-raw/sprites/shell.png b/core/assets-raw/sprites/effects/shell.png similarity index 100% rename from core/assets-raw/sprites/shell.png rename to core/assets-raw/sprites/effects/shell.png diff --git a/core/assets-raw/sprites/shot-long.png b/core/assets-raw/sprites/effects/shot-long.png similarity index 100% rename from core/assets-raw/sprites/shot-long.png rename to core/assets-raw/sprites/effects/shot-long.png diff --git a/core/assets-raw/sprites/shot.png b/core/assets-raw/sprites/effects/shot.png similarity index 100% rename from core/assets-raw/sprites/shot.png rename to core/assets-raw/sprites/effects/shot.png diff --git a/core/assets-raw/sprites/titanshell.png b/core/assets-raw/sprites/effects/titanshell.png similarity index 100% rename from core/assets-raw/sprites/titanshell.png rename to core/assets-raw/sprites/effects/titanshell.png diff --git a/core/assets-raw/sprites/items/item-biomatter.png b/core/assets-raw/sprites/items/item-biomatter.png new file mode 100644 index 0000000000..6276d33e52 Binary files /dev/null and b/core/assets-raw/sprites/items/item-biomatter.png differ diff --git a/core/assets-raw/sprites/icon-coal.png b/core/assets-raw/sprites/items/item-coal.png similarity index 100% rename from core/assets-raw/sprites/icon-coal.png rename to core/assets-raw/sprites/items/item-coal.png diff --git a/core/assets-raw/sprites/icon-dirium.png b/core/assets-raw/sprites/items/item-dirium.png similarity index 100% rename from core/assets-raw/sprites/icon-dirium.png rename to core/assets-raw/sprites/items/item-dirium.png diff --git a/core/assets-raw/sprites/icon-glass.png b/core/assets-raw/sprites/items/item-glass.png similarity index 100% rename from core/assets-raw/sprites/icon-glass.png rename to core/assets-raw/sprites/items/item-glass.png diff --git a/core/assets-raw/sprites/icon-iron.png b/core/assets-raw/sprites/items/item-iron.png similarity index 100% rename from core/assets-raw/sprites/icon-iron.png rename to core/assets-raw/sprites/items/item-iron.png diff --git a/core/assets-raw/sprites/icon-quartz.png b/core/assets-raw/sprites/items/item-quartz.png similarity index 100% rename from core/assets-raw/sprites/icon-quartz.png rename to core/assets-raw/sprites/items/item-quartz.png diff --git a/core/assets-raw/sprites/icon-silicon.png b/core/assets-raw/sprites/items/item-silicon.png similarity index 100% rename from core/assets-raw/sprites/icon-silicon.png rename to core/assets-raw/sprites/items/item-silicon.png diff --git a/core/assets-raw/sprites/icon-steel.png b/core/assets-raw/sprites/items/item-steel.png similarity index 100% rename from core/assets-raw/sprites/icon-steel.png rename to core/assets-raw/sprites/items/item-steel.png diff --git a/core/assets-raw/sprites/icon-stone.png b/core/assets-raw/sprites/items/item-stone.png similarity index 100% rename from core/assets-raw/sprites/icon-stone.png rename to core/assets-raw/sprites/items/item-stone.png diff --git a/core/assets-raw/sprites/icon-titanium.png b/core/assets-raw/sprites/items/item-titanium.png similarity index 100% rename from core/assets-raw/sprites/icon-titanium.png rename to core/assets-raw/sprites/items/item-titanium.png diff --git a/core/assets-raw/sprites/icon-uranium.png b/core/assets-raw/sprites/items/item-uranium.png similarity index 100% rename from core/assets-raw/sprites/icon-uranium.png rename to core/assets-raw/sprites/items/item-uranium.png diff --git a/core/assets/sprites/sprites.atlas b/core/assets/sprites/sprites.atlas index 59aceb007b..5ed9a11423 100644 --- a/core/assets/sprites/sprites.atlas +++ b/core/assets/sprites/sprites.atlas @@ -11,65 +11,58 @@ backgrounds/background orig: 492, 380 offset: 0, 0 index: -1 -blank - rotate: false - xy: 231, 105 - size: 1, 1 - orig: 1, 1 - offset: 0, 0 - index: -1 blocks/environment/blackrock1 rotate: false - xy: 580, 158 + xy: 723, 266 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/blackrockshadow1 rotate: false - xy: 596, 215 + xy: 209, 4 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/blackstone1 rotate: false - xy: 596, 205 + xy: 621, 215 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/blackstone2 rotate: false - xy: 596, 195 + xy: 620, 205 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/blackstone3 rotate: false - xy: 596, 185 + xy: 620, 195 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/blackstoneblock1 rotate: false - xy: 594, 175 + xy: 620, 185 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/blackstoneblock2 rotate: false - xy: 590, 165 + xy: 618, 175 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/blackstoneblock3 rotate: false - xy: 590, 155 + xy: 793, 426 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -83,560 +76,567 @@ blocks/environment/blackstoneedge index: -1 blocks/environment/coal1 rotate: false - xy: 809, 402 + xy: 837, 430 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/coal2 rotate: false - xy: 819, 412 + xy: 847, 431 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/coal3 rotate: false - xy: 809, 392 + xy: 857, 431 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/deepwater rotate: false - xy: 539, 103 + xy: 554, 113 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/dirt1 rotate: false - xy: 539, 93 + xy: 557, 103 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/dirt2 rotate: false - xy: 539, 83 + xy: 557, 93 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/dirt3 rotate: false - xy: 549, 103 + xy: 557, 83 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/dirtedge rotate: false - xy: 171, 4 + xy: 171, 20 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 blocks/environment/grass1 rotate: false - xy: 559, 83 + xy: 632, 165 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/grass2 rotate: false - xy: 621, 216 + xy: 602, 155 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/grass3 rotate: false - xy: 721, 234 + xy: 612, 155 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/grassblock1 rotate: false - xy: 600, 165 + xy: 622, 155 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/grassblock2 rotate: false - xy: 600, 155 + xy: 632, 155 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/grassedge rotate: false - xy: 191, 28 + xy: 171, 6 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 blocks/environment/ice1 rotate: false - xy: 604, 175 + xy: 744, 345 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/ice2 rotate: false - xy: 797, 376 + xy: 744, 335 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/ice3 rotate: false - xy: 807, 373 + xy: 744, 325 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/iceedge rotate: false - xy: 205, 28 + xy: 445, 51 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 blocks/environment/icerock1 rotate: false - xy: 817, 372 + xy: 657, 264 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/icerock2 rotate: false - xy: 827, 372 + xy: 657, 254 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/icerockshadow1 rotate: false - xy: 839, 432 + xy: 657, 244 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/rockshadow1 rotate: false - xy: 839, 432 + xy: 657, 244 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/icerockshadow2 rotate: false - xy: 839, 422 + xy: 667, 266 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/rockshadow2 rotate: false - xy: 839, 422 + xy: 667, 266 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/iron1 rotate: false - xy: 849, 383 + xy: 667, 256 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/iron2 rotate: false - xy: 535, 73 + xy: 677, 266 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/iron3 rotate: false - xy: 545, 73 + xy: 667, 246 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/lava rotate: false - xy: 609, 209 + xy: 727, 246 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/lavaedge rotate: false - xy: 965, 437 + xy: 459, 51 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 blocks/environment/mossblock rotate: false - xy: 616, 196 + xy: 727, 236 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/oil rotate: false - xy: 616, 186 + xy: 737, 236 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/oiledge rotate: false - xy: 525, 99 + xy: 501, 51 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 blocks/environment/rock1 rotate: false - xy: 869, 397 + xy: 373, 59 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/rock2 rotate: false - xy: 879, 407 + xy: 383, 59 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/sand1 rotate: false - xy: 869, 387 + xy: 223, 49 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/sand2 rotate: false - xy: 879, 397 + xy: 233, 49 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/sand3 rotate: false - xy: 889, 407 + xy: 243, 49 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/sandblock1 rotate: false - xy: 899, 417 + xy: 253, 49 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/sandblock2 rotate: false - xy: 909, 427 + xy: 263, 49 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/sandblock3 rotate: false - xy: 919, 437 + xy: 273, 49 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/sandedge rotate: false - xy: 525, 85 + xy: 515, 51 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 blocks/environment/shrub rotate: false - xy: 899, 397 + xy: 343, 49 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/shrubshadow rotate: false - xy: 909, 407 + xy: 353, 49 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/snow1 rotate: false - xy: 919, 407 + xy: 393, 49 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/snow2 rotate: false - xy: 909, 387 + xy: 403, 49 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/snow3 rotate: false - xy: 919, 397 + xy: 413, 49 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/snowblock1 rotate: false - xy: 919, 387 + xy: 785, 416 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/snowblock2 rotate: false - xy: 929, 434 + xy: 785, 406 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/snowblock3 rotate: false - xy: 939, 434 + xy: 795, 416 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/snowedge rotate: false - xy: 623, 235 + xy: 205, 28 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 blocks/environment/stone1 rotate: false - xy: 939, 414 + xy: 805, 416 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/stone2 rotate: false - xy: 949, 424 + xy: 805, 406 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/stone3 rotate: false - xy: 929, 394 + xy: 805, 396 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/stoneblock1 rotate: false - xy: 939, 404 + xy: 805, 386 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/stoneblock2 rotate: false - xy: 949, 414 + xy: 785, 376 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/stoneblock3 rotate: false - xy: 939, 394 + xy: 795, 376 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/stoneedge rotate: false - xy: 781, 430 + xy: 723, 290 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 blocks/environment/titanium1 rotate: false - xy: 959, 427 + xy: 835, 420 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/titanium2 rotate: false - xy: 959, 417 + xy: 815, 390 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/titanium3 rotate: false - xy: 969, 427 + xy: 825, 400 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/uranium1 rotate: false - xy: 969, 397 + xy: 825, 370 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/uranium2 rotate: false - xy: 979, 407 + xy: 835, 370 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/uranium3 rotate: false - xy: 989, 417 + xy: 867, 437 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/water rotate: false - xy: 999, 417 + xy: 917, 437 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/environment/wateredge rotate: false - xy: 795, 434 + xy: 723, 276 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 blocks/extra/block-middle rotate: false - xy: 809, 422 + xy: 544, 113 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/extra/conduitliquid rotate: false - xy: 829, 392 + xy: 537, 103 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 -blocks/extra/cross +blocks/extra/cross-1 rotate: false - xy: 785, 372 + xy: 547, 83 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 +blocks/extra/cross-2 + rotate: false + xy: 213, 90 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 blocks/extra/enemyspawn rotate: false - xy: 559, 103 + xy: 622, 165 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/extra/playerspawn rotate: false - xy: 859, 423 + xy: 233, 59 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/extra/shadow rotate: false - xy: 685, 232 + xy: 608, 197 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/production/coaldrill rotate: false - xy: 819, 402 + xy: 737, 355 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/production/coalgenerator rotate: false - xy: 819, 392 + xy: 724, 346 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/production/coalgenerator-top rotate: false - xy: 819, 382 + xy: 724, 336 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/production/coalpurifier rotate: false - xy: 833, 442 + xy: 724, 326 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/production/combustiongenerator rotate: false - xy: 829, 432 + xy: 734, 345 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/production/crucible rotate: false - xy: 544, 113 + xy: 547, 73 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/production/fluxpump rotate: false - xy: 559, 93 + xy: 628, 175 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/production/irondrill rotate: false - xy: 555, 73 + xy: 677, 256 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/production/lavasmelter rotate: false - xy: 606, 199 + xy: 737, 256 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -664,175 +664,175 @@ blocks/production/nuclearreactor-lights index: -1 blocks/production/nuclearreactor-small rotate: false - xy: 231, 69 + xy: 285, 69 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 blocks/production/oilrefinery rotate: false - xy: 614, 176 + xy: 529, 43 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/production/omnidrill rotate: false - xy: 859, 433 + xy: 223, 59 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/production/powerbooster rotate: false - xy: 859, 413 + xy: 243, 59 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/production/pulverizer rotate: false - xy: 879, 417 + xy: 353, 59 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/production/pump rotate: false - xy: 889, 427 + xy: 363, 59 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/production/quartzextractor rotate: false - xy: 899, 437 - size: 8, 8 - orig: 8, 8 + xy: 303, 69 + size: 16, 16 + orig: 16, 16 offset: 0, 0 index: -1 blocks/production/rtgenerator rotate: false - xy: 899, 427 + xy: 403, 59 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/production/rtgenerator-top rotate: false - xy: 909, 437 + xy: 413, 59 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/production/siliconextractor rotate: false - xy: 919, 417 + xy: 363, 49 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/production/smelter rotate: false - xy: 899, 387 + xy: 373, 49 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/production/smelter-middle rotate: false - xy: 909, 397 + xy: 383, 49 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/production/stonedrill rotate: false - xy: 949, 404 + xy: 805, 376 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/production/stoneformer rotate: false - xy: 949, 394 + xy: 815, 420 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/production/thermalgenerator rotate: false - xy: 565, 73 + xy: 825, 410 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/production/titaniumdrill rotate: false - xy: 959, 407 + xy: 835, 410 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/production/titaniumpurifier rotate: false - xy: 969, 417 + xy: 815, 380 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/production/uraniumdrill rotate: false - xy: 999, 427 + xy: 877, 437 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/tech/conduit rotate: false - xy: 829, 412 + xy: 734, 325 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/tech/conduitbottom rotate: false - xy: 829, 402 + xy: 556, 125 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/tech/conduittop rotate: false - xy: 829, 382 + xy: 537, 93 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/tech/conduittunnel rotate: false - xy: 843, 443 + xy: 537, 83 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/tech/conveyor rotate: false - xy: 853, 443 + xy: 537, 73 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/tech/conveyormove rotate: false - xy: 1007, 437 + xy: 547, 103 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/tech/conveyortunnel rotate: false - xy: 525, 75 + xy: 547, 93 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -846,161 +846,168 @@ blocks/tech/core index: -1 blocks/tech/junction rotate: false - xy: 610, 155 + xy: 727, 256 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/tech/liquidjunction rotate: false - xy: 606, 189 + xy: 737, 246 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/tech/liquidrouter rotate: false - xy: 619, 206 + xy: 717, 236 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/tech/multiplexer rotate: false - xy: 411, 87 + xy: 267, 69 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 blocks/tech/poweredconveyor rotate: false - xy: 859, 403 + xy: 253, 59 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/tech/poweredconveyormove rotate: false - xy: 859, 393 + xy: 263, 59 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/tech/powerinfinite rotate: false - xy: 859, 383 + xy: 273, 59 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/tech/powerlaser rotate: false - xy: 869, 437 + xy: 283, 59 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/tech/powerlasercorner rotate: false - xy: 869, 427 + xy: 293, 59 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/tech/powerlaserrouter rotate: false - xy: 879, 437 + xy: 303, 59 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/tech/powervoid rotate: false - xy: 869, 417 + xy: 313, 59 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/tech/pulseconduit rotate: false - xy: 879, 427 + xy: 323, 59 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/tech/pulseconduitbottom rotate: false - xy: 889, 437 + xy: 333, 59 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/tech/pulseconduittop rotate: false - xy: 869, 407 + xy: 343, 59 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/tech/router rotate: false - xy: 889, 417 + xy: 393, 59 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/tech/shieldgenerator rotate: false - xy: 889, 397 + xy: 293, 49 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 +blocks/tech/shieldprojector + rotate: false + xy: 321, 69 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 blocks/tech/sorter rotate: false - xy: 929, 424 + xy: 785, 396 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/tech/splitter rotate: false - xy: 949, 434 + xy: 795, 406 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/tech/steelconveyor rotate: false - xy: 929, 414 + xy: 785, 386 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/tech/steelconveyormove rotate: false - xy: 939, 424 + xy: 795, 396 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/tech/teleporter rotate: false - xy: 939, 384 + xy: 825, 420 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/tech/teleporter-top rotate: false - xy: 949, 384 + xy: 815, 400 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/tech/unloader rotate: false - xy: 959, 387 + xy: 815, 370 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1014,33 +1021,33 @@ blocks/tech/vault index: -1 blocks/tech/vault-icon rotate: false - xy: 969, 387 + xy: 887, 437 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/tech/weaponfactory rotate: false - xy: 339, 69 + xy: 641, 274 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -blocks/turrets/block +blocks/turrets/block-1 rotate: false - xy: 809, 432 + xy: 827, 430 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 -blocks/turrets/block-2x2 +blocks/turrets/block-2 rotate: false xy: 763, 426 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -blocks/turrets/block-3x3 +blocks/turrets/block-3 rotate: false xy: 234, 105 size: 24, 24 @@ -1068,6 +1075,13 @@ blocks/turrets/doubleturret orig: 10, 10 offset: 0, 0 index: -1 +blocks/turrets/flakturret + rotate: false + xy: 673, 292 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 blocks/turrets/flameturret rotate: false xy: 185, 2 @@ -1075,58 +1089,65 @@ blocks/turrets/flameturret orig: 10, 10 offset: 0, 0 index: -1 +blocks/turrets/gatlingturret + rotate: false + xy: 197, 2 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 blocks/turrets/laserturret rotate: false - xy: 544, 123 + xy: 596, 213 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 -blocks/turrets/machineturret +blocks/turrets/magmaturret rotate: false - xy: 637, 232 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -blocks/turrets/megarepairturret - rotate: false - xy: 393, 87 + xy: 231, 69 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -blocks/turrets/mortarturret +blocks/turrets/megarepairturret rotate: false - xy: 649, 232 - size: 10, 10 - orig: 10, 10 + xy: 249, 69 + size: 16, 16 + orig: 16, 16 offset: 0, 0 index: -1 blocks/turrets/plasmaturret rotate: false - xy: 661, 232 + xy: 596, 201 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 +blocks/turrets/railgunturret + rotate: false + xy: 596, 189 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/turrets/repairturret rotate: false - xy: 673, 232 + xy: 608, 209 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/turrets/shotgunturret rotate: false - xy: 697, 232 + xy: 584, 176 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 -blocks/turrets/sniperturret +blocks/turrets/teslaturret rotate: false - xy: 709, 232 + xy: 596, 177 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -1140,217 +1161,273 @@ blocks/turrets/titancannon index: -1 blocks/turrets/titancannon-icon rotate: false - xy: 584, 212 + xy: 608, 185 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/turrets/turret rotate: false - xy: 584, 200 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -blocks/turrets/waveturret - rotate: false - xy: 584, 188 + xy: 580, 164 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/walls/compositewall rotate: false - xy: 829, 422 + xy: 734, 335 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/walls/door rotate: false - xy: 549, 93 + xy: 557, 73 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/walls/door-large rotate: false - xy: 213, 90 + xy: 442, 113 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 blocks/walls/door-large-open rotate: false - xy: 442, 113 + xy: 655, 292 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 blocks/walls/door-open rotate: false - xy: 549, 83 + xy: 602, 165 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/walls/duriumwall rotate: false - xy: 554, 113 + xy: 612, 165 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/walls/duriumwall-large rotate: false - xy: 655, 292 + xy: 460, 113 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 blocks/walls/ironwall rotate: false - xy: 610, 165 + xy: 677, 246 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/walls/steelwall rotate: false - xy: 929, 404 + xy: 795, 386 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/walls/steelwall-large rotate: false - xy: 249, 69 + xy: 339, 69 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 blocks/walls/stonewall rotate: false - xy: 929, 384 + xy: 815, 410 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/walls/titaniumshieldwall rotate: false - xy: 979, 427 + xy: 825, 390 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/walls/titaniumwall rotate: false - xy: 959, 397 + xy: 835, 400 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/walls/titaniumwall-large rotate: false - xy: 321, 69 + xy: 411, 69 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -bullet +effects/blank rotate: false - xy: 819, 432 + xy: 231, 105 + size: 1, 1 + orig: 1, 1 + offset: 0, 0 + index: -1 +effects/bullet + rotate: false + xy: 592, 166 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 -chainbullet +effects/chainbullet rotate: false - xy: 809, 383 + xy: 727, 356 size: 8, 7 orig: 8, 7 offset: 0, 0 index: -1 +effects/enemyarrow + rotate: false + xy: 592, 157 + size: 8, 7 + orig: 8, 7 + offset: 0, 0 + index: -1 +effects/laser + rotate: false + xy: 219, 28 + size: 1, 12 + orig: 1, 12 + offset: 0, 0 + index: -1 +effects/laserend + rotate: false + xy: 560, 158 + size: 18, 18 + orig: 18, 18 + offset: 0, 0 + index: -1 +effects/laserfull + rotate: false + xy: 589, 225 + size: 18, 18 + orig: 18, 18 + offset: 0, 0 + index: -1 +effects/shell + rotate: false + xy: 283, 49 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +effects/shot + rotate: false + xy: 323, 49 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +effects/shot-long + rotate: false + xy: 333, 49 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +effects/titanshell + rotate: false + xy: 825, 380 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 enemies/blastenemy-t1 rotate: false - xy: 357, 71 + xy: 641, 258 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/blastenemy-t2 rotate: false - xy: 373, 71 + xy: 659, 276 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/blastenemy-t3 rotate: false - xy: 389, 71 + xy: 675, 276 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/empenemy-t1 rotate: false - xy: 405, 71 + xy: 429, 89 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/empenemy-t2 rotate: false - xy: 429, 89 + xy: 429, 73 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/empenemy-t3 rotate: false - xy: 641, 276 + xy: 698, 304 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/fastenemy-t1 rotate: false - xy: 641, 260 + xy: 753, 409 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/fastenemy-t2 rotate: false - xy: 657, 276 + xy: 753, 393 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/fastenemy-t3 rotate: false - xy: 657, 260 + xy: 769, 410 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/flamerenemy-t1 rotate: false - xy: 673, 276 + xy: 769, 394 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/flamerenemy-t2 rotate: false - xy: 673, 260 + xy: 714, 304 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/flamerenemy-t3 rotate: false - xy: 641, 244 + xy: 753, 377 size: 14, 14 orig: 14, 14 offset: 0, 0 @@ -1378,21 +1455,21 @@ enemies/fortressenemy-t3 index: -1 enemies/healerenemy-t1 rotate: false - xy: 657, 244 + xy: 769, 378 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/healerenemy-t2 rotate: false - xy: 673, 244 + xy: 641, 242 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/healerenemy-t3 rotate: false - xy: 698, 304 + xy: 691, 288 size: 14, 14 orig: 14, 14 offset: 0, 0 @@ -1406,224 +1483,203 @@ enemies/mortarenemy-t1 index: -1 enemies/mortarenemy-t2 rotate: false - xy: 445, 81 + xy: 445, 65 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/mortarenemy-t3 rotate: false - xy: 461, 81 + xy: 461, 65 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/rapidenemy-t1 rotate: false - xy: 477, 81 + xy: 477, 65 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/rapidenemy-t2 rotate: false - xy: 493, 81 + xy: 493, 65 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/rapidenemy-t3 rotate: false - xy: 509, 81 + xy: 509, 65 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/standardenemy-t1 rotate: false - xy: 191, 42 + xy: 429, 57 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/targetenemy-t1 rotate: false - xy: 191, 42 + xy: 429, 57 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/standardenemy-t2 rotate: false - xy: 187, 14 + xy: 185, 14 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 enemies/standardenemy-t3 rotate: false - xy: 201, 14 + xy: 199, 14 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 enemies/tankenemy-t1 rotate: false - xy: 175, 34 + xy: 207, 56 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/tankenemy-t2 rotate: false - xy: 171, 18 + xy: 191, 42 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/tankenemy-t3 rotate: false - xy: 207, 56 + xy: 175, 34 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/titanenemy-t1 rotate: false - xy: 267, 69 + xy: 357, 69 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 enemies/titanenemy-t2 rotate: false - xy: 285, 69 + xy: 375, 69 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 enemies/titanenemy-t3 rotate: false - xy: 303, 69 + xy: 393, 69 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -enemyarrow +items/item-biomatter rotate: false - xy: 623, 226 - size: 8, 7 - orig: 8, 7 - offset: 0, 0 - index: -1 -icon-coal - rotate: false - xy: 839, 412 + xy: 687, 262 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 -icon-dirium +items/item-coal rotate: false - xy: 839, 402 + xy: 697, 262 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 -icon-glass +items/item-dirium rotate: false - xy: 839, 392 + xy: 687, 252 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 -icon-iron +items/item-glass rotate: false - xy: 839, 382 + xy: 707, 262 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 -icon-quartz +items/item-iron rotate: false - xy: 837, 372 + xy: 697, 252 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 -icon-silicon +items/item-quartz rotate: false - xy: 849, 433 + xy: 707, 252 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 -icon-steel +items/item-silicon rotate: false - xy: 849, 423 + xy: 687, 242 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 -icon-stone +items/item-steel rotate: false - xy: 849, 413 + xy: 697, 242 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 -icon-titanium +items/item-stone rotate: false - xy: 849, 403 + xy: 707, 242 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 -icon-uranium +items/item-titanium rotate: false - xy: 849, 393 + xy: 717, 256 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 -laser +items/item-uranium rotate: false - xy: 215, 14 - size: 1, 12 - orig: 1, 12 - offset: 0, 0 - index: -1 -laserend - rotate: false - xy: 560, 158 - size: 18, 18 - orig: 18, 18 - offset: 0, 0 - index: -1 -laserfull - rotate: false - xy: 589, 225 - size: 18, 18 - orig: 18, 18 + xy: 717, 246 + size: 8, 8 + orig: 8, 8 offset: 0, 0 index: -1 mechs/mech-standard rotate: false - xy: 979, 437 + xy: 473, 51 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 mechs/mech-standard-icon rotate: false - xy: 993, 437 + xy: 487, 51 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 mechs/ship-standard rotate: false - xy: 609, 231 + xy: 191, 28 size: 12, 12 orig: 12, 12 offset: 0, 0 @@ -1670,34 +1726,6 @@ shapes/shape-7 orig: 63, 63 offset: 0, 0 index: -1 -shell - rotate: false - xy: 879, 387 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -shot - rotate: false - xy: 919, 427 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -shot-long - rotate: false - xy: 889, 387 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -titanshell - rotate: false - xy: 969, 407 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 ui/border rotate: false xy: 127, 1 @@ -1799,7 +1827,7 @@ ui/clear index: -1 ui/cursor rotate: false - xy: 691, 304 + xy: 185, 28 size: 4, 4 orig: 4, 4 offset: 0, 0 @@ -1813,21 +1841,21 @@ ui/icons/controller-cursor index: -1 ui/icons/icon-about rotate: false - xy: 753, 409 + xy: 707, 288 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icons/icon-add rotate: false - xy: 753, 393 + xy: 691, 272 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icons/icon-admin rotate: false - xy: 769, 410 + xy: 707, 272 size: 14, 14 orig: 14, 14 offset: 0, 0 @@ -1841,77 +1869,77 @@ ui/icons/icon-admin-small index: -1 ui/icons/icon-areaDelete rotate: false - xy: 197, 2 + xy: 965, 439 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icons/icon-arrow rotate: false - xy: 769, 394 + xy: 869, 463 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icons/icon-arrow-down rotate: false - xy: 609, 219 + xy: 977, 439 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icons/icon-arrow-left rotate: false - xy: 209, 2 + xy: 989, 439 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icons/icon-arrow-right rotate: false - xy: 785, 418 + xy: 1001, 439 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icons/icon-arrow-up rotate: false - xy: 785, 406 + xy: 1013, 435 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icons/icon-back rotate: false - xy: 460, 113 + xy: 478, 113 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 ui/icons/icon-ban rotate: false - xy: 714, 304 + xy: 885, 463 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icons/icon-cancel rotate: false - xy: 753, 377 + xy: 901, 463 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icons/icon-chat rotate: false - xy: 785, 394 + xy: 525, 101 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icons/icon-check rotate: false - xy: 769, 378 + xy: 917, 463 size: 14, 14 orig: 14, 14 offset: 0, 0 @@ -1939,434 +1967,434 @@ ui/icons/icon-close-over index: -1 ui/icons/icon-crafting rotate: false - xy: 785, 382 + xy: 525, 89 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icons/icon-cursor rotate: false - xy: 797, 422 + xy: 525, 77 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icons/icon-defense rotate: false - xy: 797, 410 + xy: 525, 65 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icons/icon-discord rotate: false - xy: 869, 463 + xy: 869, 447 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icons/icon-distribution rotate: false - xy: 797, 398 + xy: 529, 53 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icons/icon-donate rotate: false - xy: 885, 463 + xy: 885, 447 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icons/icon-dots rotate: false - xy: 901, 463 + xy: 901, 447 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icons/icon-editor rotate: false - xy: 917, 463 + xy: 917, 447 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icons/icon-file-text rotate: false - xy: 869, 447 + xy: 933, 460 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icons/icon-fill rotate: false - xy: 673, 292 + xy: 496, 113 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 ui/icons/icon-floppy rotate: false - xy: 885, 447 + xy: 949, 460 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icons/icon-folder rotate: false - xy: 901, 447 + xy: 933, 444 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icons/icon-folder-parent rotate: false - xy: 917, 447 + xy: 949, 444 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icons/icon-grid rotate: false - xy: 478, 113 + xy: 514, 113 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 ui/icons/icon-hold rotate: false - xy: 797, 386 + xy: 609, 233 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icons/icon-holdDelete rotate: false - xy: 691, 292 + xy: 621, 237 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icons/icon-home rotate: false - xy: 933, 460 + xy: 965, 467 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icons/icon-host rotate: false - xy: 949, 460 + xy: 965, 451 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icons/icon-info rotate: false - xy: 689, 280 + xy: 609, 221 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icons/icon-line rotate: false - xy: 496, 113 + xy: 153, 26 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 ui/icons/icon-liquid rotate: false - xy: 703, 292 + xy: 621, 225 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icons/icon-load rotate: false - xy: 933, 444 + xy: 981, 467 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icons/icon-load-image rotate: false - xy: 514, 113 + xy: 153, 8 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 ui/icons/icon-load-map rotate: false - xy: 153, 26 + xy: 213, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 ui/icons/icon-loading rotate: false - xy: 153, 8 + xy: 231, 87 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 ui/icons/icon-logic rotate: false - xy: 689, 268 + xy: 213, 16 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icons/icon-menu rotate: false - xy: 701, 280 + xy: 781, 432 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icons/icon-none rotate: false - xy: 715, 292 + xy: 793, 436 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icons/icon-pause rotate: false - xy: 689, 256 + xy: 805, 436 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icons/icon-pencil rotate: false - xy: 213, 72 + xy: 249, 87 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 ui/icons/icon-pencil-small rotate: false - xy: 949, 444 + xy: 981, 451 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icons/icon-pick rotate: false - xy: 231, 87 + xy: 267, 87 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 ui/icons/icon-play rotate: false - xy: 701, 268 + xy: 817, 440 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icons/icon-play-2 rotate: false - xy: 965, 467 + xy: 997, 467 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icons/icon-players rotate: false - xy: 713, 280 + xy: 829, 440 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icons/icon-power rotate: false - xy: 689, 244 + xy: 841, 441 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icons/icon-production rotate: false - xy: 701, 256 + xy: 853, 441 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icons/icon-quit rotate: false - xy: 965, 451 + xy: 997, 451 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icons/icon-redo rotate: false - xy: 249, 87 + xy: 285, 87 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 ui/icons/icon-refresh rotate: false - xy: 981, 467 + xy: 175, 50 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icons/icon-rename rotate: false - xy: 981, 451 + xy: 445, 97 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icons/icon-resize rotate: false - xy: 267, 87 + xy: 303, 87 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 ui/icons/icon-rotate rotate: false - xy: 997, 467 + xy: 445, 81 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icons/icon-rotate-arrow rotate: false - xy: 997, 451 + xy: 461, 97 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icons/icon-rotate-left rotate: false - xy: 175, 50 + xy: 461, 81 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icons/icon-rotate-right rotate: false - xy: 421, 71 + xy: 477, 97 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icons/icon-save rotate: false - xy: 445, 97 + xy: 477, 81 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icons/icon-save-image rotate: false - xy: 285, 87 + xy: 321, 87 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 ui/icons/icon-save-map rotate: false - xy: 303, 87 + xy: 339, 87 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 ui/icons/icon-settings rotate: false - xy: 713, 268 + xy: 532, 119 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icons/icon-terrain rotate: false - xy: 321, 87 + xy: 357, 87 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 ui/icons/icon-tools rotate: false - xy: 461, 97 + xy: 493, 97 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icons/icon-touch rotate: false - xy: 701, 244 + xy: 544, 123 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icons/icon-touchDelete rotate: false - xy: 713, 256 + xy: 584, 212 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icons/icon-trash rotate: false - xy: 477, 97 + xy: 493, 81 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icons/icon-trash-16 rotate: false - xy: 339, 87 + xy: 375, 87 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 ui/icons/icon-tutorial rotate: false - xy: 493, 97 + xy: 509, 97 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icons/icon-undo rotate: false - xy: 357, 87 + xy: 393, 87 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 ui/icons/icon-units rotate: false - xy: 713, 244 + xy: 584, 200 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icons/icon-weapon rotate: false - xy: 532, 119 + xy: 584, 188 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icons/icon-zoom rotate: false - xy: 375, 87 + xy: 411, 87 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 ui/icons/icon-zoom-small rotate: false - xy: 509, 97 + xy: 509, 81 size: 14, 14 orig: 14, 14 offset: 0, 0 @@ -2437,14 +2465,14 @@ ui/scroll-knob-vertical-black index: -1 ui/selection rotate: false - xy: 616, 206 + xy: 933, 476 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 ui/slider rotate: false - xy: 606, 215 + xy: 171, 34 size: 1, 8 orig: 1, 8 offset: 0, 0 @@ -2472,7 +2500,7 @@ ui/slider-knob-over index: -1 ui/slider-vertical rotate: false - xy: 606, 186 + xy: 209, 1 size: 8, 1 orig: 8, 1 offset: 0, 0 @@ -2516,7 +2544,7 @@ ui/textfield-over index: -1 ui/white rotate: false - xy: 745, 378 + xy: 219, 1 size: 3, 3 orig: 3, 3 offset: 0, 0 @@ -2539,84 +2567,84 @@ ui/window-empty index: -1 weapons/beam rotate: false - xy: 584, 178 + xy: 608, 175 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/beam-equip rotate: false - xy: 580, 168 + xy: 580, 154 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/blaster rotate: false - xy: 813, 442 + xy: 803, 426 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/blaster-equip rotate: false - xy: 823, 442 + xy: 817, 430 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/clustergun rotate: false - xy: 809, 412 + xy: 733, 266 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/clustergun-equip rotate: false - xy: 819, 422 + xy: 219, 6 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/shockgun rotate: false - xy: 899, 407 + xy: 303, 49 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/shockgun-equip rotate: false - xy: 909, 417 + xy: 313, 49 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/triblaster rotate: false - xy: 979, 417 + xy: 835, 390 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/triblaster-equip rotate: false - xy: 989, 427 + xy: 835, 380 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/vulcan rotate: false - xy: 979, 397 + xy: 897, 437 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/vulcan-equip rotate: false - xy: 989, 407 + xy: 907, 437 size: 8, 8 orig: 8, 8 offset: 0, 0 diff --git a/core/assets/sprites/sprites.png b/core/assets/sprites/sprites.png index 72c9af45f0..bfa21466bb 100644 Binary files a/core/assets/sprites/sprites.png and b/core/assets/sprites/sprites.png differ diff --git a/core/assets/version.properties b/core/assets/version.properties index c5e3e23a2a..53876a9860 100644 --- a/core/assets/version.properties +++ b/core/assets/version.properties @@ -1,7 +1,7 @@ #Autogenerated file. Do not modify. -#Sun Mar 04 15:33:08 EST 2018 +#Sun Mar 04 21:59:47 EST 2018 version=release -androidBuildCode=369 +androidBuildCode=384 name=Mindustry code=3.4 build=custom build diff --git a/core/src/io/anuke/mindustry/core/Control.java b/core/src/io/anuke/mindustry/core/Control.java index 20baae29a5..24cc791419 100644 --- a/core/src/io/anuke/mindustry/core/Control.java +++ b/core/src/io/anuke/mindustry/core/Control.java @@ -288,7 +288,6 @@ public class Control extends Module{ Timers.run(1f, Musics::shuffleAll); Entities.initPhysics(); - Entities.collisions().setCollider(tilesize, world::solid); Platform.instance.updateRPC(); diff --git a/core/src/io/anuke/mindustry/core/Renderer.java b/core/src/io/anuke/mindustry/core/Renderer.java index ba37bc6e2b..0b10bc52ef 100644 --- a/core/src/io/anuke/mindustry/core/Renderer.java +++ b/core/src/io/anuke/mindustry/core/Renderer.java @@ -389,7 +389,7 @@ public class Renderer extends RendererModule{ Draw.color(Colors.get("accent")); Lines.stroke(1f); Lines.square(tile.drawx(), tile.drawy(), - tile.block().width * tilesize / 2f + 1f); + tile.block().size * tilesize / 2f + 1f); Draw.reset(); } @@ -447,7 +447,7 @@ public class Renderer extends RendererModule{ if(showBlockDebug && target.entity != null){ Draw.color(Color.RED); - Lines.crect(target.drawx(), target.drawy(), target.block().width * tilesize, target.block().height * tilesize); + Lines.crect(target.drawx(), target.drawy(), target.block().size * tilesize, target.block().size * tilesize); Vector2 v = new Vector2(); @@ -472,14 +472,14 @@ public class Renderer extends RendererModule{ if(Inputs.keyDown("block_info") && target.block().fullDescription != null){ Draw.color(Colors.get("accent")); - Lines.crect(target.drawx(), target.drawy(), target.block().width * tilesize, target.block().height * tilesize); + Lines.crect(target.drawx(), target.drawy(), target.block().size * tilesize, target.block().size * tilesize); Draw.color(); } if(target.entity != null) { int bot = 0, top = 0; for (BlockBar bar : target.block().bars) { - float offset = Mathf.sign(bar.top) * (target.block().height / 2f * tilesize + 3f + 4f * ((bar.top ? top : bot))) + + float offset = Mathf.sign(bar.top) * (target.block().size / 2f * tilesize + 3f + 4f * ((bar.top ? top : bot))) + (bar.top ? -1f : 0f); float value = bar.value.get(target); diff --git a/core/src/io/anuke/mindustry/core/World.java b/core/src/io/anuke/mindustry/core/World.java index 3a2d930d1b..07df4b7257 100644 --- a/core/src/io/anuke/mindustry/core/World.java +++ b/core/src/io/anuke/mindustry/core/World.java @@ -32,7 +32,7 @@ public class World extends Module{ private Tile core; private Array spawns = new Array<>(); - private Tile[] temptiles = new Tile[4]; + private Array tempTiles = new Array<>(); public World(){ maps.loadMaps(); @@ -241,7 +241,7 @@ public class World extends Module{ tile.setBlock(Blocks.air); }else{ Tile target = tile.target(); - Array removals = target.getLinkedTiles(); + Array removals = target.getLinkedTiles(tempTiles); for(Tile toremove : removals){ //note that setting a new block automatically unlinks it toremove.setBlock(Blocks.air); diff --git a/core/src/io/anuke/mindustry/entities/enemies/types/BlastType.java b/core/src/io/anuke/mindustry/entities/enemies/types/BlastType.java index 5ce1e804ed..9132d5a666 100644 --- a/core/src/io/anuke/mindustry/entities/enemies/types/BlastType.java +++ b/core/src/io/anuke/mindustry/entities/enemies/types/BlastType.java @@ -28,7 +28,7 @@ public class BlastType extends EnemyType { if(enemy.target instanceof TileEntity){ TileEntity e = (TileEntity)enemy.target; - range = (e.tile.block().width * tilesize) /2f + 8f; + range = (e.tile.block().size * tilesize) /2f + 8f; ox = e.tile.block().getPlaceOffset().x; oy = e.tile.block().getPlaceOffset().y; } diff --git a/core/src/io/anuke/mindustry/game/Tutorial.java b/core/src/io/anuke/mindustry/game/Tutorial.java index 041a8b79f7..4a69aaa57d 100644 --- a/core/src/io/anuke/mindustry/game/Tutorial.java +++ b/core/src/io/anuke/mindustry/game/Tutorial.java @@ -1,7 +1,6 @@ package io.anuke.mindustry.game; import com.badlogic.gdx.math.GridPoint2; -import io.anuke.mindustry.core.GameState; import io.anuke.mindustry.core.GameState.State; import io.anuke.mindustry.resource.Item; import io.anuke.mindustry.world.Block; @@ -327,7 +326,7 @@ public class Tutorial{ canForward = false; showBlock = true; canPlace = true; - targetBlock = WeaponBlocks.turret; + targetBlock = WeaponBlocks.doubleturret; blockPlaceX = 2; blockPlaceY = 2; } diff --git a/core/src/io/anuke/mindustry/input/DesktopInput.java b/core/src/io/anuke/mindustry/input/DesktopInput.java index 859665faa9..858716e6b6 100644 --- a/core/src/io/anuke/mindustry/input/DesktopInput.java +++ b/core/src/io/anuke/mindustry/input/DesktopInput.java @@ -158,13 +158,13 @@ public class DesktopInput extends InputHandler{ public int tilex(){ return (recipe != null && recipe.result.isMultiblock() && - recipe.result.width % 2 == 0) ? + recipe.result.size % 2 == 0) ? Mathf.scl(Graphics.mouseWorld().x, tilesize) : Mathf.scl2(Graphics.mouseWorld().x, tilesize); } public int tiley(){ return (recipe != null && recipe.result.isMultiblock() && - recipe.result.height % 2 == 0) ? + recipe.result.size % 2 == 0) ? Mathf.scl(Graphics.mouseWorld().y, tilesize) : Mathf.scl2(Graphics.mouseWorld().y, tilesize); } diff --git a/core/src/io/anuke/mindustry/input/InputHandler.java b/core/src/io/anuke/mindustry/input/InputHandler.java index 88ef529f4e..5dfb00407a 100644 --- a/core/src/io/anuke/mindustry/input/InputHandler.java +++ b/core/src/io/anuke/mindustry/input/InputHandler.java @@ -71,7 +71,7 @@ public abstract class InputHandler extends InputAdapter{ } public boolean round2(){ - return !(recipe != null && recipe.result.isMultiblock() && recipe.result.height % 2 == 0); + return !(recipe != null && recipe.result.isMultiblock() && recipe.result.size % 2 == 0); } public boolean validPlace(int x, int y, Block type){ diff --git a/core/src/io/anuke/mindustry/input/PlaceMode.java b/core/src/io/anuke/mindustry/input/PlaceMode.java index a6e69adad7..44558814ac 100644 --- a/core/src/io/anuke/mindustry/input/PlaceMode.java +++ b/core/src/io/anuke/mindustry/input/PlaceMode.java @@ -36,8 +36,8 @@ public enum PlaceMode{ Draw.color(valid ? Colors.get("place") : Colors.get("placeInvalid")); Lines.stroke(2f); - Lines.crect(x + offset.x, y + offset.y, tilesize * control.input().recipe.result.width + si, - tilesize * control.input().recipe.result.height + si); + Lines.crect(x + offset.x, y + offset.y, tilesize * control.input().recipe.result.size + si, + tilesize * control.input().recipe.result.size + si); control.input().recipe.result.drawPlace(tilex, tiley, control.input().rotation, valid); Lines.stroke(2f); @@ -150,7 +150,7 @@ public enum PlaceMode{ tile = tile.getLinked(); if(tile != null && control.input().validBreak(tile.x, tile.y)){ Lines.crect(tile.drawx(), tile.drawy(), - tile.block().width * t, tile.block().height * t); + tile.block().size* t, tile.block().size * t); } } } @@ -251,13 +251,13 @@ public enum PlaceMode{ x2 = this.endx * t, y2 = this.endy * t; if(x2 >= x){ - x -= block.width * t/2; - x2 += block.width * t/2; + x -= block.size * t/2; + x2 += block.size * t/2; } if(y2 >= y){ - y -= block.height * t/2; - y2 += block.height * t/2; + y -= block.size * t/2; + y2 += block.size * t/2; } x += offset.x; @@ -284,7 +284,7 @@ public enum PlaceMode{ if(!control.input().validPlace(px, py, control.input().recipe.result) || !state.inventory.hasItems(control.input().recipe.requirements, amount)){ - Lines.crect(px * t + offset.x, py * t + offset.y, t*block.width, t*block.height); + Lines.crect(px * t + offset.x, py * t + offset.y, t*block.size, t*block.size); } amount ++; } diff --git a/core/src/io/anuke/mindustry/resource/Item.java b/core/src/io/anuke/mindustry/resource/Item.java index fc26015266..1798203fde 100644 --- a/core/src/io/anuke/mindustry/resource/Item.java +++ b/core/src/io/anuke/mindustry/resource/Item.java @@ -9,35 +9,37 @@ public class Item{ private static final Array items = new Array<>(); public static final Item - stone = new Item("stone"), - iron = new Item("iron"), - coal = new Item("coal"){ - { - explosiveness = 0.2f; - flammability = 0.5f; - material = false; - } - }, - steel = new Item("steel"), - titanium = new Item("titanium"), - dirium = new Item("dirium"), - uranium = new Item("uranium"){ - { - explosiveness = 0.1f; - material = false; - } - }, - quartz = new Item("quartz") { - { - material = false; - } - }, - glass = new Item("glass"), - silicon = new Item("silicon"){ - { - material = false; - } - }; + stone = new Item("stone"), + iron = new Item("iron"), + coal = new Item("coal"){ + { + explosiveness = 0.2f; + flammability = 0.5f; + material = false; + } + }, + steel = new Item("steel"), + titanium = new Item("titanium"), + dirium = new Item("dirium"), + uranium = new Item("uranium"){ + { + explosiveness = 0.1f; + material = false; + } + }, + quartz = new Item("quartz") { + { + material = false; + } + }, + glass = new Item("glass"), + silicon = new Item("silicon"), + biomatter = new Item("biomatter"){ + { + material = false; + flammability = 0.4f; + } + }; public final int id; public final String name; @@ -55,7 +57,7 @@ public class Item{ } public void init(){ - this.region = Draw.region("icon-" + name); + this.region = Draw.region("item-" + name); } public String localizedName(){ diff --git a/core/src/io/anuke/mindustry/resource/ItemStack.java b/core/src/io/anuke/mindustry/resource/ItemStack.java index 9d6bceb017..8fea6b7fe0 100644 --- a/core/src/io/anuke/mindustry/resource/ItemStack.java +++ b/core/src/io/anuke/mindustry/resource/ItemStack.java @@ -9,7 +9,7 @@ public class ItemStack{ this.item = item; this.amount = amount; } - + public boolean equals(ItemStack other){ return other != null && other.item == item && other.amount == amount; } diff --git a/core/src/io/anuke/mindustry/resource/Recipes.java b/core/src/io/anuke/mindustry/resource/Recipes.java index c7449ac2a1..8b983bc095 100644 --- a/core/src/io/anuke/mindustry/resource/Recipes.java +++ b/core/src/io/anuke/mindustry/resource/Recipes.java @@ -34,16 +34,14 @@ public class Recipes { new Recipe(distribution, DistributionBlocks.vault, stack(Item.steel, 50)), new Recipe(distribution, DistributionBlocks.unloader, stack(Item.steel, 5)), - //new Recipe(weapon, WeaponBlocks.turret, stack(Item.stone, 4)), new Recipe(weapon, WeaponBlocks.doubleturret, stack(Item.stone, 7)), - new Recipe(weapon, WeaponBlocks.machineturret, stack(Item.iron, 8), stack(Item.stone, 10)), - //new Recipe(weapon, WeaponBlocks.shotgunturret, stack(Item.iron, 10), stack(Item.stone, 10)), + new Recipe(weapon, WeaponBlocks.gatlingturret, stack(Item.iron, 8), stack(Item.stone, 10)), new Recipe(weapon, WeaponBlocks.flameturret, stack(Item.iron, 12), stack(Item.steel, 9)), - new Recipe(weapon, WeaponBlocks.sniperturret, stack(Item.iron, 15), stack(Item.steel, 10)), + new Recipe(weapon, WeaponBlocks.railgunturret, stack(Item.iron, 15), stack(Item.steel, 10)), new Recipe(weapon, WeaponBlocks.laserturret, stack(Item.steel, 12), stack(Item.titanium, 12)), - new Recipe(weapon, WeaponBlocks.mortarturret, stack(Item.steel, 25), stack(Item.titanium, 15)), + new Recipe(weapon, WeaponBlocks.flakturret, stack(Item.steel, 25), stack(Item.titanium, 15)), new Recipe(weapon, WeaponBlocks.teslaturret, stack(Item.steel, 20), stack(Item.titanium, 25), stack(Item.dirium, 15)), - //new Recipe(weapon, WeaponBlocks.plasmaturret, stack(Item.steel, 10), stack(Item.titanium, 20), stack(Item.dirium, 15)), + new Recipe(weapon, WeaponBlocks.magmaturret, stack(Item.steel, 80), stack(Item.titanium, 70), stack(Item.dirium, 60)), new Recipe(weapon, WeaponBlocks.chainturret, stack(Item.steel, 50), stack(Item.titanium, 25), stack(Item.dirium, 40)), new Recipe(weapon, WeaponBlocks.titanturret, stack(Item.steel, 70), stack(Item.titanium, 50), stack(Item.dirium, 55)), diff --git a/core/src/io/anuke/mindustry/ui/fragments/BlocksFragment.java b/core/src/io/anuke/mindustry/ui/fragments/BlocksFragment.java index 5e798dc40e..5003916f48 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/BlocksFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/BlocksFragment.java @@ -269,7 +269,7 @@ public class BlocksFragment implements Fragment{ desctable.left(); for(ItemStack stack : recipe.requirements){ - requirements.addImage(Draw.region("icon-"+stack.item.name)).size(8*3); + requirements.addImage(stack.item.region).size(8*3); Label reqlabel = new Label(""); reqlabel.update(()->{ @@ -309,7 +309,7 @@ public class BlocksFragment implements Fragment{ pane.setFadeScrollBars(false); Table top = new Table(); top.left(); - top.add(new Image(Draw.region(block.name))).size(8*5 * block.width); + top.add(new Image(Draw.region(block.name))).size(8*5 * block.size); top.add("[accent]"+block.formalName).padLeft(6f); table.add(top).fill().left(); table.row(); @@ -357,8 +357,7 @@ public class BlocksFragment implements Fragment{ int amount = state.inventory.getItems()[i]; if(amount == 0) continue; String formatted = amount > 99999999 ? "inf" : format(amount); - Image image = new Image(Draw.hasRegion("icon-" + Item.getByID(i).name) ? - Draw.region("icon-" + Item.getByID(i).name) : Draw.region("blank")); + Image image = new Image(Item.getByID(i).region); Label label = new Label(formatted); label.setFontScale(fontscale*1.5f); itemtable.add(image).size(8*3); diff --git a/core/src/io/anuke/mindustry/world/Block.java b/core/src/io/anuke/mindustry/world/Block.java index 00b36eccab..bfdab35c04 100644 --- a/core/src/io/anuke/mindustry/world/Block.java +++ b/core/src/io/anuke/mindustry/world/Block.java @@ -28,8 +28,8 @@ public class Block{ private static int lastid; private static Array blocks = new Array<>(); private static ObjectMap map = new ObjectMap<>(); - - protected static TextureRegion temp = new TextureRegion(); + + protected Array tempTiles = new Array<>(); protected Vector2 offset = new Vector2(); /**internal name*/ @@ -72,8 +72,8 @@ public class Block{ public ItemStack drops = null; /**liquids that drop from this block, used for pumps*/ public Liquid liquidDrop = null; - /**multiblock width/height*/ - public int width = 1, height = 1; + /**multiblock size*/ + public int size = 1; /**Brief block description. Should be short enough fit in the place menu.*/ public final String description; /**Detailed description of the block. Can be as long as necesary.*/ @@ -131,7 +131,7 @@ public class Block{ } public void getStats(Array list){ - list.add("[gray]size: " + width + "x" + height); + list.add("[gray]size: " + size); list.add("[healthstats]health: " + health); } @@ -194,11 +194,11 @@ public class Block{ * Tries to put this item into a nearby container, if there are no available * containers, it gets added to the block's inventory.*/ public void offloadNear(Tile tile, Item item){ - GridPoint2[] nearby = Edges.getEdges(width); + GridPoint2[] nearby = Edges.getEdges(size); for(int j = 0; j < nearby.length; j ++){ Tile other = tile.getNearby(nearby[j]); - Tile in = tile.getNearby(Edges.getInsideEdges(width)[j]); + Tile in = tile.getNearby(Edges.getInsideEdges(size)[j]); if(other != null && other.block().acceptItem(item, other, in) && canDump(tile, other, item)){ other.block().handleItem(item, other, in); return; @@ -215,7 +215,7 @@ public class Block{ /**Try dumping a specific item near the tile.*/ protected boolean tryDump(Tile tile, Item todump){ - GridPoint2[] nearby = Edges.getEdges(width); + GridPoint2[] nearby = Edges.getEdges(size); byte i = (byte)(tile.getDump() % nearby.length); for(int j = 0; j < nearby.length; j ++){ @@ -224,7 +224,7 @@ public class Block{ for(Item item : Item.getAllItems()){ other = tile.getNearby(nearby[i]); - in = tile.getNearby(Edges.getInsideEdges(width)[i]); + in = tile.getNearby(Edges.getInsideEdges(size)[i]); if(todump != null && item != todump) continue; @@ -289,11 +289,11 @@ public class Block{ /**Offset for placing and drawing multiblocks.*/ public Vector2 getPlaceOffset(){ - return offset.set(((width + 1) % 2) * tilesize/2, ((height + 1) % 2) * tilesize/2); + return offset.set(((size + 1) % 2) * tilesize/2, ((size + 1) % 2) * tilesize/2); } public boolean isMultiblock(){ - return width != 1 || height != 1; + return size > 1; } public static Array getAllBlocks(){ diff --git a/core/src/io/anuke/mindustry/world/Placement.java b/core/src/io/anuke/mindustry/world/Placement.java index f0ee799b04..278c5240a4 100644 --- a/core/src/io/anuke/mindustry/world/Placement.java +++ b/core/src/io/anuke/mindustry/world/Placement.java @@ -20,6 +20,7 @@ import static io.anuke.mindustry.Vars.*; public class Placement { private static final Rectangle rect = new Rectangle(); + private static Array tempTiles = new Array<>(); /**Returns block type that was broken, or null if unsuccesful.*/ public static Block breakBlock(int x, int y, boolean effect, boolean sound){ @@ -47,7 +48,7 @@ public class Placement { if(effect) Effects.effect(Fx.breakBlock, tile.worldx(), tile.worldy()); }else{ Tile target = tile.isLinked() ? tile.getLinked() : tile; - Array removals = target.getLinkedTiles(); + Array removals = target.getLinkedTiles(tempTiles); for(Tile toremove : removals){ //note that setting a new block automatically unlinks it toremove.setBlock(Blocks.air); @@ -67,11 +68,11 @@ public class Placement { tile.setBlock(result, rotation); if(result.isMultiblock()){ - int offsetx = -(result.width-1)/2; - int offsety = -(result.height-1)/2; + int offsetx = -(result.size-1)/2; + int offsety = -(result.size-1)/2; - for(int dx = 0; dx < result.width; dx ++){ - for(int dy = 0; dy < result.height; dy ++){ + for(int dx = 0; dx < result.size; dx ++){ + for(int dy = 0; dy < result.size; dy ++){ int worldx = dx + offsetx + x; int worldy = dy + offsety + y; if(!(worldx == x && worldy == y)){ @@ -102,7 +103,7 @@ public class Placement { return false; } - rect.setSize(type.width * tilesize, type.height * tilesize); + rect.setSize(type.size * tilesize, type.size * tilesize); Vector2 offset = type.getPlaceOffset(); rect.setCenter(offset.x + x * tilesize, offset.y + y * tilesize); @@ -130,10 +131,10 @@ public class Placement { if(tile == null || (isSpawnPoint(tile) && (type.solidifes || type.solid))) return false; if(type.isMultiblock()){ - int offsetx = -(type.width-1)/2; - int offsety = -(type.height-1)/2; - for(int dx = 0; dx < type.width; dx ++){ - for(int dy = 0; dy < type.height; dy ++){ + int offsetx = -(type.size-1)/2; + int offsety = -(type.size-1)/2; + for(int dx = 0; dx < type.size; dx ++){ + for(int dy = 0; dy < type.size; dy ++){ Tile other = world.tile(x + dx + offsetx, y + dy + offsety); if(other == null || (other.block() != Blocks.air && !other.block().alwaysReplace) || isSpawnPoint(other)){ return false; diff --git a/core/src/io/anuke/mindustry/world/Tile.java b/core/src/io/anuke/mindustry/world/Tile.java index 727c7f10ef..aed26a1dbe 100644 --- a/core/src/io/anuke/mindustry/world/Tile.java +++ b/core/src/io/anuke/mindustry/world/Tile.java @@ -16,7 +16,6 @@ import static io.anuke.mindustry.Vars.world; public class Tile{ public static final Object tileSetLock = new Object(); - private static final Array tmpArray = new Array<>(); /**Block ID data.*/ private byte floor, wall; @@ -201,18 +200,20 @@ public class Tile{ /**Returns the list of all tiles linked to this multiblock, or an empty array if it's not a multiblock. * This array contains all linked tiles, including this tile itself.*/ - public synchronized Array getLinkedTiles(){ + public synchronized Array getLinkedTiles(Array tmpArray){ Block block = block(); tmpArray.clear(); - if(!(block.width == 1 && block.height == 1)){ - int offsetx = -(block.width-1)/2; - int offsety = -(block.height-1)/2; - for(int dx = 0; dx < block.width; dx ++){ - for(int dy = 0; dy < block.height; dy ++){ + if(block.isMultiblock()){ + int offsetx = -(block.size-1)/2; + int offsety = -(block.size-1)/2; + for(int dx = 0; dx < block.size; dx ++){ + for(int dy = 0; dy < block.size; dy ++){ Tile other = world.tile(x + dx + offsetx, y + dy + offsety); tmpArray.add(other); } } + }else{ + tmpArray.add(this); } return tmpArray; } @@ -229,7 +230,7 @@ public class Tile{ } public void allNearby(Consumer cons){ - for(GridPoint2 point : Edges.getEdges(block().width)){ + for(GridPoint2 point : Edges.getEdges(block().size)){ Tile tile = world.tile(x + point.x, y + point.y); if(tile != null){ cons.accept(tile.target()); @@ -238,7 +239,7 @@ public class Tile{ } public void allInside(Consumer cons){ - for(GridPoint2 point : Edges.getInsideEdges(block().width)){ + for(GridPoint2 point : Edges.getInsideEdges(block().size)){ Tile tile = world.tile(x + point.x, y + point.y); if(tile != null){ cons.accept(tile); diff --git a/core/src/io/anuke/mindustry/world/blocks/DefenseBlocks.java b/core/src/io/anuke/mindustry/world/blocks/DefenseBlocks.java index e6ebc8f025..01748db7a7 100644 --- a/core/src/io/anuke/mindustry/world/blocks/DefenseBlocks.java +++ b/core/src/io/anuke/mindustry/world/blocks/DefenseBlocks.java @@ -33,15 +33,15 @@ public class DefenseBlocks{ }}, steelwalllarge = new Wall("steelwall-large"){{ health = 110*4*wallHealthMultiplier; - width = height = 2; + size = 2; }}, titaniumwalllarge = new Wall("titaniumwall-large"){{ health = 150*4*wallHealthMultiplier; - width = height = 2; + size = 2; }}, diriumwalllarge = new Wall("duriumwall-large"){{ health = 190*4*wallHealthMultiplier; - width = height = 2; + size = 2; }}, titaniumshieldwall = new ShieldedWallBlock("titaniumshieldwall"){{ health = 150*wallHealthMultiplier; @@ -62,7 +62,7 @@ public class DefenseBlocks{ reload = 12f; health = 90; powerUsed = 0.13f; - width = height = 2; + size = 2; } }, @@ -78,6 +78,6 @@ public class DefenseBlocks{ openfx = Fx.dooropenlarge; closefx = Fx.doorcloselarge; health = 90*4*wallHealthMultiplier; - width = height = 2; + size = 2; }}; } diff --git a/core/src/io/anuke/mindustry/world/blocks/DistributionBlocks.java b/core/src/io/anuke/mindustry/world/blocks/DistributionBlocks.java index 3a09fbe625..0a50bd5372 100644 --- a/core/src/io/anuke/mindustry/world/blocks/DistributionBlocks.java +++ b/core/src/io/anuke/mindustry/world/blocks/DistributionBlocks.java @@ -41,12 +41,12 @@ public class DistributionBlocks{ }}, multiplexer = new Router("multiplexer"){{ - width = height = 2; + size = 2; capacity = 80; }}, vault = new Vault("vault"){{ - width = height = 3; + size = 3; }}, unloader = new Unloader("unloader"){{ diff --git a/core/src/io/anuke/mindustry/world/blocks/ProductionBlocks.java b/core/src/io/anuke/mindustry/world/blocks/ProductionBlocks.java index 9d72f5c8ca..698a5ecf17 100644 --- a/core/src/io/anuke/mindustry/world/blocks/ProductionBlocks.java +++ b/core/src/io/anuke/mindustry/world/blocks/ProductionBlocks.java @@ -178,6 +178,7 @@ public class ProductionBlocks{ resource = Blocks.sand; result = Item.quartz; time = 5; + size = 2; } }, @@ -215,15 +216,14 @@ public class ProductionBlocks{ }, nuclearReactor = new NuclearReactor("nuclearreactor"){ { - width = 3; - height = 3; + size = 3; health = 600; breaktime *= 2.3f; } }, weaponFactory = new WeaponFactory("weaponfactory"){ { - width = height = 2; + size = 2; health = 250; } }; diff --git a/core/src/io/anuke/mindustry/world/blocks/WeaponBlocks.java b/core/src/io/anuke/mindustry/world/blocks/WeaponBlocks.java index 58c6c4ed41..79ba5209b7 100644 --- a/core/src/io/anuke/mindustry/world/blocks/WeaponBlocks.java +++ b/core/src/io/anuke/mindustry/world/blocks/WeaponBlocks.java @@ -5,9 +5,11 @@ import io.anuke.mindustry.entities.BulletType; import io.anuke.mindustry.entities.effect.TeslaOrb; import io.anuke.mindustry.graphics.Fx; import io.anuke.mindustry.resource.Item; +import io.anuke.mindustry.resource.Liquid; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.blocks.types.defense.LaserTurret; +import io.anuke.mindustry.world.blocks.types.defense.LiquidTurret; import io.anuke.mindustry.world.blocks.types.defense.PowerTurret; import io.anuke.mindustry.world.blocks.types.defense.Turret; import io.anuke.ucore.core.Effects; @@ -17,16 +19,6 @@ import io.anuke.ucore.util.Mathf; public class WeaponBlocks{ public static Block - turret = new Turret("turret"){ - { - range = 52; - reload = 15f; - bullet = BulletType.stone; - health = 45; - ammo = Item.stone; - } - }, - doubleturret = new Turret("doubleturret"){ { range = 44; @@ -48,7 +40,7 @@ public class WeaponBlocks{ } }, - machineturret = new Turret("machineturret"){ + gatlingturret = new Turret("gatlingturret"){ { range = 65; reload = 7f; @@ -58,19 +50,6 @@ public class WeaponBlocks{ } }, - shotgunturret = new Turret("shotgunturret"){ - { - range = 50; - reload = 30f; - bullet = BulletType.iron; - ammo = Item.iron; - health = 70; - shots = 5; - inaccuracy = 15f; - shotDelayScale = 0.7f; - } - }, - flameturret = new Turret("flameturret"){ { range = 45f; @@ -82,7 +61,7 @@ public class WeaponBlocks{ } }, - sniperturret = new Turret("sniperturret"){ + railgunturret = new Turret("railgunturret"){ { shootsound = "railgun"; range = 120; @@ -94,7 +73,7 @@ public class WeaponBlocks{ } }, - mortarturret = new Turret("mortarturret"){ + flakturret = new Turret("flakturret"){ { shootsound = "bigshot"; rotatespeed = 0.2f; @@ -108,6 +87,7 @@ public class WeaponBlocks{ health = 110; shootEffect = Fx.mortarshot; shootShake = 2f; + size = 2; } }, @@ -123,7 +103,7 @@ public class WeaponBlocks{ } }, - teslaturret = new PowerTurret("waveturret"){ + teslaturret = new PowerTurret("teslaturret"){ { shootsound = "tesla"; range = 70; @@ -141,6 +121,20 @@ public class WeaponBlocks{ new TeslaOrb(tile.drawx() + Angles.trnsx(entity.rotation, len), tile.drawy() + Angles.trnsy(entity.rotation, len), range, 9).add(); } }, + + magmaturret = new LiquidTurret("magmaturret") { + { + shootsound = "flame2"; + inaccuracy = 7f; + range = 90f; + reload = 7f; + bullet = BulletType.plasmaflame; + ammoLiquid = Liquid.lava; + liquidPerShot = 3f; + health = 180*3; + size = 2; + } + }, plasmaturret = new Turret("plasmaturret"){ { @@ -164,7 +158,7 @@ public class WeaponBlocks{ bullet = BulletType.chain; ammo = Item.uranium; health = 430; - width = height = 2; + size = 2; shootCone = 9f; ammoMultiplier = 8; shots = 2; @@ -198,7 +192,7 @@ public class WeaponBlocks{ ammo = Item.uranium; health = 800; ammoMultiplier = 4; - width = height = 3; + size = 3; rotatespeed = 0.07f; shootCone = 9f; shootEffect = Fx.titanshot; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/Floor.java b/core/src/io/anuke/mindustry/world/blocks/types/Floor.java index 80c9a88e37..aa6cc5808a 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/Floor.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/Floor.java @@ -11,6 +11,7 @@ import io.anuke.ucore.util.Mathf; import static io.anuke.mindustry.Vars.world; public class Floor extends Block{ + protected TextureRegion tempRegion = new TextureRegion(); protected Predicate blends = block -> block != this; protected boolean blend = true; @@ -50,10 +51,10 @@ public class Floor extends Block{ float rx = Mathf.clamp(dx*8, 0, 8-w); float ry = Mathf.clamp(dy*8, 0, 8-h); - temp.setTexture(region.getTexture()); - temp.setRegion(region.getRegionX()+x, region.getRegionY()+y+h, w, -h); + tempRegion.setTexture(region.getTexture()); + tempRegion.setRegion(region.getRegionX()+x, region.getRegionY()+y+h, w, -h); - Draw.crect(temp, tile.worldx()-4 + rx, tile.worldy()-4 + ry, w, h); + Draw.crect(tempRegion, tile.worldx()-4 + rx, tile.worldy()-4 + ry, w, h); } } } diff --git a/core/src/io/anuke/mindustry/world/blocks/types/defense/Door.java b/core/src/io/anuke/mindustry/world/blocks/types/defense/Door.java index 5f84c5bb90..786d227f89 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/defense/Door.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/defense/Door.java @@ -66,7 +66,7 @@ public class Door extends Wall{ boolean anyEntities(Tile tile){ int x = tile.x, y = tile.y; Block type = tile.block(); - rect.setSize(type.width * tilesize, type.height * tilesize); + rect.setSize(type.size * tilesize, type.size * tilesize); rect.setCenter(tile.drawx(), tile.drawy()); for(SolidEntity e : Entities.getNearby(enemyGroup, x * tilesize, y * tilesize, tilesize * 2f)){ diff --git a/core/src/io/anuke/mindustry/world/blocks/types/defense/LiquidTurret.java b/core/src/io/anuke/mindustry/world/blocks/types/defense/LiquidTurret.java index 114284c959..46a6f3df0c 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/defense/LiquidTurret.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/defense/LiquidTurret.java @@ -11,7 +11,7 @@ import java.io.IOException; public abstract class LiquidTurret extends Turret implements LiquidAcceptor{ public Liquid ammoLiquid = Liquid.water; - public float liquidCapacity = 20f; + public float liquidCapacity = 60f; public float liquidPerShot = 1f; public LiquidTurret(String name) { diff --git a/core/src/io/anuke/mindustry/world/blocks/types/defense/Turret.java b/core/src/io/anuke/mindustry/world/blocks/types/defense/Turret.java index b9dafc88d5..d416376e2a 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/defense/Turret.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/defense/Turret.java @@ -53,6 +53,7 @@ public class Turret extends Block{ protected float shootShake = 0f; protected int soundReload = 0; protected Translator tr = new Translator(); + protected String base = null; //name of the region to draw under turret, usually null public Turret(String name) { super(name); @@ -83,10 +84,10 @@ public class Turret extends Block{ @Override public void draw(Tile tile){ - if(isMultiblock()){ - Draw.rect("block-" + width + "x" + height, tile.drawx(), tile.drawy()); + if(base == null) { + Draw.rect("block-" + size, tile.drawx(), tile.drawy()); }else{ - Draw.rect("block", tile.drawx(), tile.drawy()); + Draw.rect(base, tile.drawx(), tile.drawy()); } } @@ -212,14 +213,14 @@ public class Turret extends Block{ protected void shoot(Tile tile){ TurretEntity entity = tile.entity(); - tr.trns(entity.rotation, width * tilesize/2); + tr.trns(entity.rotation, size * tilesize/2); for(int i = 0; i < shots; i ++){ if(Mathf.zero(shotDelayScale)){ bullet(tile, entity.rotation + Mathf.range(inaccuracy)); }else{ Timers.run(i * shotDelayScale, () -> { - tr.trns(entity.rotation, width * tilesize/2f); + tr.trns(entity.rotation, size * tilesize/2f); bullet(tile, entity.rotation + Mathf.range(inaccuracy)); }); } diff --git a/core/src/io/anuke/mindustry/world/blocks/types/production/Drill.java b/core/src/io/anuke/mindustry/world/blocks/types/production/Drill.java index 3569480136..02b4caad79 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/production/Drill.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/production/Drill.java @@ -1,22 +1,23 @@ package io.anuke.mindustry.world.blocks.types.production; import com.badlogic.gdx.utils.Array; - import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.graphics.Fx; import io.anuke.mindustry.resource.Item; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Layer; import io.anuke.mindustry.world.Tile; -import io.anuke.ucore.graphics.Draw; import io.anuke.ucore.core.Effects; import io.anuke.ucore.core.Effects.Effect; import io.anuke.ucore.core.Timers; +import io.anuke.ucore.graphics.Draw; import io.anuke.ucore.util.Mathf; public class Drill extends Block{ protected final int timerDrill = timers++; protected final int timerDump = timers++; + + protected final Array drawTiles = new Array<>(); protected Block resource; protected Item result; @@ -41,11 +42,22 @@ public class Drill extends Block{ @Override public void update(Tile tile){ TileEntity entity = tile.entity; - - if((tile.floor() == resource || (resource.drops.equals(tile.floor().drops))) - && entity.timer.get(timerDrill, 60 * time) && tile.entity.getItem(result) < capacity){ - offloadNear(tile, result); - Effects.effect(drillEffect, tile.worldx(), tile.worldy()); + + int mines = 0; + + if(isMultiblock()){ + for(Tile other : tile.getLinkedTiles(tempTiles)){ + if(isValid(other)){ + mines ++; + } + } + }else{ + if(isValid(tile)) mines = 1; + } + + if(mines > 0 && entity.timer.get(timerDrill, 60 * time) && tile.entity.getItem(result) < capacity){ + for(int i = 0; i < mines; i ++) offloadNear(tile, result); + Effects.effect(drillEffect, tile.drawx(), tile.drawy()); } if(entity.timer.get(timerDump, 30)){ @@ -55,14 +67,27 @@ public class Drill extends Block{ @Override public boolean isLayer(Tile tile){ - return tile.floor() != resource && resource != null && !(resource.drops.equals(tile.floor().drops)); + if(isMultiblock()){ + for(Tile other : tile.getLinkedTiles(drawTiles)){ + if(isValid(other)){ + return false; + } + } + return true; + }else{ + return !isValid(tile); + } } @Override public void drawLayer(Tile tile){ Draw.colorl(0.85f + Mathf.absin(Timers.time(), 6f, 0.15f)); - Draw.rect("cross", tile.worldx(), tile.worldy()); + Draw.rect("cross-" + size, tile.drawx(), tile.drawy()); Draw.color(); } + boolean isValid(Tile tile){ + return tile.floor() == resource || (resource != null && resource.drops.equals(tile.floor().drops)); + } + } diff --git a/core/src/io/anuke/mindustry/world/blocks/types/production/Generator.java b/core/src/io/anuke/mindustry/world/blocks/types/production/Generator.java index f6314c749c..4afffc4582 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/production/Generator.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/production/Generator.java @@ -194,10 +194,10 @@ public class Generator extends PowerBlock{ if(target != null){ boolean interfering = isInterfering(target, rotation); - t1.trns(rotation * 90, target.block().width * tilesize / 2 + 2f + - (interfering ? Vector2.dst(tile.worldx(), tile.worldy(), target.worldx(), target.worldy()) / 2f - tilesize / 2f * target.block().width + 1 : 0)); + t1.trns(rotation * 90, target.block().size * tilesize / 2 + 2f + + (interfering ? Vector2.dst(tile.worldx(), tile.worldy(), target.worldx(), target.worldy()) / 2f - tilesize / 2f * target.block().size + 1 : 0)); - t2.trns(rotation * 90, width * tilesize / 2 + 2f); + t2.trns(rotation * 90, size * tilesize / 2 + 2f); if(!interfering){ Draw.tint(Hue.mix(Color.GRAY, Color.WHITE, 0.904f + Mathf.sin(Timers.time(), 1.7f, 0.06f))); @@ -222,8 +222,8 @@ public class Generator extends PowerBlock{ float sclx = (relative == 1 || relative == 3) ? entity.laserThickness : 1f; float scly = (relative == 1 || relative == 3) ? 1f : entity.laserThickness; Draw.rect("laserfull", - tile.worldx() + Geometry.d4[relative].x * width * tilesize / 2f, - tile.worldy() + Geometry.d4[relative].y * width * tilesize / 2f , s * sclx, s * scly); + tile.worldx() + Geometry.d4[relative].x * size * tilesize / 2f, + tile.worldy() + Geometry.d4[relative].y * size * tilesize / 2f , s * sclx, s * scly); } Draw.color(); diff --git a/core/src/io/anuke/mindustry/world/blocks/types/production/NuclearReactor.java b/core/src/io/anuke/mindustry/world/blocks/types/production/NuclearReactor.java index 9e92ca6ee0..ad9b71befb 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/production/NuclearReactor.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/production/NuclearReactor.java @@ -89,8 +89,8 @@ public class NuclearReactor extends LiquidPowerGenerator{ if(entity.heat > smokeThreshold){ float smoke = 1.0f + (entity.heat - smokeThreshold) / (1f - smokeThreshold); //ranges from 1.0 to 2.0 if(Mathf.chance(smoke / 20.0 * Timers.delta())){ - Effects.effect(Fx.reactorsmoke, tile.worldx() + Mathf.range(width * tilesize / 2f), - tile.worldy() + Mathf.random(height * tilesize / 2f)); + Effects.effect(Fx.reactorsmoke, tile.worldx() + Mathf.range(size * tilesize / 2f), + tile.worldy() + Mathf.random(size * tilesize / 2f)); } } @@ -166,7 +166,7 @@ public class NuclearReactor extends LiquidPowerGenerator{ NuclearReactorEntity entity = tile.entity(); Draw.color(coolColor, hotColor, entity.heat); - Draw.rect("white", tile.drawx(), tile.drawy(), width * tilesize, height * tilesize); + Draw.rect("white", tile.drawx(), tile.drawy(), size * tilesize, size * tilesize); if(entity.heat > flashThreshold){ float flash = 1f + ((entity.heat - flashThreshold) / (1f - flashThreshold)) * 5.4f; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/storage/CoreBlock.java b/core/src/io/anuke/mindustry/world/blocks/types/storage/CoreBlock.java index 0cb3116950..261a7e4b8f 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/storage/CoreBlock.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/storage/CoreBlock.java @@ -16,8 +16,7 @@ public class CoreBlock extends StorageBlock { health = 800; solid = true; destructible = true; - width = 3; - height = 3; + size = 3; } @Override