diff --git a/core/assets-raw/sprites/blocks/environment/grass.png b/core/assets-raw/sprites/blocks/environment/grass.png deleted file mode 100644 index 76a1491b9b..0000000000 Binary files a/core/assets-raw/sprites/blocks/environment/grass.png and /dev/null differ diff --git a/core/assets/sprites/sprites.atlas b/core/assets/sprites/sprites.atlas index e60107edbd..c54c9a8900 100644 --- a/core/assets/sprites/sprites.atlas +++ b/core/assets/sprites/sprites.atlas @@ -13,994 +13,987 @@ background index: -1 bridgeconduit rotate: false - xy: 853, 443 + xy: 623, 198 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 bridgeconduit-arrow rotate: false - xy: 863, 443 + xy: 633, 198 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 bridgeconduit-bridge rotate: false - xy: 873, 443 + xy: 643, 198 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 bridgeconduit-end rotate: false - xy: 883, 443 + xy: 592, 188 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 bridgeconveyor rotate: false - xy: 893, 443 + xy: 592, 178 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 bridgeconveyor-arrow rotate: false - xy: 903, 443 + xy: 602, 188 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 bridgeconveyor-bridge rotate: false - xy: 913, 443 + xy: 592, 168 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 bridgeconveyor-end rotate: false - xy: 923, 443 + xy: 602, 178 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-bottom rotate: false - xy: 777, 433 + xy: 632, 188 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-top rotate: false - xy: 797, 433 + xy: 622, 168 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduittunnel rotate: false - xy: 807, 433 + xy: 632, 178 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor rotate: false - xy: 817, 433 + xy: 642, 188 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyormove rotate: false - xy: 827, 433 + xy: 622, 158 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyortunnel rotate: false - xy: 837, 433 + xy: 632, 168 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 core rotate: false - xy: 823, 453 + xy: 875, 453 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 junction rotate: false - xy: 687, 297 + xy: 473, 124 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 laserconduit rotate: false - xy: 697, 297 + xy: 483, 134 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 laserconduit-arrow rotate: false - xy: 674, 287 + xy: 493, 144 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 laserconduit-bridge rotate: false - xy: 684, 287 + xy: 473, 114 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 laserconduit-end rotate: false - xy: 694, 287 + xy: 483, 124 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 laserconveyor rotate: false - xy: 557, 63 + xy: 493, 134 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 laserconveyor-arrow rotate: false - xy: 567, 63 + xy: 483, 114 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 laserconveyor-bridge rotate: false - xy: 577, 64 + xy: 493, 124 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 laserconveyor-end rotate: false - xy: 587, 64 + xy: 493, 114 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquidjunction rotate: false - xy: 361, 97 + xy: 513, 123 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquidrouter rotate: false - xy: 371, 97 + xy: 523, 133 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquidrouter-bottom rotate: false - xy: 159, 14 + xy: 533, 143 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquidrouter-liquid rotate: false - xy: 169, 18 + xy: 523, 123 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquidrouter-top rotate: false - xy: 179, 18 + xy: 533, 133 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquidtank-bottom rotate: false - xy: 927, 453 + xy: 979, 453 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 liquidtank-liquid rotate: false - xy: 953, 453 + xy: 656, 353 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 liquidtank-top rotate: false - xy: 979, 453 + xy: 651, 327 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 multiplexer rotate: false - xy: 521, 105 + xy: 677, 291 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 overflowgate rotate: false - xy: 654, 259 + xy: 513, 113 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 poweredconveyor rotate: false - xy: 664, 259 + xy: 533, 113 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 poweredconveyormove rotate: false - xy: 674, 267 + xy: 543, 113 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pulseconduit-bottom rotate: false - xy: 674, 257 + xy: 573, 136 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pulseconduit-top rotate: false - xy: 684, 257 + xy: 573, 126 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 router rotate: false - xy: 179, 8 + xy: 626, 148 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sortedunloader rotate: false - xy: 734, 352 + xy: 806, 395 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sorter rotate: false - xy: 767, 423 + xy: 806, 385 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 splitter rotate: false - xy: 787, 423 + xy: 816, 385 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 steelconveyor rotate: false - xy: 797, 423 + xy: 826, 395 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 steelconveyormove rotate: false - xy: 807, 423 + xy: 826, 385 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 teleporter-top rotate: false - xy: 69, 13 + xy: 110, 39 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 unloader rotate: false - xy: 786, 403 + xy: 977, 407 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 vault rotate: false - xy: 149, 104 + xy: 121, 13 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 vault-icon rotate: false - xy: 796, 413 + xy: 987, 407 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weaponfactory rotate: false - xy: 557, 73 + xy: 154, 58 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 blackrock1 rotate: false - xy: 298, 81 + xy: 153, 4 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackrockshadow1 rotate: false - xy: 308, 81 + xy: 716, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackstone1 rotate: false - xy: 640, 200 + xy: 726, 390 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackstone2 rotate: false - xy: 763, 443 + xy: 736, 390 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackstone3 rotate: false - xy: 773, 443 + xy: 746, 390 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackstoneblock1 rotate: false - xy: 783, 443 + xy: 756, 394 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackstoneblock2 rotate: false - xy: 793, 443 + xy: 766, 394 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackstoneblock3 rotate: false - xy: 803, 443 + xy: 1003, 411 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackstoneedge rotate: false - xy: 211, 116 + xy: 1010, 499 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 coal1 rotate: false - xy: 953, 443 + xy: 602, 168 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 coal2 rotate: false - xy: 963, 443 + xy: 612, 178 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 coal3 rotate: false - xy: 973, 443 + xy: 622, 188 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 deepwater rotate: false - xy: 857, 433 + xy: 632, 158 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirt1 rotate: false - xy: 867, 433 + xy: 642, 168 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirt2 rotate: false - xy: 877, 433 + xy: 642, 158 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirt3 rotate: false - xy: 887, 433 + xy: 363, 113 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirtedge rotate: false - xy: 1010, 499 + xy: 1010, 485 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 -grass - rotate: false - xy: 234, 161 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 grass1 rotate: false - xy: 967, 433 + xy: 677, 281 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grass2 rotate: false - xy: 977, 433 + xy: 687, 281 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grass3 rotate: false - xy: 987, 433 + xy: 697, 281 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grassblock1 rotate: false - xy: 159, 34 + xy: 756, 384 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grassblock2 rotate: false - xy: 159, 24 + xy: 766, 384 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grassedge rotate: false - xy: 211, 102 + xy: 706, 399 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 ice1 rotate: false - xy: 169, 38 + xy: 653, 198 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ice2 rotate: false - xy: 169, 28 + xy: 652, 188 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ice3 rotate: false - xy: 179, 38 + xy: 652, 178 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 iceedge rotate: false - xy: 134, 98 + xy: 221, 113 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 icerock1 rotate: false - xy: 179, 28 + xy: 652, 168 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icerock2 rotate: false - xy: 189, 38 + xy: 652, 158 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icerockshadow1 rotate: false - xy: 189, 28 + xy: 366, 59 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 rockshadow1 rotate: false - xy: 189, 28 + xy: 366, 59 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icerockshadow2 rotate: false - xy: 199, 38 + xy: 423, 143 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 rockshadow2 rotate: false - xy: 199, 38 + xy: 423, 143 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 iron1 rotate: false - xy: 209, 38 + xy: 423, 123 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 iron2 rotate: false - xy: 209, 28 + xy: 423, 113 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 iron3 rotate: false - xy: 650, 202 + xy: 433, 144 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 lava rotate: false - xy: 750, 356 + xy: 503, 143 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 lavaedge rotate: false - xy: 225, 79 + xy: 579, 226 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 lead1 rotate: false - xy: 321, 93 + xy: 513, 143 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 lead2 rotate: false - xy: 331, 93 + xy: 503, 123 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 lead3 rotate: false - xy: 341, 97 + xy: 513, 133 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor1 rotate: false - xy: 209, 18 + xy: 543, 133 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor2 rotate: false - xy: 644, 279 + xy: 553, 143 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor3 rotate: false - xy: 644, 269 + xy: 543, 123 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor4 rotate: false - xy: 654, 279 + xy: 553, 133 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor5 rotate: false - xy: 664, 279 + xy: 563, 143 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor6 rotate: false - xy: 644, 259 + xy: 553, 123 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalflooredge rotate: false - xy: 239, 79 + xy: 147, 26 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 mossblock rotate: false - xy: 654, 269 + xy: 563, 133 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 oil rotate: false - xy: 664, 269 + xy: 563, 123 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 oiledge rotate: false - xy: 253, 79 + xy: 161, 28 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 rock1 rotate: false - xy: 371, 87 + xy: 606, 148 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 rock2 rotate: false - xy: 169, 8 + xy: 616, 148 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sand1 rotate: false - xy: 209, 8 + xy: 656, 148 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sand2 rotate: false - xy: 599, 172 + xy: 777, 405 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sand3 rotate: false - xy: 599, 162 + xy: 787, 405 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sandblock1 rotate: false - xy: 599, 152 + xy: 797, 405 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sandblock2 rotate: false - xy: 599, 142 + xy: 807, 405 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sandblock3 rotate: false - xy: 599, 132 + xy: 817, 405 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sandedge rotate: false - xy: 575, 210 + xy: 309, 93 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 shrub rotate: false - xy: 597, 62 + xy: 887, 405 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 shrubshadow rotate: false - xy: 707, 327 + xy: 897, 405 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snow1 rotate: false - xy: 707, 297 + xy: 927, 405 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snow2 rotate: false - xy: 704, 287 + xy: 776, 395 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snow3 rotate: false - xy: 704, 277 + xy: 776, 385 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snowblock1 rotate: false - xy: 704, 267 + xy: 786, 395 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snowblock2 rotate: false - xy: 704, 257 + xy: 786, 385 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snowblock3 rotate: false - xy: 710, 337 + xy: 796, 395 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snowedge rotate: false - xy: 631, 210 + xy: 304, 79 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 space rotate: false - xy: 777, 423 + xy: 816, 395 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 spaceedge rotate: false - xy: 574, 196 + xy: 304, 65 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 stone1 rotate: false - xy: 857, 423 + xy: 856, 395 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stone2 rotate: false - xy: 867, 423 + xy: 856, 385 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stone3 rotate: false - xy: 877, 423 + xy: 866, 395 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stoneblock1 rotate: false - xy: 887, 423 + xy: 866, 385 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stoneblock2 rotate: false - xy: 897, 423 + xy: 876, 395 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stoneblock3 rotate: false - xy: 907, 423 + xy: 876, 385 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stoneedge rotate: false - xy: 588, 182 + xy: 332, 79 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 thorium1 rotate: false - xy: 957, 423 + xy: 906, 395 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 thorium2 rotate: false - xy: 967, 423 + xy: 906, 385 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 thorium3 rotate: false - xy: 977, 423 + xy: 916, 395 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium1 rotate: false - xy: 987, 423 + xy: 916, 385 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium2 rotate: false - xy: 766, 413 + xy: 926, 395 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium3 rotate: false - xy: 766, 403 + xy: 926, 385 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 water rotate: false - xy: 786, 393 + xy: 593, 136 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 wateredge rotate: false - xy: 602, 196 + xy: 332, 65 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 block-middle rotate: false - xy: 843, 443 + xy: 613, 198 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pump-liquid rotate: false - xy: 843, 443 + xy: 613, 198 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-liquid rotate: false - xy: 787, 433 + xy: 612, 158 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 cross-1 rotate: false - xy: 847, 433 + xy: 642, 178 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 cross-2 rotate: false - xy: 572, 274 + xy: 543, 225 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 cross-3 rotate: false - xy: 849, 453 + xy: 901, 453 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -1014,56 +1007,56 @@ cross-4 index: -1 enemyspawn rotate: false - xy: 937, 433 + xy: 413, 113 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 playerspawn rotate: false - xy: 684, 277 + xy: 523, 113 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ripples rotate: false - xy: 373, 107 + xy: 897, 415 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 shadow rotate: false - xy: 152, 44 + xy: 909, 415 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 battery rotate: false - xy: 327, 103 + xy: 955, 417 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 batterylarge rotate: false - xy: 549, 217 + xy: 466, 196 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 combustiongenerator rotate: false - xy: 983, 443 + xy: 602, 158 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 combustiongenerator-top rotate: false - xy: 993, 443 + xy: 612, 168 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1126,126 +1119,126 @@ fusionreactor-top index: -1 largesolarpanel rotate: false - xy: 901, 453 + xy: 953, 453 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 liquidcombustiongenerator rotate: false - xy: 351, 97 + xy: 523, 143 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 nuclearreactor rotate: false - xy: 415, 109 + xy: 855, 427 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 nuclearreactor-center rotate: false - xy: 441, 110 + xy: 881, 427 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 nuclearreactor-lights rotate: false - xy: 389, 98 + xy: 907, 427 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 powerinfinite rotate: false - xy: 694, 277 + xy: 553, 113 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 powernode rotate: false - xy: 684, 267 + xy: 563, 113 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 powernodelarge rotate: false - xy: 539, 105 + xy: 522, 171 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 powervoid rotate: false - xy: 694, 267 + xy: 576, 146 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 rtgenerator rotate: false - xy: 189, 8 + xy: 636, 148 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 rtgenerator-top rotate: false - xy: 199, 8 + xy: 646, 148 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 shieldgenerator rotate: false - xy: 599, 102 + xy: 847, 405 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 shieldprojector rotate: false - xy: 557, 145 + xy: 558, 189 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 solarpanel rotate: false - xy: 720, 339 + xy: 796, 385 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 teleporter rotate: false - xy: 110, 39 + xy: 84, 39 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 teleporter-top rotate: false - xy: 95, 13 + xy: 69, 13 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 thermalgenerator rotate: false - xy: 947, 423 + xy: 896, 385 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 alloysmelter rotate: false - xy: 327, 113 + xy: 945, 417 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1259,567 +1252,567 @@ biomattercompressor index: -1 biomattercompressor-frame0 rotate: false - xy: 131, 112 + xy: 489, 225 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 biomattercompressor-frame1 rotate: false - xy: 466, 204 + xy: 131, 112 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 biomattercompressor-frame2 rotate: false - xy: 721, 430 + xy: 985, 435 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 biomattercompressor-liquid rotate: false - xy: 566, 292 + xy: 680, 381 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 biomattercompressor-top rotate: false - xy: 175, 112 + xy: 566, 292 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 centrifuge rotate: false - xy: 193, 112 + xy: 584, 292 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 centrifuge-liquid rotate: false - xy: 602, 292 + xy: 525, 225 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 cryofluidmixer-bottom rotate: false - xy: 572, 256 + xy: 185, 112 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 cryofluidmixer-liquid rotate: false - xy: 590, 274 + xy: 203, 112 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 cryofluidmixer-top rotate: false - xy: 590, 256 + xy: 492, 207 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 cultivator rotate: false - xy: 608, 274 + xy: 510, 207 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 cultivator-middle rotate: false - xy: 608, 256 + xy: 528, 207 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 cultivator-top rotate: false - xy: 620, 292 + xy: 546, 207 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 extractor rotate: false - xy: 947, 433 + xy: 346, 59 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 fluxpump rotate: false - xy: 957, 433 + xy: 356, 59 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 incinerator rotate: false - xy: 199, 28 + xy: 423, 133 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 irondrill rotate: false - xy: 682, 347 + xy: 433, 134 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 irondrill-rotator rotate: false - xy: 692, 347 + xy: 443, 144 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titaniumdrill-rotator rotate: false - xy: 692, 347 + xy: 443, 144 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 irondrill-top rotate: false - xy: 680, 337 + xy: 433, 124 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 itemsource rotate: false - xy: 722, 349 + xy: 483, 144 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 itemvoid rotate: false - xy: 677, 297 + xy: 463, 114 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 laserdrill rotate: false - xy: 485, 105 + xy: 695, 327 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 laserdrill-rotator rotate: false - xy: 503, 123 + xy: 695, 309 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 laserdrill-top rotate: false - xy: 521, 141 + xy: 720, 400 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 lavasmelter rotate: false - xy: 760, 356 + xy: 503, 133 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquidsource rotate: false - xy: 189, 18 + xy: 543, 143 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 melter rotate: false - xy: 199, 18 + xy: 533, 123 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 nucleardrill rotate: false - xy: 656, 353 + xy: 751, 422 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 nucleardrill-rim rotate: false - xy: 651, 327 + xy: 777, 427 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 nucleardrill-rotator rotate: false - xy: 682, 357 + xy: 803, 427 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 nucleardrill-top rotate: false - xy: 708, 359 + xy: 829, 427 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 oilextractor rotate: false - xy: 651, 301 + xy: 933, 427 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 oilextractor-liquid rotate: false - xy: 415, 83 + xy: 959, 427 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 oilextractor-rotator rotate: false - xy: 441, 84 + xy: 680, 399 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 oilextractor-top rotate: false - xy: 84, 39 + xy: 651, 301 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 oilrefinery rotate: false - xy: 674, 277 + xy: 503, 113 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 plasmadrill rotate: false - xy: 268, 161 + xy: 234, 161 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 plasmadrill-rim rotate: false - xy: 302, 161 + xy: 268, 161 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 plasmadrill-rotator rotate: false - xy: 336, 161 + xy: 302, 161 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 plasmadrill-top rotate: false - xy: 370, 161 + xy: 336, 161 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 plasticformer rotate: false - xy: 521, 87 + xy: 695, 291 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 plasticformer-top rotate: false - xy: 539, 159 + xy: 504, 189 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 poweralloysmelter rotate: false - xy: 539, 141 + xy: 504, 171 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 poweralloysmelter-top rotate: false - xy: 539, 123 + xy: 522, 189 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 powersmelter rotate: false - xy: 539, 87 + xy: 540, 189 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 powersmelter-top rotate: false - xy: 557, 163 + xy: 540, 171 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 siliconsmelter-top rotate: false - xy: 557, 163 + xy: 540, 171 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 pulverizer rotate: false - xy: 694, 257 + xy: 573, 116 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pulverizer-rotator rotate: false - xy: 648, 249 + xy: 586, 146 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pump rotate: false - xy: 658, 249 + xy: 583, 136 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 reinforceddrill rotate: false - xy: 341, 87 + xy: 583, 126 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 reinforceddrill-rotator rotate: false - xy: 351, 87 + xy: 583, 116 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 reinforceddrill-top rotate: false - xy: 361, 87 + xy: 596, 148 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 separator rotate: false - xy: 599, 122 + xy: 827, 405 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 separator-liquid rotate: false - xy: 599, 112 + xy: 837, 405 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 siliconextractor rotate: false - xy: 707, 317 + xy: 907, 405 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 siliconsmelter rotate: false - xy: 557, 127 + xy: 558, 171 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 smelter rotate: false - xy: 707, 307 + xy: 917, 405 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 steeldrill rotate: false - xy: 817, 423 + xy: 836, 395 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 steeldrill-rotator rotate: false - xy: 827, 423 + xy: 836, 385 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 steeldrill-top rotate: false - xy: 837, 423 + xy: 846, 395 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stonedrill rotate: false - xy: 917, 423 + xy: 886, 395 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stoneformer rotate: false - xy: 927, 423 + xy: 886, 385 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titaniumdrill rotate: false - xy: 776, 413 + xy: 937, 405 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titaniumdrill-top rotate: false - xy: 766, 393 + xy: 936, 395 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 waterextractor rotate: false - xy: 485, 69 + xy: 540, 153 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 waterextractor-liquid rotate: false - xy: 503, 69 + xy: 558, 153 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 waterextractor-rotator rotate: false - xy: 521, 69 + xy: 136, 58 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 waterextractor-top rotate: false - xy: 539, 69 + xy: 136, 40 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-1 rotate: false - xy: 833, 443 + xy: 603, 198 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-2 rotate: false - xy: 739, 430 + xy: 507, 225 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-2-top rotate: false - xy: 584, 292 + xy: 149, 112 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-3 rotate: false - xy: 415, 135 + xy: 797, 453 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-3-top rotate: false - xy: 441, 136 + xy: 823, 453 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 chainturret rotate: false - xy: 732, 412 + xy: 167, 112 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 doubleturret rotate: false - xy: 917, 433 + xy: 393, 113 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 flakturret rotate: false - xy: 243, 109 + xy: 134, 94 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 flakturret-heat rotate: false - xy: 261, 109 + xy: 134, 76 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 flakturret-panel-left rotate: false - xy: 466, 186 + xy: 152, 94 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 flakturret-panel-right rotate: false - xy: 464, 168 + xy: 152, 76 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -1840,7 +1833,7 @@ flameturret-shoot index: -1 fornaxcannon rotate: false - xy: 875, 453 + xy: 927, 453 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -1861,266 +1854,266 @@ gatlingturret-heat index: -1 laserturret rotate: false - xy: 650, 289 + xy: 837, 415 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 laserturret-heat rotate: false - xy: 662, 289 + xy: 849, 415 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 liquidturret rotate: false - xy: 485, 87 + xy: 738, 400 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 liquidturret-liquid rotate: false - xy: 503, 105 + xy: 756, 404 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 megarepairturret rotate: false - xy: 521, 123 + xy: 985, 417 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 missileturret rotate: false - xy: 503, 87 + xy: 1003, 421 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 railgunturret rotate: false - xy: 337, 107 + xy: 861, 415 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 railgunturret-heat rotate: false - xy: 349, 107 + xy: 873, 415 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 repairturret rotate: false - xy: 361, 107 + xy: 885, 415 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 teslaturret rotate: false - xy: 147, 32 + xy: 921, 415 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 teslaturret-heat rotate: false - xy: 147, 20 + xy: 933, 415 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 titancannon rotate: false - xy: 121, 13 + xy: 95, 13 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 flierfactory rotate: false - xy: 484, 195 + xy: 170, 94 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 walkerfactory rotate: false - xy: 484, 195 + xy: 170, 94 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 flierfactory-top rotate: false - xy: 502, 195 + xy: 170, 76 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 walkerfactory-top rotate: false - xy: 502, 195 + xy: 170, 76 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 flierfactory-top-open rotate: false - xy: 520, 195 + xy: 188, 94 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 walkerfactory-top-open rotate: false - xy: 520, 195 + xy: 188, 94 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 compositewall rotate: false - xy: 767, 433 + xy: 622, 178 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 door rotate: false - xy: 897, 433 + xy: 373, 114 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 door-large rotate: false - xy: 626, 274 + xy: 682, 363 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 door-large-open rotate: false - xy: 626, 256 + xy: 561, 225 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 door-open rotate: false - xy: 907, 433 + xy: 383, 114 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 duriumwall rotate: false - xy: 927, 433 + xy: 403, 113 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 duriumwall-large rotate: false - xy: 225, 109 + xy: 564, 207 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 ironwall rotate: false - xy: 690, 337 + xy: 443, 134 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 steelwall rotate: false - xy: 847, 423 + xy: 846, 385 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 steelwall-large rotate: false - xy: 557, 109 + xy: 504, 153 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 stonewall rotate: false - xy: 937, 423 + xy: 896, 395 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titaniumshieldwall rotate: false - xy: 776, 403 + xy: 936, 385 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titaniumwall rotate: false - xy: 786, 413 + xy: 947, 407 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titaniumwall-large rotate: false - xy: 557, 91 + xy: 522, 153 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 blank rotate: false - xy: 763, 487 + xy: 489, 222 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 bullet rotate: false - xy: 136, 39 + xy: 492, 196 size: 9, 9 orig: 9, 9 offset: 0, 0 index: -1 bullet-back rotate: false - xy: 214, 91 + xy: 224, 102 size: 9, 9 orig: 9, 9 offset: 0, 0 index: -1 casing rotate: false - xy: 207, 106 + xy: 220, 70 size: 2, 4 orig: 2, 4 offset: 0, 0 index: -1 enemyarrow rotate: false - xy: 757, 430 + xy: 235, 102 size: 8, 7 orig: 8, 7 offset: 0, 0 index: -1 laser rotate: false - xy: 677, 339 + xy: 674, 287 size: 1, 12 orig: 1, 12 offset: 0, 0 @@ -2141,119 +2134,119 @@ laserfull index: -1 shell rotate: false - xy: 214, 80 + xy: 582, 215 size: 9, 9 orig: 9, 9 offset: 0, 0 index: -1 shell-back rotate: false - xy: 267, 80 + xy: 582, 204 size: 9, 9 orig: 9, 9 offset: 0, 0 index: -1 shot rotate: false - xy: 599, 72 + xy: 877, 405 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-biomatter rotate: false - xy: 677, 327 + xy: 453, 144 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-coal rotate: false - xy: 677, 317 + xy: 433, 114 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-densealloy rotate: false - xy: 687, 327 + xy: 443, 124 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-iron rotate: false - xy: 677, 307 + xy: 453, 134 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-lead rotate: false - xy: 687, 317 + xy: 463, 144 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-plastic rotate: false - xy: 687, 307 + xy: 443, 114 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-sand rotate: false - xy: 702, 347 + xy: 453, 124 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-silicon rotate: false - xy: 700, 337 + xy: 463, 134 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-steel rotate: false - xy: 697, 327 + xy: 473, 144 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-stone rotate: false - xy: 697, 317 + xy: 453, 114 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-thorium rotate: false - xy: 697, 307 + xy: 463, 124 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-titanium rotate: false - xy: 712, 349 + xy: 473, 134 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 standard-mech rotate: false - xy: 574, 182 + xy: 318, 79 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 standard-ship rotate: false - xy: 588, 196 + xy: 318, 65 size: 12, 12 orig: 12, 12 offset: 0, 0 @@ -2310,7 +2303,7 @@ border index: -1 button rotate: false - xy: 706, 385 + xy: 426, 154 size: 24, 40 split: 10, 10, 6, 10 orig: 24, 40 @@ -2334,7 +2327,7 @@ button-over index: -1 button-map rotate: false - xy: 680, 383 + xy: 400, 153 size: 24, 40 split: 10, 10, 5, 10 orig: 24, 40 @@ -2358,7 +2351,7 @@ button-map-over index: -1 button-select rotate: false - xy: 797, 453 + xy: 849, 453 size: 24, 24 split: 4, 4, 4, 4 orig: 24, 24 @@ -2366,28 +2359,28 @@ button-select index: -1 check-off rotate: false - xy: 404, 161 + xy: 370, 161 size: 28, 32 orig: 28, 32 offset: 0, 0 index: -1 check-on rotate: false - xy: 434, 162 + xy: 225, 127 size: 28, 32 orig: 28, 32 offset: 0, 0 index: -1 check-on-over rotate: false - xy: 225, 127 + xy: 255, 127 size: 28, 32 orig: 28, 32 offset: 0, 0 index: -1 check-over rotate: false - xy: 255, 127 + xy: 285, 127 size: 28, 32 orig: 28, 32 offset: 0, 0 @@ -2422,28 +2415,28 @@ discord-banner-over index: -1 controller-cursor rotate: false - xy: 732, 394 + xy: 602, 292 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-about rotate: false - xy: 279, 107 + xy: 154, 42 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-add rotate: false - xy: 295, 107 + xy: 172, 60 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-admin rotate: false - xy: 311, 107 + xy: 188, 60 size: 14, 14 orig: 14, 14 offset: 0, 0 @@ -2464,7 +2457,7 @@ icon-areaDelete index: -1 icon-arrow rotate: false - xy: 175, 96 + xy: 204, 60 size: 14, 14 orig: 14, 14 offset: 0, 0 @@ -2485,49 +2478,49 @@ icon-arrow-left index: -1 icon-arrow-right rotate: false - xy: 602, 184 + xy: 147, 14 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-arrow-up rotate: false - xy: 616, 198 + xy: 346, 81 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-back rotate: false - xy: 538, 195 + xy: 188, 76 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-ban rotate: false - xy: 191, 96 + xy: 235, 111 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-cancel rotate: false - xy: 584, 240 + xy: 251, 111 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-chat rotate: false - xy: 628, 198 + xy: 346, 69 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-check rotate: false - xy: 600, 240 + xy: 267, 111 size: 14, 14 orig: 14, 14 offset: 0, 0 @@ -2555,504 +2548,504 @@ icon-close-over index: -1 icon-crafting rotate: false - xy: 575, 170 + xy: 358, 81 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-cursor rotate: false - xy: 575, 158 + xy: 358, 69 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-defense rotate: false - xy: 587, 170 + xy: 638, 304 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-dev-builds rotate: false - xy: 616, 240 + xy: 283, 111 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-discord rotate: false - xy: 632, 240 + xy: 299, 111 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-distribution rotate: false - xy: 575, 146 + xy: 638, 292 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-donate rotate: false - xy: 134, 82 + xy: 315, 107 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-dots rotate: false - xy: 134, 66 + xy: 331, 107 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-editor rotate: false - xy: 136, 50 + xy: 347, 107 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-egg rotate: false - xy: 150, 88 + xy: 584, 240 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-exit rotate: false - xy: 150, 72 + xy: 600, 240 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-file-text rotate: false - xy: 152, 56 + xy: 616, 240 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-fill rotate: false - xy: 556, 199 + xy: 206, 94 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-floppy rotate: false - xy: 750, 414 + xy: 632, 240 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-folder rotate: false - xy: 750, 398 + xy: 224, 86 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-folder-parent rotate: false - xy: 734, 378 + xy: 224, 70 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-github rotate: false - xy: 750, 382 + xy: 245, 95 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-google-play rotate: false - xy: 734, 362 + xy: 261, 95 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-grid rotate: false - xy: 467, 150 + xy: 206, 76 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-hold rotate: false - xy: 587, 158 + xy: 650, 289 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-holdDelete rotate: false - xy: 575, 134 + xy: 662, 289 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-home rotate: false - xy: 750, 366 + xy: 277, 95 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-host rotate: false - xy: 225, 93 + xy: 293, 95 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-info rotate: false - xy: 587, 146 + xy: 220, 58 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-itch.io rotate: false - xy: 241, 93 + xy: 240, 79 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-line rotate: false - xy: 467, 132 + xy: 572, 274 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-link rotate: false - xy: 257, 93 + xy: 256, 79 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-liquid rotate: false - xy: 575, 122 + xy: 644, 277 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-load rotate: false - xy: 273, 91 + xy: 272, 79 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-load-image rotate: false - xy: 467, 114 + xy: 572, 256 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-load-map rotate: false - xy: 467, 96 + xy: 590, 274 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-loading rotate: false - xy: 467, 78 + xy: 590, 256 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-logic rotate: false - xy: 587, 134 + xy: 644, 265 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-menu rotate: false - xy: 575, 110 + xy: 656, 277 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-menu-large rotate: false - xy: 484, 177 + xy: 608, 274 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-none rotate: false - xy: 587, 122 + xy: 656, 265 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-pause rotate: false - xy: 575, 98 + xy: 713, 333 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-pencil rotate: false - xy: 502, 177 + xy: 608, 256 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-pencil-small rotate: false - xy: 289, 91 + xy: 288, 79 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-pick rotate: false - xy: 520, 177 + xy: 620, 292 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-play rotate: false - xy: 587, 110 + xy: 713, 321 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-play-2 rotate: false - xy: 305, 91 + xy: 240, 63 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-players rotate: false - xy: 575, 86 + xy: 713, 309 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-power rotate: false - xy: 587, 98 + xy: 713, 297 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-production rotate: false - xy: 575, 74 + xy: 713, 285 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-quit rotate: false - xy: 575, 224 + xy: 256, 63 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-redo rotate: false - xy: 538, 177 + xy: 626, 274 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-refresh rotate: false - xy: 591, 224 + xy: 272, 63 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-rename rotate: false - xy: 607, 224 + xy: 288, 63 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-resize rotate: false - xy: 556, 181 + xy: 626, 256 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-rotate rotate: false - xy: 623, 224 + xy: 593, 224 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-rotate-arrow rotate: false - xy: 639, 224 + xy: 609, 224 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-rotate-left rotate: false - xy: 166, 80 + xy: 625, 224 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-rotate-right rotate: false - xy: 182, 80 + xy: 641, 224 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-save rotate: false - xy: 198, 80 + xy: 593, 208 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-save-image rotate: false - xy: 485, 159 + xy: 682, 345 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-save-map rotate: false - xy: 485, 141 + xy: 677, 327 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-settings rotate: false - xy: 587, 86 + xy: 777, 415 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-terrain rotate: false - xy: 503, 159 + xy: 677, 309 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-tools rotate: false - xy: 168, 64 + xy: 609, 208 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-touch rotate: false - xy: 587, 74 + xy: 789, 415 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-touchDelete rotate: false - xy: 645, 212 + xy: 801, 415 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-trash rotate: false - xy: 184, 64 + xy: 625, 208 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-trash-16 rotate: false - xy: 485, 123 + xy: 698, 381 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-trello rotate: false - xy: 200, 64 + xy: 641, 208 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-tutorial rotate: false - xy: 168, 48 + xy: 576, 188 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-undo rotate: false - xy: 503, 141 + xy: 700, 363 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-units rotate: false - xy: 638, 304 + xy: 813, 415 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-weapon rotate: false - xy: 638, 292 + xy: 825, 415 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-wiki rotate: false - xy: 184, 48 + xy: 576, 172 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-zoom rotate: false - xy: 521, 159 + xy: 700, 345 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-zoom-small rotate: false - xy: 200, 48 + xy: 576, 156 size: 14, 14 orig: 14, 14 offset: 0, 0 @@ -3066,7 +3059,7 @@ logotext index: -1 pane rotate: false - xy: 311, 123 + xy: 341, 123 size: 24, 36 split: 10, 10, 5, 5 orig: 24, 36 @@ -3074,7 +3067,7 @@ pane index: -1 pane-button rotate: false - xy: 285, 123 + xy: 315, 123 size: 24, 36 split: 10, 10, 5, 5 orig: 24, 36 @@ -3082,7 +3075,7 @@ pane-button index: -1 scroll rotate: false - xy: 389, 124 + xy: 367, 124 size: 24, 35 split: 10, 10, 6, 5 orig: 24, 35 @@ -3107,7 +3100,7 @@ scroll-knob-horizontal index: -1 scroll-knob-vertical rotate: false - xy: 363, 119 + xy: 478, 154 size: 24, 40 split: 10, 10, 6, 10 orig: 24, 40 @@ -3115,7 +3108,7 @@ scroll-knob-vertical index: -1 scroll-knob-vertical-black rotate: false - xy: 337, 119 + xy: 452, 154 size: 24, 40 split: 10, 10, 6, 10 orig: 24, 40 @@ -3123,14 +3116,14 @@ scroll-knob-vertical-black index: -1 selection rotate: false - xy: 766, 487 + xy: 763, 487 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 slider rotate: false - xy: 207, 96 + xy: 774, 412 size: 1, 8 orig: 1, 8 offset: 0, 0 @@ -3158,7 +3151,7 @@ slider-knob-over index: -1 slider-vertical rotate: false - xy: 721, 427 + xy: 153, 1 size: 8, 1 orig: 8, 1 offset: 0, 0 @@ -3186,7 +3179,7 @@ text-sides-over index: -1 textfield rotate: false - xy: 519, 213 + xy: 721, 418 size: 28, 28 split: 6, 6, 6, 6 orig: 28, 28 @@ -3194,7 +3187,7 @@ textfield index: -1 textfield-over rotate: false - xy: 489, 213 + xy: 393, 123 size: 28, 28 split: 2, 2, 2, 2 orig: 28, 28 @@ -3225,126 +3218,126 @@ window-empty index: -1 flier rotate: false - xy: 1010, 485 + xy: 706, 413 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 scout rotate: false - xy: 589, 210 + xy: 323, 93 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 scout-base rotate: false - xy: 603, 210 + xy: 337, 93 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 standard-mech-base rotate: false - xy: 603, 210 + xy: 337, 93 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 scout-leg rotate: false - xy: 617, 210 + xy: 351, 93 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 standard-mech-leg rotate: false - xy: 617, 210 + xy: 351, 93 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 beam rotate: false - xy: 278, 81 + xy: 965, 417 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 beam-equip rotate: false - xy: 288, 81 + xy: 975, 417 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blaster rotate: false - xy: 813, 443 + xy: 1013, 411 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blaster-equip rotate: false - xy: 823, 443 + xy: 593, 198 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 clustergun rotate: false - xy: 933, 443 + xy: 612, 188 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 clustergun-equip rotate: false - xy: 943, 443 + xy: 592, 158 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 shockgun rotate: false - xy: 599, 92 + xy: 857, 405 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 shockgun-equip rotate: false - xy: 599, 82 + xy: 867, 405 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 triblaster rotate: false - xy: 766, 383 + xy: 957, 407 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 triblaster-equip rotate: false - xy: 776, 393 + xy: 967, 407 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 vulcan rotate: false - xy: 766, 373 + xy: 573, 106 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 vulcan-equip rotate: false - xy: 776, 383 + xy: 583, 106 size: 8, 8 orig: 8, 8 offset: 0, 0 diff --git a/core/assets/sprites/sprites.png b/core/assets/sprites/sprites.png index 94c44f44c3..5c894574a3 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 eade061535..60628748be 100644 --- a/core/assets/version.properties +++ b/core/assets/version.properties @@ -1,7 +1,7 @@ #Autogenerated file. Do not modify. -#Wed Apr 18 15:22:14 EDT 2018 +#Wed Apr 18 21:17:48 EDT 2018 version=release -androidBuildCode=988 +androidBuildCode=1044 name=Mindustry code=3.5 build=custom build diff --git a/core/src/io/anuke/mindustry/core/Renderer.java b/core/src/io/anuke/mindustry/core/Renderer.java index 861cd10425..f52b495d93 100644 --- a/core/src/io/anuke/mindustry/core/Renderer.java +++ b/core/src/io/anuke/mindustry/core/Renderer.java @@ -205,8 +205,8 @@ public class Renderer extends RendererModule{ batch.begin(); //clears shield surface - Graphics.surface(shieldSurface); - Graphics.surface(); + //Graphics.surface(shieldSurface); + //Graphics.surface(); drawPadding(); @@ -229,14 +229,10 @@ public class Renderer extends RendererModule{ Entities.draw(airItemGroup); Entities.draw(effectGroup); - drawShield(); + //drawShield(); drawOverlay(); - if(Settings.getBool("indicators") && showUI){ - drawEnemyMarkers(); - } - if(pixelate) Graphics.flushSurface(); @@ -249,7 +245,7 @@ public class Renderer extends RendererModule{ for(Team team : Team.values()){ EntityGroup group = unitGroups[team.ordinal()]; if(group.count(p -> p.isFlying() == flying) + - playerGroup.count(p -> p.isFlying() == flying && p.team == team) == 0) continue; + playerGroup.count(p -> p.isFlying() == flying && p.team == team) == 0 && flying) continue; Shaders.outline.color.set(team.color); @@ -331,31 +327,6 @@ public class Renderer extends RendererModule{ Draw.tscl(fontscale); } - //TODO implement - void drawEnemyMarkers(){ - /* - Graphics.surface(indicatorSurface); - Draw.color(Color.RED); - - for(BaseUnit enemy : enemyGroup.all()) { - - if (rect.setSize(camera.viewportWidth, camera.viewportHeight).setCenter(camera.position.x, camera.position.y) - .overlaps(enemy.hitbox.getRect(enemy.x, enemy.y))) { - continue; - } - - float angle = Angles.angle(camera.position.x, camera.position.y, enemy.x, enemy.y); - float tx = Angles.trnsx(angle, Unit.dp.scl(20f)); - float ty = Angles.trnsy(angle, Unit.dp.scl(20f)); - Draw.rect("enemyarrow", camera.position.x + tx, camera.position.y + ty, angle); - } - - Draw.color(); - Draw.alpha(0.4f); - Graphics.flushSurface(); - Draw.color();*/ - } - void drawShield(){ if(shieldGroup.size() == 0 && shieldDraws.size == 0) return; diff --git a/core/src/io/anuke/mindustry/graphics/BlockRenderer.java b/core/src/io/anuke/mindustry/graphics/BlockRenderer.java index 68cb6fc213..4e31b718bd 100644 --- a/core/src/io/anuke/mindustry/graphics/BlockRenderer.java +++ b/core/src/io/anuke/mindustry/graphics/BlockRenderer.java @@ -105,7 +105,9 @@ public class BlockRenderer{ Draw.color(); Graphics.end(); - //floorRenderer.drawCache(DrawLayer.walls, crangex, crangey); + floorRenderer.beginDraw(); + floorRenderer.drawLayer(DrawLayer.walls); + floorRenderer.endDraw(); Graphics.begin(); Arrays.sort(requests.items, 0, requestidx); @@ -178,6 +180,14 @@ public class BlockRenderer{ floorRenderer.clearTiles(); } + public void beginFloor(){ + floorRenderer.beginDraw(); + } + + public void endFloor(){ + floorRenderer.endDraw(); + } + public void drawFloor(){ floorRenderer.drawFloor(); } diff --git a/core/src/io/anuke/mindustry/graphics/DrawLayer.java b/core/src/io/anuke/mindustry/graphics/DrawLayer.java index e646229559..e3eb6070a5 100644 --- a/core/src/io/anuke/mindustry/graphics/DrawLayer.java +++ b/core/src/io/anuke/mindustry/graphics/DrawLayer.java @@ -3,7 +3,6 @@ package io.anuke.mindustry.graphics; import com.badlogic.gdx.graphics.Color; import io.anuke.ucore.core.Core; import io.anuke.ucore.core.Graphics; -import io.anuke.ucore.graphics.CacheBatch; import io.anuke.ucore.graphics.Draw; import io.anuke.ucore.graphics.Shader; @@ -12,78 +11,72 @@ import static io.anuke.mindustry.Vars.renderer; public enum DrawLayer { water{ @Override - public void begin(CacheBatch batch){ - beginShader(batch); + public void begin(){ + beginShader(); } @Override - public void end(CacheBatch batch){ - endShader(batch, Shaders.water); + public void end(){ + endShader(Shaders.water); } }, lava{ @Override - public void begin(CacheBatch batch){ - beginShader(batch); + public void begin(){ + beginShader(); } @Override - public void end(CacheBatch batch){ - endShader(batch, Shaders.lava); + public void end(){ + endShader(Shaders.lava); } }, oil{ @Override - public void begin(CacheBatch batch){ - beginShader(batch); + public void begin(){ + beginShader(); } @Override - public void end(CacheBatch batch){ - endShader(batch, Shaders.oil); + public void end(){ + endShader(Shaders.oil); } }, space{ @Override - public void begin(CacheBatch batch){ - beginShader(batch); + public void begin(){ + beginShader(); } @Override - public void end(CacheBatch batch){ - endShader(batch, Shaders.space); + public void end(){ + endShader(Shaders.space); } }, normal, walls; - public void begin(CacheBatch batch){ - batch.setProjectionMatrix(Core.camera.combined); - Graphics.useBatch(batch.drawBatch()); - - Graphics.begin(); + public void begin(){ + } - public void end(CacheBatch batch){ - Graphics.end(); - - Graphics.popBatch(); + public void end(){ + } - protected void beginShader(CacheBatch batch){ - batch.setProjectionMatrix(Core.camera.combined); - Graphics.useBatch(batch.drawBatch()); - - Graphics.begin(); - Graphics.surface(renderer.waterSurface); + protected void beginShader(){ + renderer.getBlocks().endFloor(); + renderer.waterSurface.getBuffer().begin(); Graphics.clear(Color.CLEAR); + renderer.getBlocks().beginFloor(); } - public void endShader(CacheBatch batch, Shader shader){ - Graphics.surface(); - Graphics.end(); + public void endShader(Shader shader){ + renderer.getBlocks().endFloor(); + renderer.waterSurface.getBuffer().end(); + + renderer.pixelSurface.getBuffer().begin(); - Graphics.popBatch(); Graphics.shader(shader); Graphics.begin(); @@ -91,5 +84,6 @@ public enum DrawLayer { Core.camera.viewportWidth * Core.camera.zoom, -Core.camera.viewportHeight * Core.camera.zoom); Graphics.end(); Graphics.shader(); + renderer.getBlocks().beginFloor(); } } diff --git a/core/src/io/anuke/mindustry/graphics/FloorRenderer.java b/core/src/io/anuke/mindustry/graphics/FloorRenderer.java index 0b7593a5ac..cda9f31c9b 100644 --- a/core/src/io/anuke/mindustry/graphics/FloorRenderer.java +++ b/core/src/io/anuke/mindustry/graphics/FloorRenderer.java @@ -6,10 +6,13 @@ import com.badlogic.gdx.graphics.VertexAttributes.Usage; import com.badlogic.gdx.graphics.g2d.TextureRegion; import com.badlogic.gdx.graphics.glutils.ShaderProgram; import com.badlogic.gdx.math.MathUtils; -import com.badlogic.gdx.utils.NumberUtils; +import com.badlogic.gdx.utils.IntArray; +import com.badlogic.gdx.utils.IntSet; +import com.badlogic.gdx.utils.IntSet.IntSetIterator; import com.badlogic.gdx.utils.async.AsyncExecutor; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Tile; +import io.anuke.mindustry.world.blocks.types.Floor; import io.anuke.ucore.core.Core; import io.anuke.ucore.core.Graphics; import io.anuke.ucore.core.Timers; @@ -20,13 +23,29 @@ import static io.anuke.mindustry.Vars.tilesize; import static io.anuke.mindustry.Vars.world; public class FloorRenderer { - private final static int vsize = 6; + private final static int vsize = 4; private final static int chunksize = 32; private AsyncExecutor executor = new AsyncExecutor(4); private ShaderProgram program = createDefaultShader(); private Chunk[][] cache; - private float z = 0f; + private IntSet drawnLayerSet = new IntSet(); + private IntArray drawnLayers = new IntArray(); + private short[] indices; + + public FloorRenderer(){ + int len = chunksize*chunksize*vsize * 6; + indices = new short[len]; + short j = 0; + for (int i = 0; i < len; i += 6, j += 4) { + indices[i] = j; + indices[i + 1] = (short)(j + 1); + indices[i + 2] = (short)(j + 2); + indices[i + 3] = (short)(j + 2); + indices[i + 4] = (short)(j + 3); + indices[i + 5] = j; + } + } public void drawFloor(){ @@ -53,27 +72,21 @@ public class FloorRenderer { } } - Graphics.end(); + int layers = DrawLayer.values().length; - Graphics.clear(Color.CLEAR); - Gdx.gl.glEnable(GL20.GL_BLEND); - - program.begin(); - - Core.atlas.getTextures().first().bind(); - - program.setUniformMatrix("u_projTrans", Core.camera.combined); - program.setUniformi("u_texture", 0); + drawnLayers.clear(); + drawnLayerSet.clear(); + //preliminary layer check: for(int x = -crangex; x <= crangex; x++){ for(int y = -crangey; y <= crangey; y++){ int worldx = Mathf.scl(camera.position.x, chunksize * tilesize) + x; int worldy = Mathf.scl(camera.position.y, chunksize * tilesize) + y; - if(!Mathf.inBounds(worldx, worldy, cache)) + if (!Mathf.inBounds(worldx, worldy, cache)) continue; - if(cache[worldx][worldy] == null){ + if (cache[worldx][worldy] == null) { cache[worldx][worldy] = new Chunk(); executor.submit(() -> cacheChunk(worldx, worldy)); continue; @@ -81,21 +94,81 @@ public class FloorRenderer { Chunk chunk = cache[worldx][worldy]; - if(!chunk.rendered){ + if (!chunk.rendered) { continue; } - chunk.mesh.render(program, GL20.GL_TRIANGLES, 0, chunk.length); - - //Core.batch.draw(Core.atlas.getTextures().first(), chunk.vertices, 0, chunk.length); + //loop through all layers, and add layer index if it exists + for(int i = 0; i < layers - 1; i ++){ + if(chunk.lengths[i] > 0){ + drawnLayerSet.add(i); + } + } } } - program.end(); + IntSetIterator it = drawnLayerSet.iterator(); + while(it.hasNext){ + drawnLayers.add(it.next()); + } + drawnLayers.sort(); + + Graphics.end(); + beginDraw(); + + for(int i = 0; i < drawnLayers.size; i ++) { + DrawLayer layer = DrawLayer.values()[drawnLayers.get(i)]; + + drawLayer(layer); + } + + endDraw(); Graphics.begin(); } + public void beginDraw(){ + Gdx.gl.glEnable(GL20.GL_BLEND); + + Core.atlas.getTextures().first().bind(); + + program.begin(); + program.setUniformMatrix("u_projTrans", Core.camera.combined); + program.setUniformi("u_texture", 0); + } + + public void endDraw(){ + program.end(); + } + + public void drawLayer(DrawLayer layer){ + OrthographicCamera camera = Core.camera; + + int crangex = (int)(camera.viewportWidth * camera.zoom / (chunksize * tilesize))+1; + int crangey = (int)(camera.viewportHeight * camera.zoom / (chunksize * tilesize))+1; + + layer.begin(); + + for (int x = -crangex; x <= crangex; x++) { + for (int y = -crangey; y <= crangey; y++) { + int worldx = Mathf.scl(camera.position.x, chunksize * tilesize) + x; + int worldy = Mathf.scl(camera.position.y, chunksize * tilesize) + y; + + if(!Mathf.inBounds(worldx, worldy, cache) || cache[worldx][worldy] == null || !cache[worldx][worldy].rendered){ + continue; + } + + Chunk chunk = cache[worldx][worldy]; + + chunk.mesh.render(program, GL20.GL_TRIANGLES, + chunk.offsets[layer.ordinal()] / vsize, + chunk.lengths[layer.ordinal()] / vsize); + } + } + + layer.end(); + } + private void fillChunk(float x, float y){ Draw.color(Color.GRAY); Draw.crect("white", x, y, chunksize * tilesize, chunksize * tilesize); @@ -104,11 +177,30 @@ public class FloorRenderer { private Chunk cacheChunk(int cx, int cy){ Chunk chunk = cache[cx][cy]; - chunk.vertices = new float[chunksize*chunksize*vsize * 4*6]; - int idx = 0; + chunk.vertices = new float[DrawLayer.values().length*chunksize*chunksize*vsize*4*6]; + + for(DrawLayer layer : DrawLayer.values()){ + cacheChunkLayer(cx, cy, chunk, layer); + } + + Timers.run(0f, () -> { + chunk.mesh = new Mesh(true, chunk.vertices.length, 0, + new VertexAttribute(Usage.Position, 2, "a_position"), + new VertexAttribute(Usage.TextureCoordinates, 2, "a_texCoord0")); + + chunk.mesh.setVertices(chunk.vertices, 0, chunk.idx); + + chunk.rendered = true; + }); + return chunk; + } + + private void cacheChunkLayer(int cx, int cy, Chunk chunk, DrawLayer layer){ float[] vertices = chunk.vertices; - float color = NumberUtils.intToFloatColor(Color.WHITE.toIntBits()); + chunk.offsets[layer.ordinal()] = chunk.idx; + + int idx = chunk.idx; TextureRegion region = new TextureRegion(Core.atlas.getTextures().first()); for(int tilex = cx * chunksize; tilex < (cx + 1) * chunksize; tilex++){ @@ -116,98 +208,75 @@ public class FloorRenderer { Tile tile = world.tile(tilex, tiley); if(tile == null) continue; - Block block = tile.floor(); - if(!Draw.hasRegion(block.name()) || Draw.region(block.name()).getRegionWidth() == 8){ - TextureRegion base = Draw.region(block.variants > 0 ? (block.name() + MathUtils.random(1, block.variants)) : block.name()); - idx = draw(vertices, idx, base, tile.worldx(), tile.worldy(), color); + if(tile.floor().drawLayer == layer && tile.block().drawLayer != DrawLayer.walls){ + idx = drawFloor(tile, idx, region, vertices, false); + }else if(tile.floor().drawLayer.ordinal() < layer.ordinal() && tile.block().drawLayer != DrawLayer.walls){ + idx = drawFloor(tile, idx, region, vertices, true); + } - for(int dx = -1; dx <= 1; dx ++){ - for(int dy = -1; dy <= 1; dy ++){ - - if(dx == 0 && dy == 0) continue; - - Tile other = world.tile(tile.x+dx, tile.y+dy); - - if(other == null) continue; - - Block floor = other.floor(); - - if(floor.id <= block.id) continue; - - TextureRegion result = Draw.hasRegion(floor.name() + "edge") ? Draw.region(floor.name() + "edge") : - Draw.region(floor.edge + "edge"); - - int sx = -dx*8+2, sy = -dy*8+2; - int x = Mathf.clamp(sx, 0, 12); - int y = Mathf.clamp(sy, 0, 12); - int w = Mathf.clamp(sx+8, 0, 12) - x, h = Mathf.clamp(sy+8, 0, 12) - y; - - float rx = Mathf.clamp(dx*8, 0, 8-w); - float ry = Mathf.clamp(dy*8, 0, 8-h); - - region.setTexture(result.getTexture()); - region.setRegion(result.getRegionX()+x, result.getRegionY()+y+h, w, -h); - - idx = drawc(vertices, idx, region, tile.worldx()-4 + rx, tile.worldy()-4 + ry, w, h, color); - } - } - }else { - - TextureRegion base = Draw.region(block.name()); - - set(base, region, 1 + Mathf.random(1), 1 + Mathf.random(1)); - - idx = draw(vertices, idx, region, tile.worldx(), tile.worldy(), color); - - for (int dx = -1; dx <= 1; dx++) { - for (int dy = -1; dy <= 1; dy++) { - - if (dx == 0 && dy == 0) continue; - - Tile other = world.tile(tile.x + dx, tile.y + dy); - - if (other == null) continue; - - Block floor = other.floor(); - - if (floor.id < block.id) { - float ox = (dx == 0 ? Mathf.range(0.5f) : 0); - float oy = (dy == 0 ? Mathf.range(0.5f) : 0); - set(base, region, (int) (1.5f + 2f * dx + ox), (int) (2f - 2f * dy + oy)); - - idx = draw(vertices, idx, region, - tile.worldx() + dx * tilesize, - tile.worldy() + dy * tilesize, color); - } - } - } + if(tile.block().drawLayer == layer && layer == DrawLayer.walls){ + Block block = tile.block(); + idx = draw(vertices, + idx, + Draw.region(block.variants > 0 ? (block.name() + MathUtils.random(1, block.variants)) : block.name()), + tile.worldx(), + tile.worldy()); } } } - chunk.length = idx; - Timers.run(0f, () -> { - chunk.mesh = new Mesh(true, vertices.length, 0, - new VertexAttribute(Usage.Position, 3, "a_position"), - new VertexAttribute(Usage.TextureCoordinates, 2, "a_texCoord0")); - chunk.mesh.setVertices(chunk.vertices, 0, chunk.length); - - chunk.rendered = true; - }); - return chunk; + chunk.lengths[layer.ordinal()] = idx - chunk.offsets[layer.ordinal()]; + chunk.idx = idx; } - private void set(TextureRegion base, TextureRegion region, int x, int y){ - x = Mathf.clamp(x, 0, 3); - y = Mathf.clamp(y, 0, 3); - region.setRegion(base.getRegionX() + x *8, base.getRegionY() + y *8, 8, 8); + private int drawFloor(Tile tile, int idx, TextureRegion region, float[] vertices, boolean edgesOnly){ + MathUtils.random.setSeed(tile.id()); + Block block = tile.floor(); + + if(!edgesOnly) { + TextureRegion base = Draw.region(block.variants > 0 ? (block.name() + MathUtils.random(1, block.variants)) : block.name()); + idx = draw(vertices, idx, base, tile.worldx(), tile.worldy()); + } + + for(int dx = -1; dx <= 1; dx ++){ + for(int dy = -1; dy <= 1; dy ++){ + + if(dx == 0 && dy == 0) continue; + + Tile other = world.tile(tile.x+dx, tile.y+dy); + + if(other == null) continue; + + Block floor = other.floor(); + + if(floor.id <= block.id || !((Floor)block).blends.test(floor) || (floor.drawLayer.ordinal() > block.drawLayer.ordinal() && !edgesOnly) || + (edgesOnly && floor.drawLayer == block.drawLayer)) continue; + + TextureRegion result = Draw.hasRegion(floor.name() + "edge") ? Draw.region(floor.name() + "edge") : + Draw.region(floor.edge + "edge"); + + int sx = -dx*8+2, sy = -dy*8+2; + int x = Mathf.clamp(sx, 0, 12); + int y = Mathf.clamp(sy, 0, 12); + int w = Mathf.clamp(sx+8, 0, 12) - x, h = Mathf.clamp(sy+8, 0, 12) - y; + + float rx = Mathf.clamp(dx*8, 0, 8-w); + float ry = Mathf.clamp(dy*8, 0, 8-h); + + region.setTexture(result.getTexture()); + region.setRegion(result.getRegionX()+x, result.getRegionY()+y+h, w, -h); + + idx = drawc(vertices, idx, region, tile.worldx()-4 + rx, tile.worldy()-4 + ry, w, h); + } + } + return idx; } - private int draw(float[] vertices, int idx, TextureRegion region, float x, float y, float color){ - return drawc(vertices, idx, region, x - tilesize/2f, y - tilesize/2f, tilesize, tilesize, color); + private int draw(float[] vertices, int idx, TextureRegion region, float x, float y){ + return drawc(vertices, idx, region, x - tilesize/2f, y - tilesize/2f, tilesize, tilesize); } - private int drawc(float[] vertices, int idx, TextureRegion region, float x, float y, float width, float height, float color){ + private int drawc(float[] vertices, int idx, TextureRegion region, float x, float y, float width, float height){ final float fx2 = x + width; final float fy2 = y + height; @@ -218,37 +287,31 @@ public class FloorRenderer { vertices[idx ++] = x; vertices[idx ++] = y; - vertices[idx ++] = z; vertices[idx ++] = u; vertices[idx ++] = v; vertices[idx ++] = x; vertices[idx ++] = fy2; - vertices[idx ++] = z; vertices[idx ++] = u; vertices[idx ++] = v2; vertices[idx ++] = fx2; vertices[idx ++] = fy2; - vertices[idx ++] = z; vertices[idx ++] = u2; vertices[idx ++] = v2; vertices[idx ++] = x; vertices[idx ++] = y; - vertices[idx ++] = z; vertices[idx ++] = u; vertices[idx ++] = v; vertices[idx ++] = fx2; vertices[idx ++] = y; - vertices[idx ++] = z; vertices[idx ++] = u2; vertices[idx ++] = v; vertices[idx ++] = fx2; vertices[idx ++] = fy2; - vertices[idx ++] = z; vertices[idx ++] = u2; vertices[idx ++] = v2; @@ -257,12 +320,24 @@ public class FloorRenderer { private class Chunk{ float[] vertices; + int[] offsets = new int[DrawLayer.values().length]; + int[] lengths = new int[DrawLayer.values().length]; + int idx = 0; boolean rendered; - int length; Mesh mesh; } public void clearTiles(){ + if(cache != null){ + for(int x = 0; x < cache.length; x ++){ + for(int y = 0; y < cache[0].length; y ++){ + if(cache[x][y] != null && cache[x][y].mesh != null){ + cache[x][y].mesh.dispose(); + cache[x][y] = null; + } + } + } + } cache = null; } 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 df6f47ae87..4b5d202430 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/Floor.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/Floor.java @@ -17,7 +17,7 @@ import static io.anuke.mindustry.Vars.world; public class Floor extends Block{ protected TextureRegion tempRegion = new TextureRegion(); - protected Predicate blends = block -> block != this; + public Predicate blends = block -> block != this; protected boolean blend = true; public float speedMultiplier = 1f;