diff --git a/build.gradle b/build.gradle index ede4be0f00..2181519448 100644 --- a/build.gradle +++ b/build.gradle @@ -27,7 +27,7 @@ allprojects { gdxVersion = '1.9.8' roboVMVersion = '2.3.0' aiVersion = '1.8.1' - uCoreVersion = 'f937c5cad6' + uCoreVersion = 'e1749b8798' getVersionString = { String buildVersion = getBuildVersion() diff --git a/core/assets-raw/sprites/ui/icons/icon-item.png b/core/assets-raw/sprites/ui/icons/icon-item.png new file mode 100644 index 0000000000..0e99951b81 Binary files /dev/null and b/core/assets-raw/sprites/ui/icons/icon-item.png differ diff --git a/core/assets-raw/sprites/ui/icons/icon-missing.png b/core/assets-raw/sprites/ui/icons/icon-missing.png new file mode 100644 index 0000000000..fcae107678 Binary files /dev/null and b/core/assets-raw/sprites/ui/icons/icon-missing.png differ diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index dc37a8a402..1ed040bc32 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -292,6 +292,7 @@ text.blocks.inputfuel=Fuel text.blocks.fuelburntime=Fuel Burn Time text.blocks.inputcapacity=Input capacity text.blocks.outputcapacity=Output capacity +text.blocks.required=Required: text.unit.blocks=blocks text.unit.powersecond=power units/second diff --git a/core/assets/sprites/sprites.atlas b/core/assets/sprites/sprites.atlas index 51cdebf247..be782dff2f 100644 --- a/core/assets/sprites/sprites.atlas +++ b/core/assets/sprites/sprites.atlas @@ -13,49 +13,49 @@ background index: -1 bridge-conveyor-arrow rotate: false - xy: 333, 25 + xy: 333, 5 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 bridge-conveyor-bridge rotate: false - xy: 323, 5 + xy: 343, 15 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 bridge-conveyor-end rotate: false - xy: 333, 15 + xy: 353, 25 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 phase-conveyor-arrow rotate: false - xy: 637, 128 + xy: 627, 118 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 phase-conveyor-bridge rotate: false - xy: 627, 108 + xy: 637, 128 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 phase-conveyor-end rotate: false - xy: 637, 118 + xy: 627, 108 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 router rotate: false - xy: 662, 158 + xy: 647, 98 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -97,21 +97,21 @@ blast-drill-top index: -1 carbide-drill rotate: false - xy: 343, 25 + xy: 343, 5 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 carbide-drill-rotator rotate: false - xy: 333, 5 + xy: 353, 15 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 carbide-drill-top rotate: false - xy: 343, 15 + xy: 363, 25 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -195,21 +195,21 @@ plasma-drill-top index: -1 tungsten-drill rotate: false - xy: 429, 38 + xy: 741, 161 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 tungsten-drill-rotator rotate: false - xy: 433, 28 + xy: 747, 181 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 tungsten-drill-top rotate: false - xy: 433, 18 + xy: 747, 171 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -279,14 +279,14 @@ block-icon-blackstone index: -1 blackstone2 rotate: false - xy: 974, 367 + xy: 512, 72 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackstone3 rotate: false - xy: 512, 83 + xy: 957, 359 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -300,35 +300,35 @@ blackstoneedge index: -1 coal1 rotate: false - xy: 353, 25 + xy: 353, 5 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 coal2 rotate: false - xy: 343, 5 + xy: 363, 15 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 coal3 rotate: false - xy: 353, 15 + xy: 373, 25 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirt2 rotate: false - xy: 517, 121 + xy: 967, 356 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirt3 rotate: false - xy: 517, 111 + xy: 977, 356 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -342,42 +342,42 @@ dirtedge index: -1 grass-cliff-edge rotate: false - xy: 987, 355 + xy: 997, 345 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grass-cliff-edge-1 rotate: false - xy: 997, 355 + xy: 1007, 349 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grass-cliff-edge-2 rotate: false - xy: 987, 345 + xy: 1007, 339 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grass-cliff-side rotate: false - xy: 997, 345 + xy: 409, 48 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grass2 rotate: false - xy: 977, 357 + xy: 997, 355 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grass3 rotate: false - xy: 977, 347 + xy: 987, 345 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -391,42 +391,42 @@ grassedge index: -1 ice-cliff-edge rotate: false - xy: 409, 48 + xy: 971, 336 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ice-cliff-edge-1 rotate: false - xy: 409, 38 + xy: 413, 28 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ice-cliff-edge-2 rotate: false - xy: 413, 28 + xy: 413, 18 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ice-cliff-side rotate: false - xy: 413, 18 + xy: 413, 8 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ice2 rotate: false - xy: 1007, 349 + xy: 409, 38 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ice3 rotate: false - xy: 1007, 339 + xy: 961, 336 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -440,35 +440,35 @@ iceedge index: -1 icerock2 rotate: false - xy: 413, 8 + xy: 981, 335 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icerockshadow1 rotate: false - xy: 701, 161 + xy: 991, 335 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 rockshadow1 rotate: false - xy: 701, 161 + xy: 991, 335 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icerockshadow2 rotate: false - xy: 711, 161 + xy: 701, 161 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 rockshadow2 rotate: false - xy: 711, 161 + xy: 701, 161 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -482,56 +482,56 @@ lavaedge index: -1 lead1 rotate: false - xy: 555, 171 + xy: 567, 181 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 lead2 rotate: false - xy: 565, 171 + xy: 555, 171 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 lead3 rotate: false - xy: 522, 161 + xy: 565, 171 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor2 rotate: false - xy: 542, 151 + xy: 527, 131 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor3 rotate: false - xy: 540, 141 + xy: 542, 151 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor4 rotate: false - xy: 527, 121 + xy: 540, 141 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor5 rotate: false - xy: 537, 131 + xy: 527, 121 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor6 rotate: false - xy: 552, 151 + xy: 537, 131 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -552,49 +552,49 @@ oiledge index: -1 rock2 rotate: false - xy: 647, 98 + xy: 637, 98 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sand-cliff-edge rotate: false - xy: 657, 118 + xy: 657, 128 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sand-cliff-edge-1 rotate: false - xy: 657, 108 + xy: 657, 118 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sand-cliff-edge-2 rotate: false - xy: 657, 98 + xy: 657, 108 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sand-cliff-side rotate: false - xy: 672, 159 + xy: 657, 98 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sand2 rotate: false - xy: 660, 138 + xy: 662, 148 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sand3 rotate: false - xy: 657, 128 + xy: 660, 138 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -608,49 +608,49 @@ sandedge index: -1 shrubshadow rotate: false - xy: 682, 149 + xy: 672, 149 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snow-cliff-edge rotate: false - xy: 667, 108 + xy: 667, 118 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snow-cliff-edge-1 rotate: false - xy: 667, 98 + xy: 667, 108 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snow-cliff-edge-2 rotate: false - xy: 670, 138 + xy: 667, 98 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snow-cliff-side rotate: false - xy: 680, 139 + xy: 670, 138 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snow2 rotate: false - xy: 667, 128 + xy: 682, 149 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snow3 rotate: false - xy: 667, 118 + xy: 667, 128 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -671,42 +671,42 @@ spaceedge index: -1 stone-cliff-edge rotate: false - xy: 677, 108 + xy: 677, 118 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stone-cliff-edge-1 rotate: false - xy: 677, 98 + xy: 677, 108 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stone-cliff-edge-2 rotate: false - xy: 889, 317 + xy: 677, 98 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stone-cliff-side rotate: false - xy: 516, 63 + xy: 889, 317 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stone2 rotate: false - xy: 677, 128 + xy: 680, 139 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stone3 rotate: false - xy: 677, 118 + xy: 677, 128 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -720,91 +720,91 @@ stoneedge index: -1 thorium1 rotate: false - xy: 516, 53 + xy: 736, 241 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 thorium2 rotate: false - xy: 506, 49 + xy: 736, 231 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 thorium3 rotate: false - xy: 496, 48 + xy: 736, 221 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium1 rotate: false - xy: 516, 43 + xy: 736, 211 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium2 rotate: false - xy: 506, 39 + xy: 731, 201 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium3 rotate: false - xy: 419, 38 + xy: 731, 191 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 tungsten1 rotate: false - xy: 423, 18 + xy: 741, 191 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 tungsten2 rotate: false - xy: 423, 8 + xy: 737, 181 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 tungsten3 rotate: false - xy: 516, 33 + xy: 737, 171 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 water-cliff-edge rotate: false - xy: 433, 8 + xy: 751, 161 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 water-cliff-edge-1 rotate: false - xy: 439, 38 + xy: 873, 305 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 water-cliff-edge-2 rotate: false - xy: 443, 28 + xy: 883, 305 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 water-cliff-side rotate: false - xy: 443, 18 + xy: 871, 295 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -818,63 +818,63 @@ wateredge index: -1 block-border rotate: false - xy: 957, 349 + xy: 931, 335 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-elevation rotate: false - xy: 921, 335 + xy: 941, 335 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 combustion-generator-top rotate: false - xy: 921, 335 + xy: 941, 335 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-middle rotate: false - xy: 313, 25 + xy: 313, 5 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pump-liquid rotate: false - xy: 313, 25 + xy: 313, 5 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-slope rotate: false - xy: 303, 5 + xy: 323, 15 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 border rotate: false - xy: 313, 15 + xy: 333, 25 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-liquid rotate: false - xy: 383, 15 + xy: 393, 5 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 cross-1 rotate: false - xy: 517, 131 + xy: 512, 62 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -902,7 +902,7 @@ cross-4 index: -1 enemyspawn rotate: false - xy: 967, 347 + xy: 987, 355 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -916,21 +916,21 @@ nuclearreactor-shadow index: -1 place-arrow rotate: false - xy: 647, 128 + xy: 637, 118 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 playerspawn rotate: false - xy: 637, 108 + xy: 647, 128 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ripples rotate: false - xy: 488, 68 + xy: 416, 58 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -979,7 +979,7 @@ rubble-3-1 index: -1 shadow-1 rotate: false - xy: 428, 56 + xy: 452, 56 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -1021,7 +1021,7 @@ shadow-6 index: -1 shadow-round-1 rotate: false - xy: 440, 56 + xy: 464, 56 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -1042,154 +1042,154 @@ shadow-rounded-2 index: -1 bridge-conduit-arrow rotate: false - xy: 323, 25 + xy: 323, 5 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 bridge-conduit-bridge rotate: false - xy: 313, 5 + xy: 333, 15 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 bridge-conduit-end rotate: false - xy: 323, 15 + xy: 343, 25 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-bottom rotate: false - xy: 363, 25 + xy: 363, 5 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-bottom-0 rotate: false - xy: 353, 5 + xy: 373, 15 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-bottom-1 rotate: false - xy: 363, 15 + xy: 383, 25 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-bottom-2 rotate: false - xy: 373, 25 + xy: 373, 5 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-bottom-3 rotate: false - xy: 363, 5 + xy: 383, 15 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-bottom-4 rotate: false - xy: 373, 15 + xy: 393, 25 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-bottom-5 rotate: false - xy: 383, 25 + xy: 383, 5 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-bottom-6 rotate: false - xy: 373, 5 + xy: 393, 15 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-top-0 rotate: false - xy: 393, 25 + xy: 403, 25 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-top-1 rotate: false - xy: 383, 5 + xy: 403, 15 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-top-2 rotate: false - xy: 393, 15 + xy: 403, 5 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-top-3 rotate: false - xy: 393, 5 + xy: 517, 131 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-top-4 rotate: false - xy: 403, 25 + xy: 517, 121 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-top-5 rotate: false - xy: 403, 15 + xy: 517, 111 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-top-6 rotate: false - xy: 403, 5 + xy: 517, 101 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquid-router rotate: false - xy: 520, 141 + xy: 522, 151 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquid-router-bottom rotate: false - xy: 532, 151 + xy: 520, 141 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquid-router-liquid rotate: false - xy: 530, 141 + xy: 532, 151 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquid-router-top rotate: false - xy: 527, 131 + xy: 530, 141 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1217,70 +1217,70 @@ liquid-tank-top index: -1 phase-conduit-arrow rotate: false - xy: 627, 128 + xy: 617, 118 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 phase-conduit-bridge rotate: false - xy: 617, 108 + xy: 627, 128 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 phase-conduit-end rotate: false - xy: 627, 118 + xy: 617, 108 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pulse-conduit-top-0 rotate: false - xy: 647, 118 + xy: 637, 108 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pulse-conduit-top-1 rotate: false - xy: 647, 108 + xy: 647, 118 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pulse-conduit-top-2 rotate: false - xy: 567, 98 + xy: 647, 108 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pulse-conduit-top-3 rotate: false - xy: 577, 98 + xy: 567, 98 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pulse-conduit-top-4 rotate: false - xy: 587, 98 + xy: 577, 98 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pulse-conduit-top-5 rotate: false - xy: 597, 98 + xy: 587, 98 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pulse-conduit-top-6 rotate: false - xy: 607, 98 + xy: 597, 98 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1385,7 +1385,7 @@ nuclear-reactor-lights index: -1 rtg-generator-top rotate: false - xy: 662, 148 + xy: 662, 158 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1560,14 +1560,14 @@ cultivator-top index: -1 lavasmelter rotate: false - xy: 567, 181 + xy: 545, 171 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 oilrefinery rotate: false - xy: 550, 141 + xy: 552, 151 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1609,21 +1609,21 @@ poweralloysmelter-top index: -1 pulverizer rotate: false - xy: 617, 98 + xy: 607, 98 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pulverizer-rotator rotate: false - xy: 627, 98 + xy: 617, 98 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 separator-liquid rotate: false - xy: 682, 159 + xy: 672, 159 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1637,14 +1637,14 @@ core-open index: -1 block-1 rotate: false - xy: 512, 73 + xy: 957, 349 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-1-top rotate: false - xy: 957, 359 + xy: 921, 335 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1721,7 +1721,7 @@ mass-driver-turret index: -1 duo rotate: false - xy: 967, 357 + xy: 977, 346 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1826,14 +1826,14 @@ salvo-panel-right index: -1 scorch rotate: false - xy: 500, 69 + xy: 428, 56 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 scorch-shoot rotate: false - xy: 416, 58 + xy: 440, 56 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -1924,7 +1924,7 @@ reconstructor-open index: -1 repair-point-turret rotate: false - xy: 637, 98 + xy: 627, 98 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1945,7 +1945,7 @@ door-large-open index: -1 door-open rotate: false - xy: 517, 101 + xy: 967, 346 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2057,7 +2057,7 @@ missile index: -1 missile-back rotate: false - xy: 452, 57 + xy: 476, 57 size: 9, 9 orig: 9, 9 offset: 0, 0 @@ -2099,21 +2099,21 @@ scorch5 index: -1 shell rotate: false - xy: 463, 57 + xy: 487, 57 size: 9, 9 orig: 9, 9 offset: 0, 0 index: -1 shell-back rotate: false - xy: 474, 57 + xy: 974, 366 size: 9, 9 orig: 9, 9 offset: 0, 0 index: -1 shot rotate: false - xy: 672, 149 + xy: 682, 159 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2127,7 +2127,7 @@ transfer index: -1 transfer-arrow rotate: false - xy: 423, 28 + xy: 741, 201 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2162,49 +2162,49 @@ block-icon-blast-drill index: -1 block-icon-bridge-conduit rotate: false - xy: 931, 335 + xy: 951, 335 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 bridge-conduit rotate: false - xy: 931, 335 + xy: 951, 335 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-bridge-conveyor rotate: false - xy: 941, 335 + xy: 728, 291 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 bridge-conveyor rotate: false - xy: 941, 335 + xy: 728, 291 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-carbide-drill rotate: false - xy: 951, 335 + xy: 728, 281 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-carbide-wall rotate: false - xy: 496, 58 + xy: 728, 271 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 carbide-wall rotate: false - xy: 496, 58 + xy: 728, 271 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2239,35 +2239,35 @@ centrifuge index: -1 block-icon-combustion-generator rotate: false - xy: 506, 59 + xy: 728, 261 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 combustion-generator rotate: false - xy: 506, 59 + xy: 728, 261 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-conduit rotate: false - xy: 728, 291 + xy: 728, 251 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-conveyor rotate: false - xy: 728, 281 + xy: 726, 241 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor rotate: false - xy: 728, 281 + xy: 726, 241 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2323,42 +2323,42 @@ dart-ship-factory index: -1 block-icon-deepwater rotate: false - xy: 728, 271 + xy: 726, 231 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 deepwater rotate: false - xy: 728, 271 + xy: 726, 231 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-deflector-wall rotate: false - xy: 728, 261 + xy: 726, 221 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 deflector-wall rotate: false - xy: 728, 261 + xy: 726, 221 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 phase-wall rotate: false - xy: 728, 261 + xy: 726, 221 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-phase-wall rotate: false - xy: 728, 261 + xy: 726, 221 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2407,14 +2407,14 @@ delta-mech-factory index: -1 block-icon-dirt rotate: false - xy: 728, 251 + xy: 726, 211 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirt1 rotate: false - xy: 728, 251 + xy: 726, 211 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2435,14 +2435,14 @@ distributor index: -1 block-icon-door rotate: false - xy: 726, 241 + xy: 863, 309 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 door rotate: false - xy: 726, 241 + xy: 863, 309 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2470,14 +2470,14 @@ block-icon-drone-factory index: -1 block-icon-drop-point rotate: false - xy: 726, 231 + xy: 861, 299 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 drop-point rotate: false - xy: 726, 231 + xy: 861, 299 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2512,14 +2512,14 @@ block-icon-fusion-reactor index: -1 block-icon-grass rotate: false - xy: 726, 221 + xy: 289, 53 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grass1 rotate: false - xy: 726, 221 + xy: 289, 53 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2533,70 +2533,70 @@ block-icon-hail index: -1 block-icon-ice rotate: false - xy: 726, 211 + xy: 289, 43 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ice1 rotate: false - xy: 726, 211 + xy: 289, 43 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-icerock rotate: false - xy: 863, 309 + xy: 289, 33 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icerock1 rotate: false - xy: 863, 309 + xy: 289, 33 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-incinerator rotate: false - xy: 861, 299 + xy: 299, 55 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 incinerator rotate: false - xy: 861, 299 + xy: 299, 55 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-itemsource rotate: false - xy: 289, 53 + xy: 309, 55 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 itemsource rotate: false - xy: 289, 53 + xy: 309, 55 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-itemvoid rotate: false - xy: 289, 43 + xy: 299, 45 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 itemvoid rotate: false - xy: 289, 43 + xy: 299, 45 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2617,14 +2617,14 @@ javelin-ship-factory index: -1 block-icon-junction rotate: false - xy: 289, 33 + xy: 319, 55 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 junction rotate: false - xy: 289, 33 + xy: 319, 55 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2645,35 +2645,35 @@ block-icon-laser-drill index: -1 block-icon-lava rotate: false - xy: 299, 55 + xy: 299, 35 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 lava rotate: false - xy: 299, 55 + xy: 299, 35 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-liquid-junction rotate: false - xy: 309, 55 + xy: 309, 45 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquid-junction rotate: false - xy: 309, 55 + xy: 309, 45 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-liquid-router rotate: false - xy: 299, 45 + xy: 329, 55 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2687,14 +2687,14 @@ block-icon-liquid-tank index: -1 block-icon-liquidsource rotate: false - xy: 319, 55 + xy: 309, 35 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquidsource rotate: false - xy: 319, 55 + xy: 309, 35 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2722,14 +2722,14 @@ core-top index: -1 block-icon-mechanical-pump rotate: false - xy: 299, 35 + xy: 319, 45 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 mechanical-pump rotate: false - xy: 299, 35 + xy: 319, 45 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2743,28 +2743,28 @@ block-icon-meltdown index: -1 block-icon-melter rotate: false - xy: 309, 45 + xy: 339, 55 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 melter rotate: false - xy: 309, 45 + xy: 339, 55 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-metalfloor rotate: false - xy: 329, 55 + xy: 319, 35 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor1 rotate: false - xy: 329, 55 + xy: 319, 35 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2785,14 +2785,14 @@ nuclear-reactor index: -1 block-icon-oil rotate: false - xy: 309, 35 + xy: 329, 45 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 oil rotate: false - xy: 309, 35 + xy: 329, 45 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2806,42 +2806,42 @@ block-icon-oil-extractor index: -1 block-icon-overflow-gate rotate: false - xy: 319, 45 + xy: 349, 55 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 overflow-gate rotate: false - xy: 319, 45 + xy: 349, 55 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-phase-conduit rotate: false - xy: 339, 55 + xy: 329, 35 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 phase-conduit rotate: false - xy: 339, 55 + xy: 329, 35 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-phase-conveyor rotate: false - xy: 319, 35 + xy: 339, 45 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 phase-conveyor rotate: false - xy: 319, 35 + xy: 339, 45 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2876,14 +2876,14 @@ plastanium-compressor index: -1 block-icon-power-node rotate: false - xy: 329, 45 + xy: 359, 55 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 power-node rotate: false - xy: 329, 45 + xy: 359, 55 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2904,42 +2904,42 @@ power-node-large index: -1 block-icon-powerinfinite rotate: false - xy: 349, 55 + xy: 339, 35 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 powerinfinite rotate: false - xy: 349, 55 + xy: 339, 35 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-powervoid rotate: false - xy: 329, 35 + xy: 349, 45 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 powervoid rotate: false - xy: 329, 35 + xy: 349, 45 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-pulse-conduit rotate: false - xy: 339, 45 + xy: 369, 55 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-pulverizer rotate: false - xy: 359, 55 + xy: 349, 35 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2988,28 +2988,28 @@ reconstructor index: -1 block-icon-repair-point rotate: false - xy: 339, 35 + xy: 359, 45 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 repair-point rotate: false - xy: 339, 35 + xy: 359, 45 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-resupply-point rotate: false - xy: 349, 45 + xy: 379, 55 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 resupply-point rotate: false - xy: 349, 45 + xy: 379, 55 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -3023,14 +3023,14 @@ block-icon-ripple index: -1 block-icon-rock rotate: false - xy: 369, 55 + xy: 359, 35 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 rock1 rotate: false - xy: 369, 55 + xy: 359, 35 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -3051,14 +3051,14 @@ rotary-pump index: -1 block-icon-rtg-generator rotate: false - xy: 349, 35 + xy: 369, 45 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 rtg-generator rotate: false - xy: 349, 35 + xy: 369, 45 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -3072,14 +3072,14 @@ block-icon-salvo index: -1 block-icon-sand rotate: false - xy: 359, 45 + xy: 389, 55 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sand1 rotate: false - xy: 359, 45 + xy: 389, 55 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -3093,28 +3093,28 @@ block-icon-scorch index: -1 block-icon-separator rotate: false - xy: 379, 55 + xy: 369, 35 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 separator rotate: false - xy: 379, 55 + xy: 369, 35 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-shrub rotate: false - xy: 359, 35 + xy: 379, 45 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 shrub rotate: false - xy: 359, 35 + xy: 379, 45 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -3135,42 +3135,42 @@ silicon-smelter index: -1 block-icon-smelter rotate: false - xy: 369, 45 + xy: 379, 35 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 smelter rotate: false - xy: 369, 45 + xy: 379, 35 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-snow rotate: false - xy: 389, 55 + xy: 389, 45 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snow1 rotate: false - xy: 389, 55 + xy: 389, 45 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-solar-panel rotate: false - xy: 369, 35 + xy: 389, 35 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 solar-panel rotate: false - xy: 369, 35 + xy: 389, 35 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -3191,56 +3191,56 @@ solar-panel-large index: -1 block-icon-solidifer rotate: false - xy: 379, 45 + xy: 399, 55 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 solidifer rotate: false - xy: 379, 45 + xy: 399, 55 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-sortedunloader rotate: false - xy: 379, 35 + xy: 399, 45 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sortedunloader rotate: false - xy: 379, 35 + xy: 399, 45 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-sorter rotate: false - xy: 389, 45 + xy: 399, 35 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sorter rotate: false - xy: 389, 45 + xy: 399, 35 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-space rotate: false - xy: 389, 35 + xy: 293, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 space rotate: false - xy: 389, 35 + xy: 293, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -3254,28 +3254,28 @@ block-icon-spectre index: -1 block-icon-splitter rotate: false - xy: 399, 55 + xy: 293, 13 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 splitter rotate: false - xy: 399, 55 + xy: 293, 13 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-stone rotate: false - xy: 399, 45 + xy: 293, 3 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stone1 rotate: false - xy: 399, 45 + xy: 293, 3 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -3317,14 +3317,14 @@ thermal-pump index: -1 block-icon-thorium-wall rotate: false - xy: 399, 35 + xy: 303, 25 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 thorium-wall rotate: false - xy: 399, 35 + xy: 303, 25 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -3345,35 +3345,35 @@ thorium-wall-large index: -1 block-icon-titanium-conveyor rotate: false - xy: 293, 23 + xy: 303, 15 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor rotate: false - xy: 293, 23 + xy: 303, 15 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-tungsten-drill rotate: false - xy: 293, 13 + xy: 313, 25 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-tungsten-wall rotate: false - xy: 293, 3 + xy: 303, 5 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 tungsten-wall rotate: false - xy: 293, 3 + xy: 303, 5 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -3408,14 +3408,14 @@ turbine-generator index: -1 block-icon-unloader rotate: false - xy: 303, 25 + xy: 313, 15 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 unloader rotate: false - xy: 303, 25 + xy: 313, 15 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -3450,14 +3450,14 @@ warp-gate index: -1 block-icon-water rotate: false - xy: 303, 15 + xy: 323, 25 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 water rotate: false - xy: 303, 15 + xy: 323, 25 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -3478,28 +3478,28 @@ block-icon-wave index: -1 liquid-icon-cryofluid rotate: false - xy: 542, 161 + xy: 532, 161 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquid-icon-lava rotate: false - xy: 552, 161 + xy: 542, 161 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquid-icon-oil rotate: false - xy: 562, 161 + xy: 552, 161 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquid-icon-water rotate: false - xy: 522, 151 + xy: 562, 161 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -3555,525 +3555,525 @@ mech-icon-tau-mech index: -1 ore-coal-grass1 rotate: false - xy: 527, 111 + xy: 550, 141 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-grass2 rotate: false - xy: 537, 121 + xy: 527, 111 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-grass3 rotate: false - xy: 547, 131 + xy: 537, 121 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-ice1 rotate: false - xy: 562, 151 + xy: 547, 131 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-ice2 rotate: false - xy: 560, 141 + xy: 562, 151 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-ice3 rotate: false - xy: 527, 101 + xy: 560, 141 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-sand1 rotate: false - xy: 537, 111 + xy: 527, 101 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-sand2 rotate: false - xy: 547, 121 + xy: 537, 111 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-sand3 rotate: false - xy: 557, 131 + xy: 547, 121 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-snow1 rotate: false - xy: 537, 101 + xy: 557, 131 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-snow2 rotate: false - xy: 547, 111 + xy: 537, 101 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-snow3 rotate: false - xy: 557, 121 + xy: 547, 111 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-stone1 rotate: false - xy: 547, 101 + xy: 557, 121 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-stone2 rotate: false - xy: 557, 111 + xy: 547, 101 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-stone3 rotate: false - xy: 557, 101 + xy: 557, 111 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-grass1 rotate: false - xy: 577, 178 + xy: 557, 101 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-grass2 rotate: false - xy: 587, 178 + xy: 577, 178 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-grass3 rotate: false - xy: 597, 178 + xy: 587, 178 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-ice1 rotate: false - xy: 607, 178 + xy: 597, 178 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-ice2 rotate: false - xy: 617, 178 + xy: 607, 178 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-ice3 rotate: false - xy: 627, 178 + xy: 617, 178 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-sand1 rotate: false - xy: 637, 178 + xy: 627, 178 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-sand2 rotate: false - xy: 575, 168 + xy: 637, 178 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-sand3 rotate: false - xy: 585, 168 + xy: 575, 168 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-snow1 rotate: false - xy: 595, 168 + xy: 585, 168 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-snow2 rotate: false - xy: 605, 168 + xy: 595, 168 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-snow3 rotate: false - xy: 615, 168 + xy: 605, 168 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-stone1 rotate: false - xy: 625, 168 + xy: 615, 168 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-stone2 rotate: false - xy: 635, 168 + xy: 625, 168 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-stone3 rotate: false - xy: 572, 158 + xy: 635, 168 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-grass1 rotate: false - xy: 582, 158 + xy: 572, 158 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-grass2 rotate: false - xy: 592, 158 + xy: 582, 158 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-grass3 rotate: false - xy: 602, 158 + xy: 592, 158 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-ice1 rotate: false - xy: 612, 158 + xy: 602, 158 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-ice2 rotate: false - xy: 622, 158 + xy: 612, 158 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-ice3 rotate: false - xy: 632, 158 + xy: 622, 158 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-sand1 rotate: false - xy: 572, 148 + xy: 632, 158 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-sand2 rotate: false - xy: 582, 148 + xy: 572, 148 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-sand3 rotate: false - xy: 592, 148 + xy: 582, 148 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-snow1 rotate: false - xy: 602, 148 + xy: 592, 148 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-snow2 rotate: false - xy: 612, 148 + xy: 602, 148 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-snow3 rotate: false - xy: 622, 148 + xy: 612, 148 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-stone1 rotate: false - xy: 632, 148 + xy: 622, 148 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-stone2 rotate: false - xy: 645, 168 + xy: 632, 148 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-stone3 rotate: false - xy: 655, 168 + xy: 645, 168 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-grass1 rotate: false - xy: 642, 158 + xy: 655, 168 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-grass2 rotate: false - xy: 642, 148 + xy: 642, 158 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-grass3 rotate: false - xy: 652, 158 + xy: 642, 148 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-ice1 rotate: false - xy: 652, 148 + xy: 652, 158 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-ice2 rotate: false - xy: 570, 138 + xy: 652, 148 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-ice3 rotate: false - xy: 580, 138 + xy: 570, 138 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-sand1 rotate: false - xy: 590, 138 + xy: 580, 138 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-sand2 rotate: false - xy: 600, 138 + xy: 590, 138 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-sand3 rotate: false - xy: 610, 138 + xy: 600, 138 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-snow1 rotate: false - xy: 620, 138 + xy: 610, 138 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-snow2 rotate: false - xy: 630, 138 + xy: 620, 138 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-snow3 rotate: false - xy: 640, 138 + xy: 630, 138 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-stone1 rotate: false - xy: 650, 138 + xy: 640, 138 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-stone2 rotate: false - xy: 567, 128 + xy: 650, 138 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-stone3 rotate: false - xy: 567, 118 + xy: 567, 128 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-tungsten-grass1 rotate: false - xy: 577, 128 + xy: 567, 118 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-tungsten-grass2 rotate: false - xy: 567, 108 + xy: 577, 128 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-tungsten-grass3 rotate: false - xy: 577, 118 + xy: 567, 108 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-tungsten-ice1 rotate: false - xy: 587, 128 + xy: 577, 118 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-tungsten-ice2 rotate: false - xy: 577, 108 + xy: 587, 128 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-tungsten-ice3 rotate: false - xy: 587, 118 + xy: 577, 108 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-tungsten-sand1 rotate: false - xy: 597, 128 + xy: 587, 118 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-tungsten-sand2 rotate: false - xy: 587, 108 + xy: 597, 128 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-tungsten-sand3 rotate: false - xy: 597, 118 + xy: 587, 108 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-tungsten-snow1 rotate: false - xy: 607, 128 + xy: 597, 118 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-tungsten-snow2 rotate: false - xy: 597, 108 + xy: 607, 128 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-tungsten-snow3 rotate: false - xy: 607, 118 + xy: 597, 108 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-tungsten-stone1 rotate: false - xy: 617, 128 + xy: 607, 118 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-tungsten-stone2 rotate: false - xy: 607, 108 + xy: 617, 128 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-tungsten-stone3 rotate: false - xy: 617, 118 + xy: 607, 108 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -4108,112 +4108,112 @@ vtol index: -1 item-biomatter rotate: false - xy: 731, 161 + xy: 721, 161 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-blast-compound rotate: false - xy: 775, 302 + xy: 731, 161 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-carbide rotate: false - xy: 785, 302 + xy: 775, 302 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-coal rotate: false - xy: 795, 302 + xy: 785, 302 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-lead rotate: false - xy: 507, 181 + xy: 795, 302 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-phase-matter rotate: false - xy: 505, 171 + xy: 507, 181 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-plastanium rotate: false - xy: 517, 181 + xy: 505, 171 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-pyratite rotate: false - xy: 527, 181 + xy: 517, 181 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-sand rotate: false - xy: 515, 171 + xy: 527, 181 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-silicon rotate: false - xy: 537, 181 + xy: 515, 171 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-stone rotate: false - xy: 525, 171 + xy: 537, 181 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-surge-alloy rotate: false - xy: 547, 181 + xy: 525, 171 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-thorium rotate: false - xy: 535, 171 + xy: 547, 181 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-titanium rotate: false - xy: 557, 181 + xy: 535, 171 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-tungsten rotate: false - xy: 545, 171 + xy: 557, 181 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquid-icon rotate: false - xy: 532, 161 + xy: 522, 161 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -4864,9 +4864,16 @@ icon-itch.io orig: 14, 14 offset: 0, 0 index: -1 +icon-item + rotate: false + xy: 404, 66 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 icon-items-none rotate: false - xy: 721, 161 + xy: 711, 161 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -4887,7 +4894,7 @@ icon-link index: -1 icon-liquid rotate: false - xy: 404, 66 + xy: 416, 70 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -4929,7 +4936,7 @@ icon-locked index: -1 icon-logic rotate: false - xy: 416, 70 + xy: 428, 80 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -4943,7 +4950,7 @@ icon-map index: -1 icon-menu rotate: false - xy: 428, 80 + xy: 440, 80 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -4955,16 +4962,23 @@ icon-menu-large orig: 16, 16 offset: 0, 0 index: -1 +icon-missing + rotate: false + xy: 452, 80 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 icon-none rotate: false - xy: 440, 80 + xy: 464, 80 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-pause rotate: false - xy: 452, 80 + xy: 476, 80 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -4992,7 +5006,7 @@ icon-pick index: -1 icon-play rotate: false - xy: 464, 80 + xy: 488, 80 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -5006,21 +5020,21 @@ icon-play-2 index: -1 icon-players rotate: false - xy: 476, 80 + xy: 500, 81 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-power rotate: false - xy: 488, 80 + xy: 428, 68 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-production rotate: false - xy: 500, 81 + xy: 440, 68 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -5111,7 +5125,7 @@ icon-save-map index: -1 icon-settings rotate: false - xy: 428, 68 + xy: 452, 68 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -5132,14 +5146,14 @@ icon-tools index: -1 icon-touch rotate: false - xy: 440, 68 + xy: 464, 68 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-touchDelete rotate: false - xy: 452, 68 + xy: 476, 68 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -5181,7 +5195,7 @@ icon-undo index: -1 icon-units rotate: false - xy: 464, 68 + xy: 488, 68 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -5195,7 +5209,7 @@ icon-unlocks index: -1 icon-weapon rotate: false - xy: 476, 68 + xy: 500, 69 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -5474,7 +5488,7 @@ titan-leg index: -1 vtol-flame rotate: false - xy: 485, 57 + xy: 512, 82 size: 9, 9 orig: 9, 9 offset: 0, 0 diff --git a/core/assets/sprites/sprites.png b/core/assets/sprites/sprites.png index 9ae2122cd9..367ec17fe6 100644 Binary files a/core/assets/sprites/sprites.png and b/core/assets/sprites/sprites.png differ diff --git a/core/src/io/anuke/mindustry/content/blocks/CraftingBlocks.java b/core/src/io/anuke/mindustry/content/blocks/CraftingBlocks.java index 6fe9a4db48..945a15ef36 100644 --- a/core/src/io/anuke/mindustry/content/blocks/CraftingBlocks.java +++ b/core/src/io/anuke/mindustry/content/blocks/CraftingBlocks.java @@ -128,6 +128,7 @@ public class CraftingBlocks extends BlockList implements ContentList { itemCapacity = 20; hasItems = true; hasPower = true; + hasLiquids = true; output = Items.blastCompound; size = 2; diff --git a/core/src/io/anuke/mindustry/editor/MapEditorDialog.java b/core/src/io/anuke/mindustry/editor/MapEditorDialog.java index 777d844540..25c3191b95 100644 --- a/core/src/io/anuke/mindustry/editor/MapEditorDialog.java +++ b/core/src/io/anuke/mindustry/editor/MapEditorDialog.java @@ -3,7 +3,6 @@ package io.anuke.mindustry.editor; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.files.FileHandle; import com.badlogic.gdx.graphics.Color; -import com.badlogic.gdx.graphics.Pixmap; import com.badlogic.gdx.graphics.g2d.TextureRegion; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.utils.Align; @@ -26,7 +25,6 @@ import io.anuke.ucore.core.Timers; import io.anuke.ucore.function.Consumer; import io.anuke.ucore.function.Listenable; import io.anuke.ucore.graphics.Draw; -import io.anuke.ucore.graphics.Pixmaps; import io.anuke.ucore.input.Input; import io.anuke.ucore.scene.actions.Actions; import io.anuke.ucore.scene.builders.build; @@ -115,10 +113,10 @@ public class MapEditorDialog extends Dialog implements Disposable{ } }); }, true, mapExtension); - }, + }/*, "$text.editor.importimage", "$text.editor.importimage.description", "icon-file-image", (Listenable)() -> { if(gwt){ - ui.showError("text.web.unsupported"); + ui.showError("$text.web.unsupported"); }else { Platform.instance.showFileChooser("$text.loadimage", "Image Files", file -> { ui.loadAnd(() -> { @@ -134,7 +132,7 @@ public class MapEditorDialog extends Dialog implements Disposable{ }); }, true, "png"); } - })); + }*/)); t.addImageTextButton("$text.editor.export", "icon-save-map", isize, () -> createDialog("$text.editor.export", "$text.editor.exportfile", "$text.editor.exportfile.description", "icon-file", (Listenable)() -> { @@ -165,11 +163,11 @@ public class MapEditorDialog extends Dialog implements Disposable{ Log.err(e); } } - }, + }/*, "$text.editor.exportimage", "$text.editor.exportimage.description", "icon-file-image", (Listenable)() -> { if(gwt){ - ui.showError("text.web.unsupported"); - }else { + ui.showError("$text.web.unsupported"); + }else{ Platform.instance.showFileChooser("$text.saveimage", "Image Files", file -> { file = file.parent().child(file.nameWithoutExtension() + ".png"); FileHandle result = file; @@ -183,7 +181,7 @@ public class MapEditorDialog extends Dialog implements Disposable{ }); }, false, "png"); } - })); + }*/)); t.row(); diff --git a/core/src/io/anuke/mindustry/graphics/OverlayRenderer.java b/core/src/io/anuke/mindustry/graphics/OverlayRenderer.java index dcb7eb167f..dd23a56dd5 100644 --- a/core/src/io/anuke/mindustry/graphics/OverlayRenderer.java +++ b/core/src/io/anuke/mindustry/graphics/OverlayRenderer.java @@ -130,18 +130,6 @@ public class OverlayRenderer { drawEncloser(target.drawx(), target.drawy() - block.size * tilesize/2f - 2f - values[1], values[1]); } - Draw.color(Palette.bar); - - int idx = 0; - for(Consume cons : block.consumes.all()){ - if(!cons.isOptional() && !cons.valid(block, entity)){ - Fill.crect(entity.x - 4 + idx*4, entity.y + block.size*tilesize/2f + values[0] + 4, 3, 3); - idx ++; - } - } - - Draw.color(); - doDraw[0] = true; values[0] = 0; values[1] = 1; diff --git a/core/src/io/anuke/mindustry/io/Version.java b/core/src/io/anuke/mindustry/io/Version.java index 473d266b0d..ea5cd6d542 100644 --- a/core/src/io/anuke/mindustry/io/Version.java +++ b/core/src/io/anuke/mindustry/io/Version.java @@ -12,7 +12,7 @@ public class Version { public static String name; public static String type; public static String code; - public static int build; + public static int build = 0; public static String buildName; public static void init(){ diff --git a/core/src/io/anuke/mindustry/ui/ItemImage.java b/core/src/io/anuke/mindustry/ui/ItemImage.java index e5260938b4..0786016780 100644 --- a/core/src/io/anuke/mindustry/ui/ItemImage.java +++ b/core/src/io/anuke/mindustry/ui/ItemImage.java @@ -18,9 +18,7 @@ public class ItemImage extends Stack { t.row(); t.label(text).get().setFontScale(Unit.dp.scl(0.5f)); - Image image = new Image(region); - - add(image); + add(new Image(region)); add(t); } @@ -31,9 +29,7 @@ public class ItemImage extends Stack { t.row(); t.add(stack.amount + "").get().setFontScale(Unit.dp.scl(0.5f)); - Image image = new Image(stack.item.region); - - add(image); + add(new Image(stack.item.region)); add(t); } } diff --git a/core/src/io/anuke/mindustry/ui/dialogs/ContentInfoDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/ContentInfoDialog.java index da26c251f9..2e1a0973d9 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/ContentInfoDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/ContentInfoDialog.java @@ -7,7 +7,7 @@ import io.anuke.ucore.scene.ui.layout.Table; public class ContentInfoDialog extends FloatingDialog { public ContentInfoDialog(){ - super("$text.info"); + super("$text.info.title"); addCloseButton(); } diff --git a/core/src/io/anuke/mindustry/ui/fragments/BlockConsumeFragment.java b/core/src/io/anuke/mindustry/ui/fragments/BlockConsumeFragment.java index 93f260d0a2..36560f5366 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/BlockConsumeFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/BlockConsumeFragment.java @@ -1,11 +1,13 @@ package io.anuke.mindustry.ui.fragments; import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.utils.Align; import com.badlogic.gdx.utils.ObjectSet; import io.anuke.mindustry.core.GameState.State; import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.graphics.Palette; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.consumers.Consume; @@ -13,8 +15,7 @@ import io.anuke.ucore.core.Graphics; import io.anuke.ucore.scene.Group; import io.anuke.ucore.scene.ui.layout.Table; -import static io.anuke.mindustry.Vars.state; -import static io.anuke.mindustry.Vars.tilesize; +import static io.anuke.mindustry.Vars.*; public class BlockConsumeFragment extends Fragment { private Table table; @@ -33,6 +34,9 @@ public class BlockConsumeFragment extends Fragment { ObjectSet consumers = new ObjectSet<>(); TileEntity entity = tile.entity; Block block = tile.block(); + Consume[] lastCurrent = {null}; + + table.clearChildren(); //table.background("clear"); rebuild(block, entity); @@ -64,7 +68,7 @@ public class BlockConsumeFragment extends Fragment { rebuild(block, entity); } - Vector2 v = Graphics.screen(tile.drawx() - tile.block().size * tilesize/2f, tile.drawy() + tile.block().size * tilesize/2f); + Vector2 v = Graphics.screen(tile.drawx() - tile.block().size * tilesize/2f, tile.drawy() + tile.block().size * tilesize/2f); table.pack(); table.setPosition(v.x, v.y, Align.topRight); }); @@ -80,10 +84,27 @@ public class BlockConsumeFragment extends Fragment { private void rebuild(Block block, TileEntity entity){ table.clearChildren(); + table.left(); + + int scale = mobile ? 4 : 3; for(Consume c : block.consumes.array()){ if(!c.isOptional() && !c.valid(block, entity)){ - c.build(table); + boolean[] hovered = {false}; + + table.table("inventory", c::buildTooltip).visible(() -> hovered[0]).height(scale * 10 + 6).padBottom(-4).right().update(t -> { + if(t.getChildren().size == 0) t.remove(); + }); + + Table result = table.table(out -> { + out.addImage(c.getIcon()).size(10*scale).color(Color.DARK_GRAY).padRight(-10*scale).padBottom(-scale*2); + out.addImage(c.getIcon()).size(10*scale).color(Palette.accent); + out.addImage("icon-missing").size(10*scale).color(Palette.remove).padLeft(-10*scale); + }).size(10*scale).get(); + + result.hovered(() -> hovered[0] = true); + result.exited(() -> hovered[0] = false); + table.row(); } } diff --git a/core/src/io/anuke/mindustry/world/consumers/Consume.java b/core/src/io/anuke/mindustry/world/consumers/Consume.java index 352f0c8cfb..c26cd66e27 100644 --- a/core/src/io/anuke/mindustry/world/consumers/Consume.java +++ b/core/src/io/anuke/mindustry/world/consumers/Consume.java @@ -1,13 +1,15 @@ package io.anuke.mindustry.world.consumers; import com.badlogic.gdx.graphics.Color; -import com.badlogic.gdx.utils.reflect.ClassReflection; import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.graphics.Palette; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.meta.BlockStats; import io.anuke.ucore.scene.ui.Tooltip; import io.anuke.ucore.scene.ui.layout.Table; +import static io.anuke.mindustry.Vars.mobile; + public abstract class Consume { private boolean optional; private boolean update = true; @@ -35,19 +37,18 @@ public abstract class Consume { t.margin(4); buildTooltip(t); - table.table("clear", out -> { - out.addImage(getIcon()).size(10*4).color(Color.RED); - }).size(10*4).get().addListener(new Tooltip<>(t)); + int scale = mobile ? 4 : 3; + + table.table(out -> { + out.addImage(getIcon()).size(10*scale).color(Color.DARK_GRAY).padRight(-10*scale).padBottom(-scale*2); + out.addImage(getIcon()).size(10*scale).color(Palette.accent); + out.addImage("icon-missing").size(10*scale).color(Palette.remove).padLeft(-10*scale); + }).size(10*scale).get().addListener(new Tooltip<>(t)); } - public void buildTooltip(Table table){ - table.add("no " + ClassReflection.getSimpleName(getClass()).replace("Consume", "")); - } - - public String getIcon(){ - return "icon-power"; - } + public abstract void buildTooltip(Table table); + public abstract String getIcon(); public abstract void update(Block block, TileEntity entity); public abstract boolean valid(Block block, TileEntity entity); public abstract void display(BlockStats stats); diff --git a/core/src/io/anuke/mindustry/world/consumers/ConsumeItem.java b/core/src/io/anuke/mindustry/world/consumers/ConsumeItem.java index b618c7b7ab..91041bec16 100644 --- a/core/src/io/anuke/mindustry/world/consumers/ConsumeItem.java +++ b/core/src/io/anuke/mindustry/world/consumers/ConsumeItem.java @@ -2,9 +2,12 @@ package io.anuke.mindustry.world.consumers; import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.type.Item; +import io.anuke.mindustry.type.ItemStack; +import io.anuke.mindustry.ui.ItemImage; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.meta.BlockStat; import io.anuke.mindustry.world.meta.BlockStats; +import io.anuke.ucore.scene.ui.layout.Table; public class ConsumeItem extends Consume { private final Item item; @@ -28,6 +31,16 @@ public class ConsumeItem extends Consume { return item; } + @Override + public void buildTooltip(Table table) { + table.add(new ItemImage(new ItemStack(item, amount))).size(8*4); + } + + @Override + public String getIcon() { + return "icon-item"; + } + @Override public void update(Block block, TileEntity entity) { //doesn't update because consuming items is very specific diff --git a/core/src/io/anuke/mindustry/world/consumers/ConsumeItemFilter.java b/core/src/io/anuke/mindustry/world/consumers/ConsumeItemFilter.java index 44e9cc2b08..e226ad49b9 100644 --- a/core/src/io/anuke/mindustry/world/consumers/ConsumeItemFilter.java +++ b/core/src/io/anuke/mindustry/world/consumers/ConsumeItemFilter.java @@ -1,5 +1,6 @@ package io.anuke.mindustry.world.consumers; +import com.badlogic.gdx.utils.Array; import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.type.Item; import io.anuke.mindustry.world.Block; @@ -7,12 +8,35 @@ import io.anuke.mindustry.world.meta.BlockStat; import io.anuke.mindustry.world.meta.BlockStats; import io.anuke.mindustry.world.meta.values.ItemFilterValue; import io.anuke.ucore.function.Predicate; +import io.anuke.ucore.scene.ui.layout.Table; public class ConsumeItemFilter extends Consume{ - private final Predicate item; + private final Predicate filter; public ConsumeItemFilter(Predicate item) { - this.item = item; + this.filter = item; + } + + @Override + public void buildTooltip(Table table) { + Array list = new Array<>(); + + for(Item item : Item.all()){ + if(filter.test(item)) list.add(item); + } + + for (int i = 0; i < list.size; i++) { + Item item = list.get(i); + table.addImage(item.region).size(8*4).padRight(2).padLeft(2); + if(i != list.size - 1){ + table.add("/"); + } + } + } + + @Override + public String getIcon() { + return "icon-item"; } @Override @@ -24,7 +48,7 @@ public class ConsumeItemFilter extends Consume{ public boolean valid(Block block, TileEntity entity) { for(int i = 0; i < Item.all().size; i ++){ Item item = Item.getByID(i); - if(entity.items.has(item) && this.item.test(item)){ + if(entity.items.has(item) && this.filter.test(item)){ return true; } } @@ -33,6 +57,6 @@ public class ConsumeItemFilter extends Consume{ @Override public void display(BlockStats stats) { - stats.add(BlockStat.inputItems, new ItemFilterValue(item)); + stats.add(BlockStat.inputItems, new ItemFilterValue(filter)); } } diff --git a/core/src/io/anuke/mindustry/world/consumers/ConsumeItems.java b/core/src/io/anuke/mindustry/world/consumers/ConsumeItems.java index 8680eb6403..c6336105f3 100644 --- a/core/src/io/anuke/mindustry/world/consumers/ConsumeItems.java +++ b/core/src/io/anuke/mindustry/world/consumers/ConsumeItems.java @@ -2,10 +2,12 @@ package io.anuke.mindustry.world.consumers; import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.type.ItemStack; +import io.anuke.mindustry.ui.ItemImage; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.meta.BlockStat; import io.anuke.mindustry.world.meta.BlockStats; import io.anuke.mindustry.world.meta.values.ItemListValue; +import io.anuke.ucore.scene.ui.layout.Table; public class ConsumeItems extends Consume { private ItemStack[] items; @@ -18,6 +20,18 @@ public class ConsumeItems extends Consume { return items; } + @Override + public void buildTooltip(Table table) { + for(ItemStack stack : items){ + table.add(new ItemImage(stack)).size(8*4).padRight(5); + } + } + + @Override + public String getIcon() { + return "icon-item"; + } + @Override public void update(Block block, TileEntity entity) { diff --git a/core/src/io/anuke/mindustry/world/consumers/ConsumeLiquid.java b/core/src/io/anuke/mindustry/world/consumers/ConsumeLiquid.java index eb8ac197e9..084e7cbe60 100644 --- a/core/src/io/anuke/mindustry/world/consumers/ConsumeLiquid.java +++ b/core/src/io/anuke/mindustry/world/consumers/ConsumeLiquid.java @@ -7,6 +7,7 @@ import io.anuke.mindustry.world.meta.BlockStat; import io.anuke.mindustry.world.meta.BlockStats; import io.anuke.mindustry.world.meta.StatUnit; import io.anuke.ucore.core.Timers; +import io.anuke.ucore.scene.ui.layout.Table; public class ConsumeLiquid extends Consume { protected final float use; @@ -25,6 +26,16 @@ public class ConsumeLiquid extends Consume { return liquid; } + @Override + public void buildTooltip(Table table) { + table.addImage(liquid.getContentIcon()).size(8*3); + } + + @Override + public String getIcon() { + return "icon-liquid"; + } + @Override public void update(Block block, TileEntity entity) { entity.liquids.remove(liquid, Math.min(use(block), entity.liquids.get(liquid))); diff --git a/core/src/io/anuke/mindustry/world/consumers/ConsumeLiquidFilter.java b/core/src/io/anuke/mindustry/world/consumers/ConsumeLiquidFilter.java index 65c1ccb557..8ad414f22a 100644 --- a/core/src/io/anuke/mindustry/world/consumers/ConsumeLiquidFilter.java +++ b/core/src/io/anuke/mindustry/world/consumers/ConsumeLiquidFilter.java @@ -1,5 +1,6 @@ package io.anuke.mindustry.world.consumers; +import com.badlogic.gdx.utils.Array; import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.type.Liquid; import io.anuke.mindustry.world.Block; @@ -9,14 +10,16 @@ import io.anuke.mindustry.world.meta.StatUnit; import io.anuke.mindustry.world.meta.values.LiquidFilterValue; import io.anuke.ucore.core.Timers; import io.anuke.ucore.function.Predicate; +import io.anuke.ucore.scene.ui.layout.Table; +import io.anuke.ucore.util.Strings; public class ConsumeLiquidFilter extends Consume{ - private final Predicate liquid; + private final Predicate filter; private final float use; private final boolean isFuel; public ConsumeLiquidFilter(Predicate liquid, float amount, boolean isFuel) { - this.liquid = liquid; + this.filter = liquid; this.use = amount; this.isFuel = isFuel; } @@ -25,23 +28,47 @@ public class ConsumeLiquidFilter extends Consume{ this(liquid, amount, false); } - @Override + @Override + public void buildTooltip(Table table) { + Array list = new Array<>(); + + for(Liquid item : Liquid.all()){ + if(!item.isHidden() && filter.test(item)) list.add(item); + } + + for (int i = 0; i < list.size; i++) { + Liquid item = list.get(i); + table.addImage(item.getContentIcon()).size(8*3).padRight(2).padLeft(2).padTop(2).padBottom(2); + if(i != list.size - 1){ + table.add("/"); + } + } + + table.add("x" + Strings.toFixed(use * 60f, 1)); + } + + @Override + public String getIcon() { + return "icon-liquid"; + } + + @Override public void update(Block block, TileEntity entity) { entity.liquids.remove(entity.liquids.current(), use(block)); } @Override public boolean valid(Block block, TileEntity entity) { - return liquid.test(entity.liquids.current()) && entity.liquids.currentAmount() >= use(block); + return filter.test(entity.liquids.current()) && entity.liquids.currentAmount() >= use(block); } @Override public void display(BlockStats stats) { if(isFuel){ - stats.add(BlockStat.inputLiquidFuel, new LiquidFilterValue(liquid)); + stats.add(BlockStat.inputLiquidFuel, new LiquidFilterValue(filter)); stats.add(BlockStat.liquidFuelUse, 60f * use, StatUnit.liquidSecond); }else { - stats.add(BlockStat.inputLiquid, new LiquidFilterValue(liquid)); + stats.add(BlockStat.inputLiquid, new LiquidFilterValue(filter)); stats.add(BlockStat.liquidUse, 60f * use, StatUnit.liquidSecond); } } diff --git a/core/src/io/anuke/mindustry/world/consumers/ConsumePower.java b/core/src/io/anuke/mindustry/world/consumers/ConsumePower.java index 84f8636b90..482c53916f 100644 --- a/core/src/io/anuke/mindustry/world/consumers/ConsumePower.java +++ b/core/src/io/anuke/mindustry/world/consumers/ConsumePower.java @@ -6,6 +6,7 @@ import io.anuke.mindustry.world.meta.BlockStat; import io.anuke.mindustry.world.meta.BlockStats; import io.anuke.mindustry.world.meta.StatUnit; import io.anuke.ucore.core.Timers; +import io.anuke.ucore.scene.ui.layout.Table; public class ConsumePower extends Consume { private final float use; @@ -14,6 +15,16 @@ public class ConsumePower extends Consume { this.use = use; } + @Override + public void buildTooltip(Table table) { + + } + + @Override + public String getIcon() { + return "icon-power"; + } + @Override public void update(Block block, TileEntity entity) { entity.power.amount -= Math.min(use(block), entity.power.amount); diff --git a/desktop/src/io/anuke/mindustry/desktop/CrashHandler.java b/desktop/src/io/anuke/mindustry/desktop/CrashHandler.java index 1680ba4434..64fcf2da36 100644 --- a/desktop/src/io/anuke/mindustry/desktop/CrashHandler.java +++ b/desktop/src/io/anuke/mindustry/desktop/CrashHandler.java @@ -38,10 +38,10 @@ public class CrashHandler { header += "Build: " + Version.build + "\n"; header += "Net Active: " + netActive + "\n"; header += "Net Server: " + netServer + "\n"; - header += "OS: " + System.getProperty("os.name")+ "\n----\n"; - header += "Multithreading: " + Settings.getBool("multithread")+ "\n"; + header += "OS: " + System.getProperty("os.name") + "\n"; + header += "Multithreading: " + Settings.getBool("multithread")+ "\n----\n"; }catch (Throwable e4){ - header += "[Error getting additional game info.]\n"; + header += "\n--error getting additional info--\n"; e4.printStackTrace(); } diff --git a/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java b/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java index cfd729a066..aef5a71b04 100644 --- a/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java +++ b/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java @@ -32,56 +32,54 @@ public class DesktopLauncher extends Lwjgl3Application{ ObjectMap prefmap; public static void main (String[] arg) { - - Lwjgl3ApplicationConfiguration config = new Lwjgl3ApplicationConfiguration(); - config.setTitle("Mindustry"); - config.setMaximized(true); - config.setWindowedMode(960, 540); - config.setWindowIcon("sprites/icon.png"); + try { + Lwjgl3ApplicationConfiguration config = new Lwjgl3ApplicationConfiguration(); + config.setTitle("Mindustry"); + config.setMaximized(true); + config.setWindowedMode(960, 540); + config.setWindowIcon("sprites/icon.png"); - if(OS.isMac) { - Application.getApplication().setOpenFileHandler(e -> { - List list = e.getFiles(); + if(OS.isMac) { + Application.getApplication().setOpenFileHandler(e -> { + List list = e.getFiles(); - File target = (File)list.get(0); + File target = (File)list.get(0); - Gdx.app.postRunnable(() -> { - FileHandle file = OS.getAppDataDirectory("Mindustry").child("tmp").child(target.getName()); + Gdx.app.postRunnable(() -> { + FileHandle file = OS.getAppDataDirectory("Mindustry").child("tmp").child(target.getName()); - Gdx.files.absolute(target.getAbsolutePath()).copyTo(file); + Gdx.files.absolute(target.getAbsolutePath()).copyTo(file); - if(file.extension().equalsIgnoreCase(saveExtension)){ //open save + if(file.extension().equalsIgnoreCase(saveExtension)){ //open save - if(SaveIO.isSaveValid(file)){ - try{ - SaveSlot slot = control.getSaves().importSave(file); - ui.load.runLoadSave(slot); - }catch (IOException e2){ - ui.showError(Bundles.format("text.save.import.fail", Strings.parseException(e2, false))); + if(SaveIO.isSaveValid(file)){ + try{ + SaveSlot slot = control.getSaves().importSave(file); + ui.load.runLoadSave(slot); + }catch (IOException e2){ + ui.showError(Bundles.format("text.save.import.fail", Strings.parseException(e2, false))); + } + }else{ + ui.showError("$text.save.import.invalid"); } - }else{ - ui.showError("$text.save.import.invalid"); + + }else if(file.extension().equalsIgnoreCase(mapExtension)){ //open map + Gdx.app.postRunnable(() -> { + if (!ui.editor.isShown()) { + ui.editor.show(); + } + + ui.editor.beginEditMap(file.read()); + }); } - - }else if(file.extension().equalsIgnoreCase(mapExtension)){ //open map - Gdx.app.postRunnable(() -> { - if (!ui.editor.isShown()) { - ui.editor.show(); - } - - ui.editor.beginEditMap(file.read()); - }); - } + }); }); - }); - } + } - Platform.instance = new DesktopPlatform(arg); + Platform.instance = new DesktopPlatform(arg); - Net.setClientProvider(new KryoClient()); - Net.setServerProvider(new KryoServer()); - - try { + Net.setClientProvider(new KryoClient()); + Net.setServerProvider(new KryoServer()); new DesktopLauncher(new Mindustry(), config); }catch (Throwable e){ CrashHandler.handle(e);