diff --git a/core/assets-raw/sprites/blocks/production/biomattercompressor-frame0.png b/core/assets-raw/sprites/blocks/production/biomattercompressor-frame0.png new file mode 100644 index 0000000000..2985c82f70 Binary files /dev/null and b/core/assets-raw/sprites/blocks/production/biomattercompressor-frame0.png differ diff --git a/core/assets-raw/sprites/blocks/production/biomattercompressor-frame1.png b/core/assets-raw/sprites/blocks/production/biomattercompressor-frame1.png new file mode 100644 index 0000000000..8dfd11128c Binary files /dev/null and b/core/assets-raw/sprites/blocks/production/biomattercompressor-frame1.png differ diff --git a/core/assets-raw/sprites/blocks/production/biomattercompressor-frame2.png b/core/assets-raw/sprites/blocks/production/biomattercompressor-frame2.png new file mode 100644 index 0000000000..cd65d58676 Binary files /dev/null and b/core/assets-raw/sprites/blocks/production/biomattercompressor-frame2.png differ diff --git a/core/assets-raw/sprites/blocks/production/laserdrill.png b/core/assets-raw/sprites/blocks/production/laserdrill.png index 153e62935d..aa4fde0910 100644 Binary files a/core/assets-raw/sprites/blocks/production/laserdrill.png and b/core/assets-raw/sprites/blocks/production/laserdrill.png differ diff --git a/core/assets-raw/sprites/blocks/production/oilextractor.png b/core/assets-raw/sprites/blocks/production/oilextractor.png index 059f54ecc4..48af0dd82a 100644 Binary files a/core/assets-raw/sprites/blocks/production/oilextractor.png and b/core/assets-raw/sprites/blocks/production/oilextractor.png differ diff --git a/core/assets-raw/sprites/blocks/production/plasticformer-top.png b/core/assets-raw/sprites/blocks/production/plasticformer-top.png new file mode 100644 index 0000000000..e5def575f5 Binary files /dev/null and b/core/assets-raw/sprites/blocks/production/plasticformer-top.png differ diff --git a/core/assets-raw/sprites/blocks/production/plasticformer.png b/core/assets-raw/sprites/blocks/production/plasticformer.png index 3f19a7ba90..664248fac6 100644 Binary files a/core/assets-raw/sprites/blocks/production/plasticformer.png and b/core/assets-raw/sprites/blocks/production/plasticformer.png differ diff --git a/core/assets/sprites/sprites.atlas b/core/assets/sprites/sprites.atlas index 7dde9525be..6453a29324 100644 --- a/core/assets/sprites/sprites.atlas +++ b/core/assets/sprites/sprites.atlas @@ -13,42 +13,42 @@ background index: -1 conduit-bottom rotate: false - xy: 429, 160 + xy: 459, 160 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-top rotate: false - xy: 449, 160 + xy: 632, 296 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduittunnel rotate: false - xy: 459, 160 + xy: 626, 286 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor rotate: false - xy: 622, 296 + xy: 626, 276 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyormove rotate: false - xy: 632, 296 + xy: 626, 266 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyortunnel rotate: false - xy: 626, 286 + xy: 626, 256 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -62,42 +62,42 @@ core index: -1 junction rotate: false - xy: 780, 379 + xy: 800, 399 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquidjunction rotate: false - xy: 800, 381 + xy: 810, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquidrouter rotate: false - xy: 810, 391 + xy: 820, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquidrouter-bottom rotate: false - xy: 820, 401 + xy: 830, 399 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquidrouter-liquid rotate: false - xy: 810, 381 + xy: 820, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquidrouter-top rotate: false - xy: 820, 391 + xy: 830, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -125,77 +125,77 @@ liquidtank-top index: -1 multiplexer rotate: false - xy: 680, 389 + xy: 716, 404 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 poweredconveyor rotate: false - xy: 850, 401 + xy: 860, 399 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 poweredconveyormove rotate: false - xy: 840, 381 + xy: 850, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pulseconduit-bottom rotate: false - xy: 945, 455 + xy: 870, 387 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pulseconduit-top rotate: false - xy: 955, 465 + xy: 870, 377 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 router rotate: false - xy: 955, 445 + xy: 945, 455 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sortedunloader rotate: false - xy: 201, 18 + xy: 211, 20 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sorter rotate: false - xy: 211, 28 + xy: 221, 30 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 splitter rotate: false - xy: 211, 18 + xy: 221, 20 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 steelconveyor rotate: false - xy: 163, 8 + xy: 183, 8 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 steelconveyormove rotate: false - xy: 173, 8 + xy: 193, 10 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -209,7 +209,7 @@ teleporter-top index: -1 unloader rotate: false - xy: 676, 271 + xy: 810, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -223,70 +223,70 @@ vault index: -1 vault-icon rotate: false - xy: 686, 291 + xy: 830, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weaponfactory rotate: false - xy: 781, 409 + xy: 853, 409 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 blackrock1 rotate: false - xy: 582, 244 + xy: 281, 113 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackrockshadow1 rotate: false - xy: 591, 234 + xy: 291, 113 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackstone1 rotate: false - xy: 604, 246 + xy: 582, 244 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackstone2 rotate: false - xy: 614, 246 + xy: 579, 234 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackstone3 rotate: false - xy: 674, 363 + xy: 592, 246 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackstoneblock1 rotate: false - xy: 684, 363 + xy: 602, 246 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackstoneblock2 rotate: false - xy: 627, 306 + xy: 612, 246 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackstoneblock3 rotate: false - xy: 637, 306 + xy: 674, 363 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -300,511 +300,511 @@ blackstoneedge index: -1 coal1 rotate: false - xy: 669, 341 + xy: 679, 343 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 coal2 rotate: false - xy: 669, 331 + xy: 679, 333 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 coal3 rotate: false - xy: 679, 353 + xy: 669, 321 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 deepwater rotate: false - xy: 626, 266 + xy: 636, 286 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirt1 rotate: false - xy: 626, 256 + xy: 636, 276 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirt2 rotate: false - xy: 624, 246 + xy: 636, 266 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirt3 rotate: false - xy: 636, 286 + xy: 636, 256 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirtedge rotate: false - xy: 871, 425 + xy: 121, 1 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 grass1 rotate: false - xy: 646, 276 + xy: 642, 246 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grass2 rotate: false - xy: 646, 266 + xy: 656, 286 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grass3 rotate: false - xy: 646, 256 + xy: 656, 276 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grassblock1 rotate: false - xy: 644, 246 + xy: 656, 266 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grassblock2 rotate: false - xy: 656, 286 + xy: 656, 256 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grassedge rotate: false - xy: 135, 1 + xy: 149, 1 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 ice1 rotate: false - xy: 656, 276 + xy: 652, 246 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ice2 rotate: false - xy: 656, 266 + xy: 689, 353 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ice3 rotate: false - xy: 656, 256 + xy: 689, 343 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 iceedge rotate: false - xy: 149, 1 + xy: 417, 121 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 icerock1 rotate: false - xy: 654, 246 + xy: 689, 333 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icerock2 rotate: false - xy: 689, 353 + xy: 689, 323 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icerockshadow1 rotate: false - xy: 689, 343 + xy: 694, 363 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 rockshadow1 rotate: false - xy: 689, 343 + xy: 694, 363 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icerockshadow2 rotate: false - xy: 689, 333 + xy: 662, 299 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 rockshadow2 rotate: false - xy: 689, 333 + xy: 662, 299 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 iron1 rotate: false - xy: 689, 323 + xy: 699, 353 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 iron2 rotate: false - xy: 694, 363 + xy: 699, 343 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 iron3 rotate: false - xy: 662, 299 + xy: 699, 333 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 lava rotate: false - xy: 790, 399 + xy: 790, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 lavaedge rotate: false - xy: 353, 121 + xy: 321, 105 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 lead1 rotate: false - xy: 790, 379 + xy: 810, 399 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 lead2 rotate: false - xy: 800, 401 + xy: 800, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 lead3 rotate: false - xy: 800, 391 + xy: 810, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 mossblock rotate: false - xy: 820, 381 + xy: 830, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 oil rotate: false - xy: 830, 391 + xy: 840, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 oiledge rotate: false - xy: 367, 121 + xy: 335, 105 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 rock1 rotate: false - xy: 965, 465 + xy: 880, 377 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 rock2 rotate: false - xy: 945, 435 + xy: 945, 465 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sand1 rotate: false - xy: 945, 425 + xy: 955, 455 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sand2 rotate: false - xy: 955, 435 + xy: 965, 465 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sand3 rotate: false - xy: 965, 445 + xy: 955, 445 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sandblock1 rotate: false - xy: 975, 455 + xy: 965, 455 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sandblock2 rotate: false - xy: 985, 465 + xy: 975, 465 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sandblock3 rotate: false - xy: 955, 425 + xy: 965, 445 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sandedge rotate: false - xy: 381, 121 + xy: 349, 105 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 shrub rotate: false - xy: 985, 435 + xy: 161, 18 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 shrubshadow rotate: false - xy: 985, 425 + xy: 171, 28 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snow1 rotate: false - xy: 171, 28 + xy: 181, 28 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snow2 rotate: false - xy: 171, 18 + xy: 181, 18 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snow3 rotate: false - xy: 181, 28 + xy: 191, 30 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snowblock1 rotate: false - xy: 181, 18 + xy: 191, 20 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snowblock2 rotate: false - xy: 191, 28 + xy: 201, 30 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snowblock3 rotate: false - xy: 191, 18 + xy: 201, 20 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snowedge rotate: false - xy: 154, 62 + xy: 405, 105 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 stone1 rotate: false - xy: 193, 8 + xy: 213, 10 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stone2 rotate: false - xy: 203, 8 + xy: 223, 10 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stone3 rotate: false - xy: 213, 8 + xy: 589, 234 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stoneblock1 rotate: false - xy: 601, 234 + xy: 599, 236 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stoneblock2 rotate: false - xy: 611, 236 + xy: 609, 236 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stoneblock3 rotate: false - xy: 621, 236 + xy: 619, 236 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stoneedge rotate: false - xy: 196, 62 + xy: 154, 62 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 thorium1 rotate: false - xy: 677, 311 + xy: 672, 301 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 thorium2 rotate: false - xy: 687, 313 + xy: 677, 311 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 thorium3 rotate: false - xy: 697, 313 + xy: 687, 313 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium1 rotate: false - xy: 692, 303 + xy: 682, 301 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium2 rotate: false - xy: 702, 303 + xy: 692, 303 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium3 rotate: false - xy: 707, 313 + xy: 702, 303 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 water rotate: false - xy: 686, 261 + xy: 860, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 wateredge rotate: false - xy: 210, 62 + xy: 168, 62 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 block-middle rotate: false - xy: 915, 421 + xy: 669, 351 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pump-liquid rotate: false - xy: 915, 421 + xy: 669, 351 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-liquid rotate: false - xy: 439, 160 + xy: 622, 296 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 cross-1 rotate: false - xy: 626, 276 + xy: 622, 246 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 cross-2 rotate: false - xy: 525, 225 + xy: 543, 225 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -818,28 +818,28 @@ cross-3 index: -1 enemyspawn rotate: false - xy: 642, 296 + xy: 646, 276 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 playerspawn rotate: false - xy: 840, 391 + xy: 850, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ripples rotate: false - xy: 293, 111 + xy: 233, 111 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 shadow rotate: false - xy: 305, 115 + xy: 245, 111 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -860,21 +860,21 @@ batterylarge index: -1 coalgenerator rotate: false - xy: 669, 321 + xy: 419, 159 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 coalgenerator-top rotate: false - xy: 679, 323 + xy: 429, 160 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 combustiongenerator rotate: false - xy: 667, 311 + xy: 439, 160 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -909,56 +909,56 @@ nuclearreactor-lights index: -1 powerinfinite rotate: false - xy: 850, 391 + xy: 860, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 powernode rotate: false - xy: 850, 381 + xy: 860, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 powervoid rotate: false - xy: 945, 465 + xy: 870, 397 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 rtgenerator rotate: false - xy: 965, 455 + xy: 955, 465 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 rtgenerator-top rotate: false - xy: 975, 465 + xy: 945, 445 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 shieldgenerator rotate: false - xy: 985, 455 + xy: 975, 445 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 shieldprojector rotate: false - xy: 590, 274 + xy: 763, 409 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 solarpanel rotate: false - xy: 201, 28 + xy: 211, 30 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -972,7 +972,7 @@ teleporter index: -1 thermalgenerator rotate: false - xy: 672, 301 + xy: 659, 236 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -991,142 +991,163 @@ biomattercompressor orig: 16, 16 offset: 0, 0 index: -1 -biomattercompressor-liquid +biomattercompressor-frame0 rotate: false xy: 329, 151 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -biomattercompressor-top +biomattercompressor-frame1 rotate: false xy: 586, 292 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -centrifuge +biomattercompressor-frame2 + rotate: false + xy: 151, 112 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +biomattercompressor-liquid + rotate: false + xy: 507, 225 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +biomattercompressor-top rotate: false xy: 347, 151 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 +centrifuge + rotate: false + xy: 525, 225 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 coaldrill rotate: false - xy: 679, 343 + xy: 679, 323 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 coalextractor rotate: false - xy: 679, 333 + xy: 667, 311 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 cryofluidmixer-bottom rotate: false - xy: 365, 151 + xy: 383, 151 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 cryofluidmixer-liquid rotate: false - xy: 187, 112 + xy: 205, 112 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 cryofluidmixer-top rotate: false - xy: 543, 225 + xy: 401, 151 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 cultivator rotate: false - xy: 383, 151 + xy: 656, 361 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 cultivator-middle rotate: false - xy: 205, 112 + xy: 118, 47 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 cultivator-top rotate: false - xy: 401, 151 + xy: 476, 178 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 extractor rotate: false - xy: 652, 299 + xy: 646, 266 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 fluxpump rotate: false - xy: 646, 286 + xy: 646, 256 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 irondrill rotate: false - xy: 699, 353 + xy: 699, 323 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 itemsource rotate: false - xy: 770, 379 + xy: 780, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 itemvoid rotate: false - xy: 780, 389 + xy: 790, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 laserdrill rotate: false - xy: 817, 427 + xy: 680, 407 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 lavasmelter rotate: false - xy: 790, 389 + xy: 800, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 leaddrill rotate: false - xy: 810, 401 + xy: 820, 399 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 melter rotate: false - xy: 830, 401 + xy: 840, 399 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1147,175 +1168,182 @@ oilextractor-liquid index: -1 oilrefinery rotate: false - xy: 840, 401 + xy: 850, 399 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 omnidrill rotate: false - xy: 830, 381 + xy: 840, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 plasticformer - rotate: false - xy: 698, 409 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -poweralloysmelter - rotate: false - xy: 698, 391 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -poweralloysmelter-top - rotate: false - xy: 716, 404 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -powersmelter rotate: false xy: 716, 386 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -powersmelter-top +plasticformer-top rotate: false xy: 572, 272 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -pulverizer - rotate: false - xy: 945, 445 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -pump - rotate: false - xy: 955, 455 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -quartzextractor +poweralloysmelter rotate: false xy: 572, 254 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -separator +poweralloysmelter-top rotate: false - xy: 965, 435 + xy: 590, 274 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +powersmelter + rotate: false + xy: 590, 256 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +powersmelter-top + rotate: false + xy: 608, 274 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +pulverizer + rotate: false + xy: 880, 397 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 -siliconextractor +pump rotate: false - xy: 305, 105 + xy: 880, 387 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 -smelter - rotate: false - xy: 161, 28 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -smelter-middle - rotate: false - xy: 161, 18 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -stonedrill - rotate: false - xy: 631, 236 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -stoneformer - rotate: false - xy: 641, 236 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -thoriumdrill - rotate: false - xy: 682, 301 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -titaniumdrill - rotate: false - xy: 712, 303 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -titaniumextractor - rotate: false - xy: 666, 289 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -uraniumextractor - rotate: false - xy: 676, 261 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -waterextractor +quartzextractor rotate: false xy: 608, 256 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 +separator + rotate: false + xy: 975, 455 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +siliconextractor + rotate: false + xy: 171, 18 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +smelter + rotate: false + xy: 163, 8 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +smelter-middle + rotate: false + xy: 173, 8 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +stonedrill + rotate: false + xy: 629, 236 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +stoneformer + rotate: false + xy: 639, 236 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +thoriumdrill + rotate: false + xy: 697, 313 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +titaniumdrill + rotate: false + xy: 707, 313 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +titaniumextractor + rotate: false + xy: 712, 303 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +uraniumextractor + rotate: false + xy: 820, 369 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +waterextractor + rotate: false + xy: 817, 409 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 waterextractor-liquid rotate: false - xy: 763, 409 + xy: 835, 409 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-1 rotate: false - xy: 905, 421 + xy: 637, 306 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-2 rotate: false - xy: 151, 112 + xy: 604, 292 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-2-top rotate: false - xy: 507, 225 + xy: 169, 112 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -1336,21 +1364,21 @@ block-3-top index: -1 chainturret rotate: false - xy: 604, 292 + xy: 365, 151 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 doubleturret rotate: false - xy: 636, 256 + xy: 652, 299 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 flakturret rotate: false - xy: 492, 207 + xy: 546, 207 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -1378,56 +1406,56 @@ gatlingturret index: -1 laserturret rotate: false - xy: 257, 111 + xy: 218, 64 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 magmaturret rotate: false - xy: 835, 427 + xy: 680, 389 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 megarepairturret rotate: false - xy: 853, 427 + xy: 698, 409 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 missileturret rotate: false - xy: 680, 407 + xy: 698, 391 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 railgunturret rotate: false - xy: 269, 111 + xy: 222, 52 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 repairturret rotate: false - xy: 281, 111 + xy: 222, 40 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 shotgunturret rotate: false - xy: 579, 232 + xy: 257, 111 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 teslaturret rotate: false - xy: 592, 244 + xy: 269, 111 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -1441,140 +1469,140 @@ titancannon index: -1 flierfactory rotate: false - xy: 510, 207 + xy: 134, 92 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 walkerfactory rotate: false - xy: 510, 207 + xy: 134, 92 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 flierfactory-top rotate: false - xy: 528, 207 + xy: 134, 74 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 walkerfactory-top rotate: false - xy: 528, 207 + xy: 134, 74 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 flierfactory-top-open rotate: false - xy: 546, 207 + xy: 152, 94 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 walkerfactory-top-open rotate: false - xy: 546, 207 + xy: 152, 94 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 compositewall rotate: false - xy: 419, 159 + xy: 449, 160 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 door rotate: false - xy: 636, 276 + xy: 632, 246 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 door-large rotate: false - xy: 656, 361 + xy: 492, 207 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 door-large-open rotate: false - xy: 118, 47 + xy: 510, 207 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 door-open rotate: false - xy: 636, 266 + xy: 642, 296 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 duriumwall rotate: false - xy: 634, 246 + xy: 646, 286 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 duriumwall-large rotate: false - xy: 476, 178 + xy: 528, 207 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 ironwall rotate: false - xy: 699, 343 + xy: 750, 406 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 steelwall rotate: false - xy: 183, 8 + xy: 203, 10 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 steelwall-large rotate: false - xy: 590, 256 + xy: 781, 409 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 stonewall rotate: false - xy: 651, 236 + xy: 649, 236 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titaniumshieldwall rotate: false - xy: 666, 279 + xy: 760, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titaniumwall rotate: false - xy: 666, 269 + xy: 770, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titaniumwall-large rotate: false - xy: 608, 274 + xy: 799, 409 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -1588,7 +1616,7 @@ blank index: -1 bullet rotate: false - xy: 925, 421 + xy: 669, 341 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1630,126 +1658,126 @@ laserfull index: -1 shell rotate: false - xy: 975, 445 + xy: 985, 465 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 shot rotate: false - xy: 985, 445 + xy: 662, 246 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 shot-long rotate: false - xy: 975, 425 + xy: 161, 28 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanshell rotate: false - xy: 666, 259 + xy: 780, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-biomatter rotate: false - xy: 699, 333 + xy: 750, 396 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-coal rotate: false - xy: 699, 323 + xy: 750, 386 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-densealloy rotate: false - xy: 750, 406 + xy: 750, 376 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-iron rotate: false - xy: 750, 396 + xy: 760, 399 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-lead rotate: false - xy: 750, 386 + xy: 760, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-plastic rotate: false - xy: 750, 376 + xy: 770, 399 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-quartz rotate: false - xy: 760, 399 + xy: 760, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-silicon rotate: false - xy: 760, 389 + xy: 770, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-steel rotate: false - xy: 770, 399 + xy: 780, 399 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-stone rotate: false - xy: 760, 379 + xy: 770, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-thorium rotate: false - xy: 770, 389 + xy: 780, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-titanium rotate: false - xy: 780, 399 + xy: 790, 399 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 standard-mech rotate: false - xy: 168, 62 + xy: 419, 107 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 standard-ship rotate: false - xy: 182, 62 + xy: 136, 51 size: 12, 12 orig: 12, 12 offset: 0, 0 @@ -1918,7 +1946,7 @@ discord-banner-over index: -1 controller-cursor rotate: false - xy: 169, 112 + xy: 187, 112 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -1960,7 +1988,7 @@ icon-areaDelete index: -1 icon-arrow rotate: false - xy: 799, 411 + xy: 680, 373 size: 14, 14 orig: 14, 14 offset: 0, 0 @@ -1981,49 +2009,49 @@ icon-arrow-left index: -1 icon-arrow-right rotate: false - xy: 502, 195 + xy: 182, 64 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-arrow-up rotate: false - xy: 514, 195 + xy: 194, 64 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-back rotate: false - xy: 867, 453 + xy: 152, 76 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-ban rotate: false - xy: 815, 411 + xy: 225, 123 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-cancel rotate: false - xy: 831, 411 + xy: 241, 123 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-chat rotate: false - xy: 526, 195 + xy: 206, 64 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-check rotate: false - xy: 847, 411 + xy: 257, 123 size: 14, 14 orig: 14, 14 offset: 0, 0 @@ -2051,497 +2079,497 @@ icon-close-over index: -1 icon-crafting rotate: false - xy: 538, 195 + xy: 502, 195 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-cursor rotate: false - xy: 550, 195 + xy: 514, 195 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-defense rotate: false - xy: 562, 195 + xy: 526, 195 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-dev-builds rotate: false - xy: 680, 373 + xy: 273, 123 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-discord rotate: false - xy: 225, 123 + xy: 289, 123 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-distribution rotate: false - xy: 933, 457 + xy: 538, 195 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-donate rotate: false - xy: 241, 123 + xy: 305, 127 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-dots rotate: false - xy: 257, 123 + xy: 651, 309 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-editor rotate: false - xy: 273, 123 + xy: 734, 394 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-exit rotate: false - xy: 289, 123 + xy: 329, 135 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-file-text rotate: false - xy: 305, 127 + xy: 345, 135 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-fill rotate: false - xy: 134, 92 + xy: 170, 94 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-floppy rotate: false - xy: 651, 309 + xy: 361, 135 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-folder rotate: false - xy: 734, 394 + xy: 377, 135 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-folder-parent rotate: false - xy: 329, 135 + xy: 393, 135 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-github rotate: false - xy: 345, 135 + xy: 409, 135 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-google-play rotate: false - xy: 361, 135 + xy: 476, 162 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-grid rotate: false - xy: 134, 74 + xy: 170, 76 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-hold rotate: false - xy: 933, 445 + xy: 550, 195 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-holdDelete rotate: false - xy: 933, 433 + xy: 562, 195 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-home rotate: false - xy: 377, 135 + xy: 885, 463 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-host rotate: false - xy: 393, 135 + xy: 901, 463 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-info rotate: false - xy: 574, 195 + xy: 933, 457 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-itch.io rotate: false - xy: 409, 135 + xy: 917, 463 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-line rotate: false - xy: 152, 94 + xy: 188, 94 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-link rotate: false - xy: 476, 162 + xy: 885, 447 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-liquid rotate: false - xy: 150, 50 + xy: 933, 445 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-load rotate: false - xy: 885, 463 + xy: 901, 447 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-load-image rotate: false - xy: 152, 76 + xy: 188, 76 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-load-map rotate: false - xy: 170, 94 + xy: 206, 94 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-loading rotate: false - xy: 170, 76 + xy: 206, 76 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-logic rotate: false - xy: 162, 50 + xy: 574, 195 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-menu rotate: false - xy: 174, 50 + xy: 150, 50 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-menu-large rotate: false - xy: 188, 94 + xy: 867, 453 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-none rotate: false - xy: 186, 50 + xy: 162, 50 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-pause rotate: false - xy: 198, 50 + xy: 150, 38 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-pencil rotate: false - xy: 188, 76 + xy: 561, 225 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-pencil-small rotate: false - xy: 901, 463 + xy: 917, 447 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-pick rotate: false - xy: 206, 94 + xy: 564, 207 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-play rotate: false - xy: 210, 50 + xy: 162, 38 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-play-2 rotate: false - xy: 917, 463 + xy: 871, 423 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-players rotate: false - xy: 150, 38 + xy: 174, 50 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-power rotate: false - xy: 162, 38 + xy: 174, 38 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-production rotate: false - xy: 174, 38 + xy: 186, 52 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-quit rotate: false - xy: 885, 447 + xy: 871, 407 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-redo rotate: false - xy: 206, 76 + xy: 651, 343 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-refresh rotate: false - xy: 901, 447 + xy: 118, 31 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-rename rotate: false - xy: 917, 447 + xy: 113, 15 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-resize rotate: false - xy: 561, 225 + xy: 651, 325 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-rotate rotate: false - xy: 885, 431 + xy: 129, 15 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-rotate-arrow rotate: false - xy: 901, 431 + xy: 134, 31 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-rotate-left rotate: false - xy: 917, 431 + xy: 145, 15 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-rotate-right rotate: false - xy: 118, 31 + xy: 734, 378 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-save rotate: false - xy: 113, 15 + xy: 321, 119 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-save-image rotate: false - xy: 564, 207 + xy: 763, 427 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-save-map rotate: false - xy: 651, 343 + xy: 781, 427 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-settings rotate: false - xy: 186, 38 + xy: 186, 40 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-terrain rotate: false - xy: 651, 325 + xy: 799, 427 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-tools rotate: false - xy: 129, 15 + xy: 337, 119 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-touch rotate: false - xy: 198, 38 + xy: 198, 52 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-touchDelete rotate: false - xy: 210, 38 + xy: 198, 40 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-trash rotate: false - xy: 134, 31 + xy: 353, 119 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-trash-16 rotate: false - xy: 763, 427 + xy: 817, 427 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-trello rotate: false - xy: 145, 15 + xy: 369, 119 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-tutorial rotate: false - xy: 734, 378 + xy: 385, 119 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-undo rotate: false - xy: 781, 427 + xy: 835, 427 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-units rotate: false - xy: 233, 111 + xy: 210, 52 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-weapon rotate: false - xy: 245, 111 + xy: 210, 40 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-wiki rotate: false - xy: 321, 119 + xy: 401, 119 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-zoom rotate: false - xy: 799, 427 + xy: 853, 427 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-zoom-small rotate: false - xy: 337, 119 + xy: 305, 111 size: 14, 14 orig: 14, 14 offset: 0, 0 @@ -2714,42 +2742,42 @@ window-empty index: -1 flier rotate: false - xy: 121, 1 + xy: 135, 1 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 scout rotate: false - xy: 395, 121 + xy: 363, 105 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 scout-base rotate: false - xy: 409, 121 + xy: 377, 105 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 standard-mech-base rotate: false - xy: 409, 121 + xy: 377, 105 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 scout-leg rotate: false - xy: 136, 51 + xy: 391, 105 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 standard-mech-leg rotate: false - xy: 136, 51 + xy: 391, 105 size: 12, 12 orig: 12, 12 offset: 0, 0 @@ -2770,70 +2798,70 @@ beam-equip index: -1 blaster rotate: false - xy: 885, 421 + xy: 684, 363 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blaster-equip rotate: false - xy: 895, 421 + xy: 627, 306 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 clustergun rotate: false - xy: 935, 423 + xy: 669, 331 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 clustergun-equip rotate: false - xy: 669, 351 + xy: 679, 353 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 shockgun rotate: false - xy: 965, 425 + xy: 985, 455 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 shockgun-equip rotate: false - xy: 975, 435 + xy: 985, 445 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 triblaster rotate: false - xy: 676, 291 + xy: 790, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 triblaster-equip rotate: false - xy: 676, 281 + xy: 800, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 vulcan rotate: false - xy: 686, 281 + xy: 840, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 vulcan-equip rotate: false - xy: 686, 271 + xy: 850, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 diff --git a/core/assets/sprites/sprites.png b/core/assets/sprites/sprites.png index a95e28bdd4..88ad541728 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 b4d2bd5ca5..e72aa992b1 100644 --- a/core/assets/version.properties +++ b/core/assets/version.properties @@ -1,7 +1,7 @@ #Autogenerated file. Do not modify. -#Wed Mar 28 10:18:53 EDT 2018 +#Wed Mar 28 19:56:26 EDT 2018 version=release -androidBuildCode=693 +androidBuildCode=706 name=Mindustry code=3.4 build=custom build diff --git a/core/src/io/anuke/mindustry/content/blocks/CraftingBlocks.java b/core/src/io/anuke/mindustry/content/blocks/CraftingBlocks.java index 9ffcd7990f..b96f3d05d4 100644 --- a/core/src/io/anuke/mindustry/content/blocks/CraftingBlocks.java +++ b/core/src/io/anuke/mindustry/content/blocks/CraftingBlocks.java @@ -100,27 +100,29 @@ public class CraftingBlocks { size = 2; }}, - plasticFormer = new GenericCrafter("plasticformer") {{ + plasticFormer = new PlasticFormer("plasticformer") {{ inputLiquid = Liquids.oil; liquidUse = 0.3f; liquidCapacity = 60f; - powerUse = 0.3f; + powerUse = 0.5f; craftTime = 80f; output = Items.plastic; itemCapacity = 30; size = 2; health = 320; hasPower = hasLiquids = true; + craftEffect = Fx.formsmoke; + updateEffect = Fx.plasticburn; }}, biomatterCompressor = new Compressor("biomattercompressor") {{ input = new ItemStack(Items.biomatter, 1); liquidCapacity = 60f; itemCapacity = 50; - powerUse = 0.05f; - craftTime = 10f; + powerUse = 0.06f; + craftTime = 25f; outputLiquid = Liquids.oil; - outputLiquidAmount = 0.08f; + outputLiquidAmount = 0.1f; size = 2; health = 320; hasLiquids = true; diff --git a/core/src/io/anuke/mindustry/content/blocks/PowerBlocks.java b/core/src/io/anuke/mindustry/content/blocks/PowerBlocks.java index aa0a84afa4..cead256b36 100644 --- a/core/src/io/anuke/mindustry/content/blocks/PowerBlocks.java +++ b/core/src/io/anuke/mindustry/content/blocks/PowerBlocks.java @@ -1,55 +1,51 @@ package io.anuke.mindustry.content.blocks; -import io.anuke.mindustry.content.Items; -import io.anuke.mindustry.content.Liquids; import io.anuke.mindustry.graphics.Fx; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.blocks.types.defense.RepairTurret; import io.anuke.mindustry.world.blocks.types.defense.ShieldBlock; import io.anuke.mindustry.world.blocks.types.distribution.Teleporter; -import io.anuke.mindustry.world.blocks.types.power.ItemPowerGenerator; +import io.anuke.mindustry.world.blocks.types.power.*; public class PowerBlocks { public static final Block - coalgenerator = new io.anuke.mindustry.world.blocks.types.power.ItemPowerGenerator("coalgenerator") {{ - generateItem = Items.coal; + coalgenerator = new BurnerGenerator("coalgenerator") {{ + //generateItem = Items.coal; powerOutput = 0.04f; powerCapacity = 40f; }}, - thermalgenerator = new io.anuke.mindustry.world.blocks.types.power.LiquidPowerGenerator("thermalgenerator") {{ - generateLiquid = Liquids.lava; + thermalgenerator = new LiquidHeatGenerator("thermalgenerator") {{ maxLiquidGenerate = 0.5f; powerPerLiquid = 0.08f; powerCapacity = 40f; generateEffect = Fx.redgeneratespark; }}, - combustiongenerator = new io.anuke.mindustry.world.blocks.types.power.LiquidPowerGenerator("combustiongenerator") {{ - generateLiquid = Liquids.oil; + combustiongenerator = new LiquidBurnerGenerator("combustiongenerator") {{ maxLiquidGenerate = 0.4f; powerPerLiquid = 0.12f; powerCapacity = 40f; }}, - rtgenerator = new ItemPowerGenerator("rtgenerator") {{ - generateItem = Items.thorium; + rtgenerator = new BurnerGenerator("rtgenerator") {{ + //generateItem = Items.thorium; powerCapacity = 40f; powerOutput = 0.03f; itemDuration = 240f; }}, - solarpanel = new io.anuke.mindustry.world.blocks.types.power.SolarGenerator("solarpanel") {{ + solarpanel = new SolarGenerator("solarpanel") {{ generation = 0.003f; }}, - largesolarpanel = new io.anuke.mindustry.world.blocks.types.power.SolarGenerator("largesolarpanel") {{ + largesolarpanel = new SolarGenerator("largesolarpanel") {{ size = 3; generation = 0.012f; }}, - nuclearReactor = new io.anuke.mindustry.world.blocks.types.power.NuclearReactor("nuclearreactor") {{ + nuclearReactor = new NuclearReactor("nuclearreactor") {{ size = 3; health = 600; breaktime *= 2.3f; @@ -74,16 +70,16 @@ public class PowerBlocks { health = 400; }}, - battery = new io.anuke.mindustry.world.blocks.types.power.PowerGenerator("battery") {{ + battery = new PowerGenerator("battery") {{ powerCapacity = 320f; }}, - batteryLarge = new io.anuke.mindustry.world.blocks.types.power.PowerGenerator("batterylarge") {{ + batteryLarge = new PowerGenerator("batterylarge") {{ size = 3; powerCapacity = 2000f; }}, - powernode = new io.anuke.mindustry.world.blocks.types.power.PowerDistributor("powernode"), + powernode = new PowerDistributor("powernode"), teleporter = new Teleporter("teleporter"); } diff --git a/core/src/io/anuke/mindustry/content/blocks/ProductionBlocks.java b/core/src/io/anuke/mindustry/content/blocks/ProductionBlocks.java index a74aeb9802..b17114cd24 100644 --- a/core/src/io/anuke/mindustry/content/blocks/ProductionBlocks.java +++ b/core/src/io/anuke/mindustry/content/blocks/ProductionBlocks.java @@ -3,10 +3,7 @@ package io.anuke.mindustry.content.blocks; import io.anuke.mindustry.content.Items; import io.anuke.mindustry.content.Liquids; import io.anuke.mindustry.world.Block; -import io.anuke.mindustry.world.blocks.types.production.Cultivator; -import io.anuke.mindustry.world.blocks.types.production.Drill; -import io.anuke.mindustry.world.blocks.types.production.GenericDrill; -import io.anuke.mindustry.world.blocks.types.production.SolidPump; +import io.anuke.mindustry.world.blocks.types.production.*; public class ProductionBlocks { public static final Block @@ -86,8 +83,10 @@ public class ProductionBlocks { liquidCapacity = 30f; }}, - oilextractor = new SolidPump("oilextractor") {{ + oilextractor = new Fracker("oilextractor") {{ result = Liquids.oil; + inputLiquid = Liquids.water; + inputLiquidUse = 0.3f; powerUse = 0.6f; pumpAmount = 0.06f; size = 3; diff --git a/core/src/io/anuke/mindustry/graphics/Fx.java b/core/src/io/anuke/mindustry/graphics/Fx.java index 414d1723e1..af7ffa2e30 100644 --- a/core/src/io/anuke/mindustry/graphics/Fx.java +++ b/core/src/io/anuke/mindustry/graphics/Fx.java @@ -179,6 +179,14 @@ public class Fx{ }); }), + plasticburn = new Effect(40, e -> { + Angles.randLenVectors(e.id, 5, 3f + e.ifract()*5f, (x, y)->{ + Draw.color(Color.valueOf("e9ead3"), Color.GRAY, e.ifract()); + Fill.circle(e.x + x, e.y + y, e.fract()*1f); + Draw.reset(); + }); + }), + pulverize = new Effect(25, e -> { Angles.randLenVectors(e.id, 5, 3f + e.ifract()*5f, (x, y)->{ Draw.color(Color.valueOf("eae4f0"), Color.GRAY, e.ifract()); @@ -221,6 +229,14 @@ public class Fx{ Draw.reset(); }); }), + + formsmoke = new Effect(40, e -> { + Angles.randLenVectors(e.id, 6, 5f + e.ifract()*8f, (x, y)->{ + Draw.color(Color.valueOf("f1e479"), Color.LIGHT_GRAY, e.ifract()); + Fill.poly(e.x + x, e.y + y, 4, 0.2f+e.fract()*2f, 45); + Draw.reset(); + }); + }), blastsmoke = new Effect(26, e -> { Angles.randLenVectors(e.id, 12, 1f + e.ifract()*23f, (x, y)->{ diff --git a/core/src/io/anuke/mindustry/world/BaseBlock.java b/core/src/io/anuke/mindustry/world/BaseBlock.java index 89c358a1c8..d90fca86a7 100644 --- a/core/src/io/anuke/mindustry/world/BaseBlock.java +++ b/core/src/io/anuke/mindustry/world/BaseBlock.java @@ -3,7 +3,7 @@ package io.anuke.mindustry.world; import com.badlogic.gdx.math.GridPoint2; import io.anuke.mindustry.resource.Item; import io.anuke.mindustry.resource.Liquid; -import io.anuke.ucore.core.Timers; +import io.anuke.ucore.util.Mathf; public abstract class BaseBlock { public boolean hasInventory = true; @@ -92,14 +92,17 @@ public abstract class BaseBlock { if(ofract > fract) return; - float flow = Math.min((fract - ofract) * (liquidCapacity/(1.1f + tile.entity.liquid.liquid.viscosity)), - Math.min(tile.entity.liquid.amount/liquidFlowFactor * Math.max(Timers.delta(), 1f), tile.entity.liquid.amount)); + float flow = Math.min(Mathf.clamp((fract - ofract)*(1f)) * (liquidCapacity), tile.entity.liquid.amount); - if(flow <= 0f || tile.entity.liquid.amount < flow) return; + flow = Math.min(flow, next.block().liquidCapacity - next.entity.liquid.amount - 0.001f); - if(next.block().acceptLiquid(next, tile, tile.entity.liquid.liquid, flow)){ - next.block().handleLiquid(next, tile, tile.entity.liquid.liquid, flow); - tile.entity.liquid.amount -= flow; + if(flow <= 0f) return; + + float amount = flow; + + if(next.block().acceptLiquid(next, tile, tile.entity.liquid.liquid, amount)){ + next.block().handleLiquid(next, tile, tile.entity.liquid.liquid, amount); + tile.entity.liquid.amount -= amount; } } } diff --git a/core/src/io/anuke/mindustry/world/blocks/types/distribution/TunnelConduit.java b/core/src/io/anuke/mindustry/world/blocks/types/distribution/TunnelConduit.java index 4f419b7384..760034154e 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/distribution/TunnelConduit.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/distribution/TunnelConduit.java @@ -35,7 +35,8 @@ public class TunnelConduit extends LiquidBlock { Tile to = tunnel.getNearby(tunnel.getRotation()); if (to == null || !(to.block().hasLiquids)) return; - if (to.block().acceptLiquid(tile, source, liquid, amount)) to.block().handleLiquid(to, tunnel, liquid, amount); + if (to.block().acceptLiquid(to, tunnel, liquid, amount)) + to.block().handleLiquid(to, tunnel, liquid, amount); } @Override diff --git a/core/src/io/anuke/mindustry/world/blocks/types/power/ItemPowerGenerator.java b/core/src/io/anuke/mindustry/world/blocks/types/power/BurnerGenerator.java similarity index 54% rename from core/src/io/anuke/mindustry/world/blocks/types/power/ItemPowerGenerator.java rename to core/src/io/anuke/mindustry/world/blocks/types/power/BurnerGenerator.java index cc50207db4..44243595c1 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/power/ItemPowerGenerator.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/power/BurnerGenerator.java @@ -1,6 +1,7 @@ package io.anuke.mindustry.world.blocks.types.power; import com.badlogic.gdx.graphics.Color; +import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.graphics.Fx; import io.anuke.mindustry.resource.Item; import io.anuke.mindustry.world.BarType; @@ -13,22 +14,26 @@ import io.anuke.ucore.graphics.Draw; import io.anuke.ucore.util.Mathf; import io.anuke.ucore.util.Strings; -public class ItemPowerGenerator extends PowerGenerator { - public int itemCapacity = 20; - public Item generateItem; - public float powerOutput; - public float itemDuration = 70f; - public Effect generateEffect = Fx.generatespark; - public Color heatColor = Color.valueOf("ff9b59"); +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; - public ItemPowerGenerator(String name) { +public class BurnerGenerator extends PowerGenerator { + protected float minFlammability = 0.2f; + protected float powerOutput; + protected float itemDuration = 70f; + protected Effect generateEffect = Fx.generatespark; + protected Color heatColor = Color.valueOf("ff9b59"); + + public BurnerGenerator(String name) { super(name); + itemCapacity = 20; } @Override public void setBars(){ super.setBars(); - bars.replace(new BlockBar(BarType.inventory, true, tile -> (float)tile.entity.inventory.getItem(generateItem) / itemCapacity)); + bars.replace(new BlockBar(BarType.inventory, true, tile -> (float)tile.entity.inventory.totalItems() / itemCapacity)); } @Override @@ -36,7 +41,6 @@ public class ItemPowerGenerator extends PowerGenerator { super.setStats(); stats.add("powergenerationsecond", Strings.toFixed(powerOutput*60f, 2)); stats.add("generationsecondsitem", Strings.toFixed(itemDuration/60f, 2)); - stats.add("input", generateItem); } @Override @@ -47,7 +51,7 @@ public class ItemPowerGenerator extends PowerGenerator { if(entity.generateTime > 0){ Draw.color(heatColor); - float alpha = (entity.inventory.hasItem(generateItem) ? 1f : Mathf.clamp(entity.generateTime)); + float alpha = (entity.inventory.totalItems() > 0 ? 1f : Mathf.clamp(entity.generateTime)); alpha = alpha * 0.7f + Mathf.absin(Timers.time(), 12f, 0.3f) * alpha; Draw.alpha(alpha); Draw.rect(name + "-top", tile.worldx(), tile.worldy()); @@ -57,14 +61,14 @@ public class ItemPowerGenerator extends PowerGenerator { @Override public boolean acceptItem(Item item, Tile tile, Tile source){ - return item == generateItem && tile.entity.inventory.getItem(generateItem) < itemCapacity; + return item.flammability >= minFlammability && tile.entity.inventory.totalItems() < itemCapacity; } @Override public void update(Tile tile){ - GeneratorEntity entity = tile.entity(); + BurnerEntity entity = tile.entity(); - float maxPower = Math.min(powerCapacity - entity.power.amount, powerOutput * Timers.delta()); + float maxPower = Math.min(powerCapacity - entity.power.amount, powerOutput * Timers.delta()) * entity.efficiency; float mfract = maxPower/(powerOutput); if(entity.generateTime > 0f){ @@ -73,9 +77,15 @@ public class ItemPowerGenerator extends PowerGenerator { entity.generateTime = Mathf.clamp(entity.generateTime); } - if(entity.generateTime <= 0f && entity.inventory.hasItem(generateItem)){ + if(entity.generateTime <= 0f && entity.inventory.totalItems() > 0){ Effects.effect(generateEffect, tile.worldx() + Mathf.range(3f), tile.worldy() + Mathf.range(3f)); - entity.inventory.removeItem(generateItem, 1); + for(int i = 0; i < entity.inventory.items.length; i ++){ + if(entity.inventory.items[i] > 0){ + entity.inventory.items[i] --; + entity.efficiency = Item.getByID(i).flammability; + break; + } + } entity.generateTime = 1f; } @@ -83,4 +93,23 @@ public class ItemPowerGenerator extends PowerGenerator { } + @Override + public TileEntity getEntity() { + return new BurnerEntity(); + } + + public static class BurnerEntity extends GeneratorEntity{ + public float efficiency; + + @Override + public void write(DataOutputStream stream) throws IOException { + stream.writeFloat(efficiency); + } + + @Override + public void read(DataInputStream stream) throws IOException { + efficiency = stream.readFloat(); + } + } + } diff --git a/core/src/io/anuke/mindustry/world/blocks/types/power/LiquidPowerGenerator.java b/core/src/io/anuke/mindustry/world/blocks/types/power/LiquidBurnerGenerator.java similarity index 71% rename from core/src/io/anuke/mindustry/world/blocks/types/power/LiquidPowerGenerator.java rename to core/src/io/anuke/mindustry/world/blocks/types/power/LiquidBurnerGenerator.java index 687d54d171..baaeac9b4d 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/power/LiquidPowerGenerator.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/power/LiquidBurnerGenerator.java @@ -4,6 +4,7 @@ import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.graphics.Fx; import io.anuke.mindustry.resource.Liquid; import io.anuke.mindustry.world.Tile; +import io.anuke.mindustry.world.blocks.types.power.BurnerGenerator.BurnerEntity; import io.anuke.ucore.core.Effects; import io.anuke.ucore.core.Effects.Effect; import io.anuke.ucore.core.Timers; @@ -11,14 +12,14 @@ import io.anuke.ucore.graphics.Draw; import io.anuke.ucore.util.Mathf; import io.anuke.ucore.util.Strings; -public class LiquidPowerGenerator extends io.anuke.mindustry.world.blocks.types.power.PowerGenerator { - public Liquid generateLiquid; - public float powerPerLiquid = 0.13f; +public class LiquidBurnerGenerator extends PowerGenerator { + protected float minEfficiency = 0.2f; + protected float powerPerLiquid = 0.13f; /**Maximum liquid used per frame.*/ - public float maxLiquidGenerate = 0.4f; - public Effect generateEffect = Fx.generatespark; + protected float maxLiquidGenerate = 0.4f; + protected Effect generateEffect = Fx.generatespark; - public LiquidPowerGenerator(String name) { + public LiquidBurnerGenerator(String name) { super(name); liquidCapacity = 30f; hasLiquids = true; @@ -29,7 +30,6 @@ public class LiquidPowerGenerator extends io.anuke.mindustry.world.blocks.types. super.setStats(); stats.add("powerliquid", Strings.toFixed(powerPerLiquid, 2) + " power/liquid"); stats.add("maxliquidsecond", Strings.toFixed(maxLiquidGenerate*60f, 2) + " liquid/s"); - stats.add("input", generateLiquid); } @Override @@ -53,6 +53,7 @@ public class LiquidPowerGenerator extends io.anuke.mindustry.world.blocks.types. TileEntity entity = tile.entity(); if(entity.liquid.amount > 0){ + float powerPerLiquid = getEfficiency(entity.liquid.liquid)*this.powerPerLiquid; float used = Math.min(entity.liquid.amount, maxLiquidGenerate * Timers.delta()); used = Math.min(used, (powerCapacity - entity.power.amount)/powerPerLiquid); @@ -60,7 +61,6 @@ public class LiquidPowerGenerator extends io.anuke.mindustry.world.blocks.types. entity.power.amount += used * powerPerLiquid; if(used > 0.001f && Mathf.chance(0.05 * Timers.delta())){ - Effects.effect(generateEffect, tile.drawx() + Mathf.range(3f), tile.drawy() + Mathf.range(3f)); } } @@ -70,6 +70,15 @@ public class LiquidPowerGenerator extends io.anuke.mindustry.world.blocks.types. @Override public boolean acceptLiquid(Tile tile, Tile source, Liquid liquid, float amount){ - return liquid == generateLiquid && super.acceptLiquid(tile, source, liquid, amount); + return getEfficiency(liquid) >= minEfficiency && super.acceptLiquid(tile, source, liquid, amount); + } + + @Override + public TileEntity getEntity() { + return new BurnerEntity(); + } + + protected float getEfficiency(Liquid liquid){ + return liquid.flammability; } } diff --git a/core/src/io/anuke/mindustry/world/blocks/types/power/LiquidHeatGenerator.java b/core/src/io/anuke/mindustry/world/blocks/types/power/LiquidHeatGenerator.java new file mode 100644 index 0000000000..7d6181454b --- /dev/null +++ b/core/src/io/anuke/mindustry/world/blocks/types/power/LiquidHeatGenerator.java @@ -0,0 +1,15 @@ +package io.anuke.mindustry.world.blocks.types.power; + +import io.anuke.mindustry.resource.Liquid; + +public class LiquidHeatGenerator extends LiquidBurnerGenerator { + + public LiquidHeatGenerator(String name) { + super(name); + } + + @Override + protected float getEfficiency(Liquid liquid){ + return liquid.flammability; + } +} diff --git a/core/src/io/anuke/mindustry/world/blocks/types/power/NuclearReactor.java b/core/src/io/anuke/mindustry/world/blocks/types/power/NuclearReactor.java index 417fa05551..02396cee66 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/power/NuclearReactor.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/power/NuclearReactor.java @@ -1,12 +1,11 @@ package io.anuke.mindustry.world.blocks.types.power; import com.badlogic.gdx.graphics.Color; -import io.anuke.mindustry.content.Liquids; +import io.anuke.mindustry.content.Items; import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.entities.effect.DamageArea; import io.anuke.mindustry.graphics.Fx; import io.anuke.mindustry.resource.Item; -import io.anuke.mindustry.content.Items; import io.anuke.mindustry.resource.Liquid; import io.anuke.mindustry.world.BarType; import io.anuke.mindustry.world.BlockBar; @@ -24,7 +23,7 @@ import java.io.IOException; import static io.anuke.mindustry.Vars.tilesize; -public class NuclearReactor extends io.anuke.mindustry.world.blocks.types.power.LiquidPowerGenerator { +public class NuclearReactor extends LiquidBurnerGenerator { protected final int timerFuel = timers++; protected final Translator tr = new Translator(); @@ -44,7 +43,6 @@ public class NuclearReactor extends io.anuke.mindustry.world.blocks.types.power. public NuclearReactor(String name) { super(name); generateItem = Items.thorium; - generateLiquid = Liquids.water; itemCapacity = 30; liquidCapacity = 50; explosionEffect = Fx.nuclearShockwave; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/power/PowerGenerator.java b/core/src/io/anuke/mindustry/world/blocks/types/power/PowerGenerator.java index d29f99dd55..9f5330b5f4 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/power/PowerGenerator.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/power/PowerGenerator.java @@ -82,5 +82,6 @@ public class PowerGenerator extends PowerBlock { public static class GeneratorEntity extends TileEntity{ public float generateTime; + public float uptime; } } diff --git a/core/src/io/anuke/mindustry/world/blocks/types/production/Compressor.java b/core/src/io/anuke/mindustry/world/blocks/types/production/Compressor.java index 20a03d4f46..c53954ab68 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/production/Compressor.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/production/Compressor.java @@ -3,7 +3,10 @@ package io.anuke.mindustry.world.blocks.types.production; import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.g2d.TextureRegion; import io.anuke.mindustry.world.Tile; +import io.anuke.mindustry.world.blocks.types.production.GenericCrafter.GenericCrafterEntity; +import io.anuke.ucore.core.Timers; import io.anuke.ucore.graphics.Draw; +import io.anuke.ucore.util.Mathf; public class Compressor extends PowerCrafter { @@ -12,9 +15,41 @@ public class Compressor extends PowerCrafter { hasLiquids = true; } + @Override + public void update(Tile tile) { + GenericCrafterEntity entity = tile.entity(); + + float powerUsed = Math.min(Timers.delta() * powerUse, tile.entity.power.amount); + float liquidAdded = Math.min(outputLiquidAmount * Timers.delta(), liquidCapacity - entity.liquid.amount); + int itemsUsed = Mathf.ceil(1 + input.amount * entity.progress); + + if(entity.power.amount > powerUsed && entity.inventory.hasItem(input.item, itemsUsed) && liquidAdded > 0.001f){ + entity.progress += 1f/craftTime; + entity.totalProgress += Timers.delta(); + handleLiquid(tile, tile, outputLiquid, liquidAdded); + } + + if(entity.progress >= 1f){ + entity.inventory.removeItem(input); + if(outputItem != null) offloadNear(tile, outputItem); + entity.progress = 0f; + } + + if(outputItem != null && entity.timer.get(timerDump, 5)){ + tryDump(tile, outputItem); + } + + if(outputLiquid != null){ + tryDumpLiquid(tile); + } + } + @Override public void draw(Tile tile) { + GenericCrafterEntity entity = tile.entity(); + Draw.rect(name, tile.drawx(), tile.drawy()); + Draw.rect(name + "-frame" + (int) Mathf.absin(entity.totalProgress, 5f, 2.999f), tile.drawx(), tile.drawy()); Draw.color(Color.CLEAR, tile.entity.liquid.liquid.color, tile.entity.liquid.amount / liquidCapacity); Draw.rect(name + "-liquid", tile.drawx(), tile.drawy()); Draw.color(); diff --git a/core/src/io/anuke/mindustry/world/blocks/types/production/Fracker.java b/core/src/io/anuke/mindustry/world/blocks/types/production/Fracker.java new file mode 100644 index 0000000000..57f18e6374 --- /dev/null +++ b/core/src/io/anuke/mindustry/world/blocks/types/production/Fracker.java @@ -0,0 +1,51 @@ +package io.anuke.mindustry.world.blocks.types.production; + +import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.resource.Liquid; +import io.anuke.mindustry.world.Tile; +import io.anuke.ucore.core.Timers; + +public class Fracker extends SolidPump { + protected Liquid inputLiquid; + protected float inputLiquidUse; + + public Fracker(String name) { + super(name); + } + + @Override + public void update(Tile tile) { + FrackerEntity entity = tile.entity(); + + if(entity.input >= inputLiquidUse * Timers.delta()){ + super.update(tile); + entity.input -= inputLiquidUse * Timers.delta(); + } + } + + @Override + public void handleLiquid(Tile tile, Tile source, Liquid liquid, float amount) { + if(liquid != inputLiquid){ + super.handleLiquid(tile, source, liquid, amount); + }else{ + FrackerEntity entity = tile.entity(); + entity.input += amount; + } + } + + @Override + public boolean acceptLiquid(Tile tile, Tile source, Liquid liquid, float amount) { + FrackerEntity entity = tile.entity(); + + return (liquid == inputLiquid && entity.input < inputLiquidUse) || super.acceptLiquid(tile, source, liquid, amount); + } + + @Override + public TileEntity getEntity() { + return new FrackerEntity(); + } + + public static class FrackerEntity extends TileEntity{ + public float input; + } +} diff --git a/core/src/io/anuke/mindustry/world/blocks/types/production/GenericCrafter.java b/core/src/io/anuke/mindustry/world/blocks/types/production/GenericCrafter.java index aeee08699a..7f07c21594 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/production/GenericCrafter.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/production/GenericCrafter.java @@ -14,6 +14,7 @@ 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; import io.anuke.ucore.util.Strings; public class GenericCrafter extends Block{ @@ -29,6 +30,8 @@ public class GenericCrafter extends Block{ protected float powerUse; protected float liquidUse; protected Effect craftEffect = Fx.purify; + protected Effect updateEffect = Fx.none; + protected float updateEffectChance = 0.04f; public GenericCrafter(String name) { super(name); @@ -84,8 +87,12 @@ public class GenericCrafter extends Block{ (inputItem == null || entity.inventory.hasItem(inputItem.item, itemsUsed))){ entity.progress += 1f / craftTime * Timers.delta(); + entity.totalProgress += Timers.delta(); if(hasPower) entity.power.amount -= powerUsed; if(hasLiquids) entity.liquid.amount -= liquidUsed; + + if(Mathf.chance(Timers.delta() * updateEffectChance)) + Effects.effect(updateEffect, entity.x + Mathf.range(size*4f), entity.y + Mathf.range(size*4)); } if(entity.progress >= 1f){ @@ -119,5 +126,6 @@ public class GenericCrafter extends Block{ public static class GenericCrafterEntity extends TileEntity{ public float progress; + public float totalProgress; } } diff --git a/core/src/io/anuke/mindustry/world/blocks/types/production/PlasticFormer.java b/core/src/io/anuke/mindustry/world/blocks/types/production/PlasticFormer.java new file mode 100644 index 0000000000..1e3cd473b3 --- /dev/null +++ b/core/src/io/anuke/mindustry/world/blocks/types/production/PlasticFormer.java @@ -0,0 +1,23 @@ +package io.anuke.mindustry.world.blocks.types.production; + +import io.anuke.mindustry.world.Tile; +import io.anuke.ucore.graphics.Draw; +import io.anuke.ucore.util.Mathf; + +public class PlasticFormer extends GenericCrafter { + + public PlasticFormer(String name) { + super(name); + } + + @Override + public void draw(Tile tile) { + super.draw(tile); + + GenericCrafterEntity entity = tile.entity(); + + Draw.alpha(Mathf.absin(entity.totalProgress, 3f, 0.9f)); + Draw.rect(name + "-top", tile.drawx(), tile.drawy()); + Draw.reset(); + } +} diff --git a/core/src/io/anuke/mindustry/world/blocks/types/production/PowerCrafter.java b/core/src/io/anuke/mindustry/world/blocks/types/production/PowerCrafter.java index 8e8a904535..f51d483b3c 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/production/PowerCrafter.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/production/PowerCrafter.java @@ -39,12 +39,14 @@ public class PowerCrafter extends Block{ if(entity.power.amount > powerUsed && entity.inventory.hasItem(input.item, itemsUsed)){ entity.progress += 1f/craftTime; + entity.totalProgress += Timers.delta(); } if(entity.progress >= 1f){ entity.inventory.removeItem(input); if(outputItem != null) offloadNear(tile, outputItem); if(outputLiquid != null) handleLiquid(tile, tile, outputLiquid, outputLiquidAmount); + entity.progress = 0f; } if(outputItem != null && entity.timer.get(timerDump, 5)){