diff --git a/core/assets-raw/sprites/ui/icons-category/icon-crafting.png b/core/assets-raw/sprites/ui/icons-category/icon-crafting.png new file mode 100644 index 0000000000..80447efca8 Binary files /dev/null and b/core/assets-raw/sprites/ui/icons-category/icon-crafting.png differ diff --git a/core/assets-raw/sprites/ui/icons-category/icon-defense.png b/core/assets-raw/sprites/ui/icons-category/icon-defense.png new file mode 100644 index 0000000000..f0b4cabdad Binary files /dev/null and b/core/assets-raw/sprites/ui/icons-category/icon-defense.png differ diff --git a/core/assets-raw/sprites/ui/icons-category/icon-distribution.png b/core/assets-raw/sprites/ui/icons-category/icon-distribution.png new file mode 100644 index 0000000000..18233d41c0 Binary files /dev/null and b/core/assets-raw/sprites/ui/icons-category/icon-distribution.png differ diff --git a/core/assets-raw/sprites/ui/icons-category/icon-effect.png b/core/assets-raw/sprites/ui/icons-category/icon-effect.png new file mode 100644 index 0000000000..5da7498a1f Binary files /dev/null and b/core/assets-raw/sprites/ui/icons-category/icon-effect.png differ diff --git a/core/assets-raw/sprites/ui/icons-category/icon-liquid.png b/core/assets-raw/sprites/ui/icons-category/icon-liquid.png new file mode 100644 index 0000000000..4d4142213b Binary files /dev/null and b/core/assets-raw/sprites/ui/icons-category/icon-liquid.png differ diff --git a/core/assets-raw/sprites/ui/icons-category/icon-power.png b/core/assets-raw/sprites/ui/icons-category/icon-power.png new file mode 100644 index 0000000000..5df68ce22b Binary files /dev/null and b/core/assets-raw/sprites/ui/icons-category/icon-power.png differ diff --git a/core/assets-raw/sprites/ui/icons-category/icon-production.png b/core/assets-raw/sprites/ui/icons-category/icon-production.png new file mode 100644 index 0000000000..0735582732 Binary files /dev/null and b/core/assets-raw/sprites/ui/icons-category/icon-production.png differ diff --git a/core/assets-raw/sprites/ui/icons-category/icon-turret.png b/core/assets-raw/sprites/ui/icons-category/icon-turret.png new file mode 100644 index 0000000000..3ed23cf8b8 Binary files /dev/null and b/core/assets-raw/sprites/ui/icons-category/icon-turret.png differ diff --git a/core/assets-raw/sprites/ui/icons-category/icon-units.png b/core/assets-raw/sprites/ui/icons-category/icon-units.png new file mode 100644 index 0000000000..b907051a23 Binary files /dev/null and b/core/assets-raw/sprites/ui/icons-category/icon-units.png differ diff --git a/core/assets-raw/sprites/ui/icons-category/icon-upgrade.png b/core/assets-raw/sprites/ui/icons-category/icon-upgrade.png new file mode 100644 index 0000000000..6f054ad8d0 Binary files /dev/null and b/core/assets-raw/sprites/ui/icons-category/icon-upgrade.png differ diff --git a/core/assets-raw/sprites/ui/icons/icon-crafting.png b/core/assets-raw/sprites/ui/icons/icon-crafting.png deleted file mode 100644 index 2a20c39b0b..0000000000 Binary files a/core/assets-raw/sprites/ui/icons/icon-crafting.png and /dev/null differ diff --git a/core/assets-raw/sprites/ui/icons/icon-defense.png b/core/assets-raw/sprites/ui/icons/icon-defense.png deleted file mode 100644 index 6e440a647a..0000000000 Binary files a/core/assets-raw/sprites/ui/icons/icon-defense.png and /dev/null differ diff --git a/core/assets-raw/sprites/ui/icons/icon-distribution.png b/core/assets-raw/sprites/ui/icons/icon-distribution.png deleted file mode 100644 index 858ba9bd3f..0000000000 Binary files a/core/assets-raw/sprites/ui/icons/icon-distribution.png and /dev/null differ diff --git a/core/assets-raw/sprites/ui/icons/icon-liquid.png b/core/assets-raw/sprites/ui/icons/icon-liquid.png deleted file mode 100644 index 48c93ed9d2..0000000000 Binary files a/core/assets-raw/sprites/ui/icons/icon-liquid.png and /dev/null differ diff --git a/core/assets-raw/sprites/ui/icons/icon-power.png b/core/assets-raw/sprites/ui/icons/icon-power.png deleted file mode 100644 index 666058d5c7..0000000000 Binary files a/core/assets-raw/sprites/ui/icons/icon-power.png and /dev/null differ diff --git a/core/assets-raw/sprites/ui/icons/icon-production.png b/core/assets-raw/sprites/ui/icons/icon-production.png deleted file mode 100644 index 8e1d914691..0000000000 Binary files a/core/assets-raw/sprites/ui/icons/icon-production.png and /dev/null differ diff --git a/core/assets-raw/sprites/ui/icons/icon-units.png b/core/assets-raw/sprites/ui/icons/icon-units.png deleted file mode 100644 index 5a7846974d..0000000000 Binary files a/core/assets-raw/sprites/ui/icons/icon-units.png and /dev/null differ diff --git a/core/assets-raw/sprites/ui/icons/icon-weapon.png b/core/assets-raw/sprites/ui/icons/icon-weapon.png deleted file mode 100644 index e59ec4582d..0000000000 Binary files a/core/assets-raw/sprites/ui/icons/icon-weapon.png and /dev/null differ diff --git a/core/assets-raw/sprites/ui/text-sides-down.png b/core/assets-raw/sprites/ui/text-sides-down.png deleted file mode 100644 index e3eb6b1708..0000000000 Binary files a/core/assets-raw/sprites/ui/text-sides-down.png and /dev/null differ diff --git a/core/assets-raw/sprites/ui/text-sides-over.png b/core/assets-raw/sprites/ui/text-sides-over.png deleted file mode 100644 index 110491b4d4..0000000000 Binary files a/core/assets-raw/sprites/ui/text-sides-over.png and /dev/null differ diff --git a/core/assets-raw/sprites/ui/text-sides.png b/core/assets-raw/sprites/ui/text-sides.png deleted file mode 100644 index 30e3c43031..0000000000 Binary files a/core/assets-raw/sprites/ui/text-sides.png and /dev/null differ diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 3ad1ec8a22..5c12a3f2d0 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -288,6 +288,7 @@ text.no = No text.info.title = Info text.error.title = [crimson]An error has occured text.error.crashtitle = An error has occured +text.blocks.unknown=[LIGHT_GRAY]??? text.blocks.blockinfo = Block Info text.blocks.powercapacity = Power Capacity text.blocks.powershot = Power/Shot @@ -406,8 +407,6 @@ mode.waves.name = waves mode.waves.description = the normal mode. limited resources and automatic incoming waves. mode.sandbox.name = sandbox mode.sandbox.description = infinite resources and no timer for waves. -mode.custom.warning = [scarlet]UNLOCKS IN CUSTOM GAMES OR SERVERS ARE NOT SAVED.[]\n\nPlay in sectors to unlock things. -mode.custom.warning.read = Just to make sure you've read it\:\n[scarlet]UNLOCKS IN CUSTOM GAMES DO NOT CARRY OVER TO SECTORS OR OTHER MODES\!\n\n[LIGHT_GRAY](I wish this wasn't necessary, but apparently it is) mode.freebuild.name = freebuild mode.freebuild.description = limited resources and no timer for waves. mode.pvp.name = PvP @@ -495,7 +494,7 @@ text.mech.ability = [LIGHT_GRAY]Ability\: {0} text.liquid.heatcapacity = [LIGHT_GRAY]Heat Capacity\: {0} text.liquid.viscosity = [LIGHT_GRAY]Viscosity\: {0} text.liquid.temperature = [LIGHT_GRAY]Temperature\: {0} -block.constructing = {0}\n[LIGHT_GRAY](Constructing) +block.constructing = {0} [LIGHT_GRAY](Constructing) block.spawn.name = Enemy Spawn block.core.name = Core block.metalfloor.name = Metal Floor diff --git a/core/assets/sprites/sprites.atlas b/core/assets/sprites/sprites.atlas index e1afd2f5a9..45914d987f 100644 --- a/core/assets/sprites/sprites.atlas +++ b/core/assets/sprites/sprites.atlas @@ -6,5271 +6,5257 @@ filter: Nearest,Nearest repeat: none force-projector-top rotate: false - xy: 217, 208 + xy: 724, 453 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 mend-projector-top rotate: false - xy: 555, 355 + xy: 261, 166 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 overdrive-projector-top rotate: false - xy: 573, 355 + xy: 243, 152 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 bridge-conveyor-bridge rotate: false - xy: 407, 366 + xy: 583, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 bridge-conveyor-end rotate: false - xy: 407, 356 + xy: 593, 399 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-0-1 rotate: false - xy: 457, 371 + xy: 793, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-0-2 rotate: false - xy: 427, 331 + xy: 803, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-0-3 rotate: false - xy: 437, 341 + xy: 813, 391 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-1-0 rotate: false - xy: 447, 351 + xy: 823, 391 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-1-1 rotate: false - xy: 457, 361 + xy: 833, 393 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-1-2 rotate: false - xy: 467, 371 + xy: 843, 393 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-1-3 rotate: false - xy: 427, 321 + xy: 853, 393 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-2-0 rotate: false - xy: 437, 331 + xy: 863, 393 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-2-1 rotate: false - xy: 447, 341 + xy: 873, 393 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-2-2 rotate: false - xy: 457, 351 + xy: 883, 393 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-2-3 rotate: false - xy: 467, 361 + xy: 893, 393 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-3-0 rotate: false - xy: 427, 311 + xy: 903, 393 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-3-1 rotate: false - xy: 437, 321 + xy: 913, 393 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-3-2 rotate: false - xy: 447, 331 + xy: 923, 393 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-3-3 rotate: false - xy: 457, 341 + xy: 933, 393 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-4-0 rotate: false - xy: 467, 351 + xy: 943, 393 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-4-1 rotate: false - xy: 427, 301 + xy: 953, 393 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-4-2 rotate: false - xy: 437, 311 + xy: 963, 393 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-4-3 rotate: false - xy: 447, 321 + xy: 973, 393 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-0-1 rotate: false - xy: 737, 285 + xy: 711, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-0-2 rotate: false - xy: 747, 295 + xy: 711, 359 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-0-3 rotate: false - xy: 757, 305 + xy: 721, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-1-0 rotate: false - xy: 767, 315 + xy: 721, 359 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-1-1 rotate: false - xy: 787, 325 + xy: 731, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-1-2 rotate: false - xy: 747, 285 + xy: 731, 359 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-1-3 rotate: false - xy: 757, 295 + xy: 741, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-2-0 rotate: false - xy: 767, 305 + xy: 741, 359 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-2-1 rotate: false - xy: 777, 315 + xy: 751, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-2-2 rotate: false - xy: 797, 325 + xy: 751, 359 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-2-3 rotate: false - xy: 757, 285 + xy: 761, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-3-0 rotate: false - xy: 767, 295 + xy: 761, 359 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-3-1 rotate: false - xy: 777, 305 + xy: 771, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-3-2 rotate: false - xy: 787, 315 + xy: 771, 359 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-3-3 rotate: false - xy: 767, 285 + xy: 781, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-4-0 rotate: false - xy: 777, 295 + xy: 781, 359 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-4-1 rotate: false - xy: 787, 305 + xy: 791, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-4-2 rotate: false - xy: 797, 315 + xy: 791, 359 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-4-3 rotate: false - xy: 777, 285 + xy: 801, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 mass-driver-turret rotate: false - xy: 168, 46 + xy: 958, 453 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 phase-conveyor-arrow rotate: false - xy: 687, 325 + xy: 1003, 383 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 phase-conveyor-bridge rotate: false - xy: 647, 285 + xy: 1013, 383 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 phase-conveyor-end rotate: false - xy: 657, 295 + xy: 441, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 +warp-gate + rotate: false + xy: 584, 427 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 warp-gate-top rotate: false - xy: 289, 308 + xy: 610, 427 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 blast-drill rotate: false - xy: 79, 1 + xy: 204, 283 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 blast-drill-rim rotate: false - xy: 860, 453 + xy: 233, 346 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 blast-drill-rotator rotate: false - xy: 886, 453 + xy: 30, 80 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 blast-drill-top rotate: false - xy: 912, 453 + xy: 285, 402 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 laser-drill rotate: false - xy: 663, 409 + xy: 205, 159 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 laser-drill-rotator rotate: false - xy: 645, 373 + xy: 205, 141 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 laser-drill-top rotate: false - xy: 663, 391 + xy: 261, 184 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 mechanical-drill rotate: false - xy: 663, 373 + xy: 243, 170 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 mechanical-drill-rotator rotate: false - xy: 519, 355 + xy: 225, 165 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 mechanical-drill-top rotate: false - xy: 537, 355 + xy: 223, 147 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 oil-extractor rotate: false - xy: 160, 20 + xy: 984, 453 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 oil-extractor-liquid rotate: false - xy: 254, 310 + xy: 350, 425 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 oil-extractor-rotator rotate: false - xy: 265, 268 + xy: 376, 425 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 oil-extractor-top rotate: false - xy: 273, 242 + xy: 402, 425 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 plasma-drill rotate: false - xy: 153, 232 + xy: 25, 46 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 plasma-drill-rim rotate: false - xy: 213, 294 + xy: 59, 46 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 plasma-drill-rotator rotate: false - xy: 56, 95 + xy: 27, 12 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 plasma-drill-top rotate: false - xy: 56, 61 + xy: 61, 12 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pneumatic-drill rotate: false - xy: 681, 391 + xy: 225, 77 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 pneumatic-drill-rotator rotate: false - xy: 681, 373 + xy: 259, 112 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 pneumatic-drill-top rotate: false - xy: 681, 355 + xy: 243, 82 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 water-extractor rotate: false - xy: 771, 395 + xy: 315, 206 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 water-extractor-liquid rotate: false - xy: 771, 377 + xy: 297, 170 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 water-extractor-rotator rotate: false - xy: 771, 359 + xy: 315, 188 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 water-extractor-top rotate: false - xy: 789, 415 + xy: 297, 152 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 blackrock1 rotate: false - xy: 212, 95 + xy: 214, 55 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-blackrock rotate: false - xy: 212, 95 + xy: 214, 55 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackrockshadow1 rotate: false - xy: 212, 85 + xy: 217, 45 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackstone1 rotate: false - xy: 212, 75 + xy: 217, 35 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-blackstone rotate: false - xy: 212, 75 + xy: 217, 35 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackstone2 rotate: false - xy: 212, 65 + xy: 227, 49 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackstone3 rotate: false - xy: 212, 55 + xy: 227, 39 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackstoneedge rotate: false - xy: 271, 170 + xy: 283, 98 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 coal1 rotate: false - xy: 417, 366 + xy: 593, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 coal2 rotate: false - xy: 407, 346 + xy: 603, 399 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 coal3 rotate: false - xy: 417, 356 + xy: 603, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 copper1 rotate: false - xy: 457, 331 + xy: 983, 393 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 copper2 rotate: false - xy: 467, 341 + xy: 993, 393 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 copper3 rotate: false - xy: 437, 301 + xy: 1003, 393 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirt2 rotate: false - xy: 457, 301 + xy: 317, 30 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirt3 rotate: false - xy: 467, 311 + xy: 287, 20 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirtedge rotate: false - xy: 377, 388 + xy: 966, 403 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 generic-cliff-edge rotate: false - xy: 457, 291 + xy: 337, 14 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ice-cliff-edge rotate: false - xy: 457, 291 + xy: 337, 14 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 generic-cliff-edge-1 rotate: false - xy: 467, 291 + xy: 347, 14 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ice-cliff-edge-1 rotate: false - xy: 467, 291 + xy: 347, 14 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 generic-cliff-edge-2 rotate: false - xy: 427, 281 + xy: 357, 18 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ice-cliff-edge-2 rotate: false - xy: 427, 281 + xy: 357, 18 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 generic-cliff-side rotate: false - xy: 437, 281 + xy: 357, 8 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ice-cliff-side rotate: false - xy: 437, 281 + xy: 357, 8 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grass-cliff-edge rotate: false - xy: 467, 281 + xy: 351, 376 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grass-cliff-edge-1 rotate: false - xy: 477, 359 + xy: 351, 366 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grass-cliff-edge-2 rotate: false - xy: 487, 359 + xy: 351, 356 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grass-cliff-side rotate: false - xy: 477, 349 + xy: 361, 377 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grass2 rotate: false - xy: 447, 281 + xy: 219, 19 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grass3 rotate: false - xy: 457, 281 + xy: 219, 9 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grassedge rotate: false - xy: 699, 345 + xy: 95, 2 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 ice2 rotate: false - xy: 487, 349 + xy: 361, 367 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ice3 rotate: false - xy: 477, 329 + xy: 381, 377 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 iceedge rotate: false - xy: 727, 345 + xy: 345, 118 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 icerock2 rotate: false - xy: 487, 339 + xy: 371, 367 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icerockshadow1 rotate: false - xy: 477, 319 + xy: 361, 357 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 rockshadow1 rotate: false - xy: 477, 319 + xy: 361, 357 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icerockshadow2 rotate: false - xy: 477, 309 + xy: 391, 377 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 rockshadow2 rotate: false - xy: 477, 309 + xy: 391, 377 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 lavaedge rotate: false - xy: 769, 345 + xy: 345, 76 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 lead1 rotate: false - xy: 497, 280 + xy: 352, 296 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 lead2 rotate: false - xy: 507, 290 + xy: 352, 286 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 lead3 rotate: false - xy: 507, 280 + xy: 362, 347 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor2 rotate: false - xy: 537, 335 + xy: 362, 317 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor3 rotate: false - xy: 537, 325 + xy: 402, 347 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor4 rotate: false - xy: 517, 305 + xy: 392, 337 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor5 rotate: false - xy: 527, 315 + xy: 382, 327 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor6 rotate: false - xy: 547, 345 + xy: 372, 317 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalflooredge rotate: false - xy: 797, 349 + xy: 109, 2 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 rock2 rotate: false - xy: 687, 285 + xy: 501, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sand2 rotate: false - xy: 697, 325 + xy: 511, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sand3 rotate: false - xy: 707, 335 + xy: 511, 359 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sandedge rotate: false - xy: 823, 373 + xy: 117, 49 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 shrubshadow rotate: false - xy: 717, 315 + xy: 571, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snow2 rotate: false - xy: 737, 335 + xy: 571, 359 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snow3 rotate: false - xy: 737, 325 + xy: 581, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snowedge rotate: false - xy: 811, 355 + xy: 145, 49 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 spaceedge rotate: false - xy: 825, 359 + xy: 159, 49 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 stone-cliff-edge rotate: false - xy: 757, 325 + xy: 641, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stone-cliff-edge-1 rotate: false - xy: 717, 285 + xy: 641, 359 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stone-cliff-edge-2 rotate: false - xy: 727, 295 + xy: 651, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stone-cliff-side rotate: false - xy: 737, 305 + xy: 651, 359 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stone2 rotate: false - xy: 737, 315 + xy: 631, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stone3 rotate: false - xy: 757, 335 + xy: 631, 359 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stoneedge rotate: false - xy: 811, 341 + xy: 113, 35 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 taredge rotate: false - xy: 839, 345 + xy: 127, 35 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 thorium1 rotate: false - xy: 737, 295 + xy: 681, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 thorium2 rotate: false - xy: 747, 305 + xy: 681, 359 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 thorium3 rotate: false - xy: 757, 315 + xy: 691, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium1 rotate: false - xy: 777, 335 + xy: 691, 359 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium2 rotate: false - xy: 787, 335 + xy: 701, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium3 rotate: false - xy: 777, 325 + xy: 701, 359 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 water-cliff-edge rotate: false - xy: 797, 305 + xy: 442, 349 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 water-cliff-edge-1 rotate: false - xy: 787, 285 + xy: 442, 339 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 water-cliff-edge-2 rotate: false - xy: 797, 295 + xy: 452, 349 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 water-cliff-side rotate: false - xy: 797, 285 + xy: 442, 329 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 wateredge rotate: false - xy: 853, 387 + xy: 155, 21 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 block-border rotate: false - xy: 190, 188 + xy: 237, 26 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-elevation rotate: false - xy: 200, 188 + xy: 247, 26 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 combustion-generator-top rotate: false - xy: 200, 188 + xy: 247, 26 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-middle rotate: false - xy: 397, 308 + xy: 553, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pump-liquid rotate: false - xy: 397, 308 + xy: 553, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-slope rotate: false - xy: 397, 298 + xy: 563, 399 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 border rotate: false - xy: 397, 288 + xy: 563, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-liquid rotate: false - xy: 427, 361 + xy: 713, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 cross-1 rotate: false - xy: 447, 311 + xy: 1013, 393 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 cross-2 rotate: false - xy: 501, 396 + xy: 924, 417 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 cross-3 rotate: false - xy: 165, 206 + xy: 672, 453 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 cross-4 rotate: false - xy: 652, 479 + xy: 644, 479 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 nuclearreactor-shadow rotate: false - xy: 776, 451 + xy: 66, 199 size: 26, 26 orig: 26, 26 offset: 0, 0 index: -1 place-arrow rotate: false - xy: 667, 305 + xy: 441, 359 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ripples rotate: false - xy: 1011, 381 + xy: 195, 17 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 rubble-1-0 rotate: false - xy: 699, 395 + xy: 243, 64 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 rubble-1-1 rotate: false - xy: 717, 413 + xy: 261, 82 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 rubble-2-0 rotate: false - xy: 699, 377 + xy: 261, 64 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 rubble-2-1 rotate: false - xy: 717, 395 + xy: 243, 46 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 rubble-3-0 rotate: false - xy: 155, 178 + xy: 480, 427 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 rubble-3-1 rotate: false - xy: 155, 178 + xy: 480, 427 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 shadow-1 rotate: false - xy: 866, 367 + xy: 195, 5 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 shadow-2 rotate: false - xy: 299, 248 + xy: 716, 433 size: 18, 18 orig: 18, 18 offset: 0, 0 index: -1 shadow-3 rotate: false - xy: 804, 451 + xy: 112, 135 size: 26, 26 orig: 26, 26 offset: 0, 0 index: -1 shadow-4 rotate: false - xy: 290, 454 + xy: 334, 477 size: 34, 34 orig: 34, 34 offset: 0, 0 index: -1 shadow-5 rotate: false - xy: 143, 266 + xy: 290, 469 size: 42, 42 orig: 42, 42 offset: 0, 0 index: -1 shadow-6 rotate: false - xy: 1, 165 + xy: 204, 414 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 shadow-corner rotate: false - xy: 854, 363 + xy: 207, 17 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 shadow-round-1 rotate: false - xy: 853, 351 + xy: 207, 5 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 shadow-round-2 rotate: false - xy: 299, 228 + xy: 736, 433 size: 18, 18 orig: 18, 18 offset: 0, 0 index: -1 shadow-round-3 rotate: false - xy: 832, 451 + xy: 141, 165 size: 26, 26 orig: 26, 26 offset: 0, 0 index: -1 shadow-round-4 rotate: false - xy: 87, 228 + xy: 370, 477 size: 34, 34 orig: 34, 34 offset: 0, 0 index: -1 shadow-rounded-2 rotate: false - xy: 299, 208 + xy: 756, 433 size: 18, 18 orig: 18, 18 offset: 0, 0 index: -1 shadow-shock-mine rotate: false - xy: 697, 295 + xy: 561, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 bridge-conduit-arrow rotate: false - xy: 345, 276 + xy: 573, 399 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 bridge-conveyor-arrow rotate: false - xy: 345, 276 + xy: 573, 399 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 bridge-conduit-bridge rotate: false - xy: 407, 376 + xy: 573, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 bridge-conduit-end rotate: false - xy: 417, 376 + xy: 583, 399 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-bottom rotate: false - xy: 407, 316 + xy: 633, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-bottom-0 rotate: false - xy: 417, 326 + xy: 643, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-bottom-1 rotate: false - xy: 407, 306 + xy: 653, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-bottom-2 rotate: false - xy: 417, 316 + xy: 663, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-bottom-3 rotate: false - xy: 407, 296 + xy: 673, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-bottom-4 rotate: false - xy: 417, 306 + xy: 683, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-bottom-5 rotate: false - xy: 417, 296 + xy: 693, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-bottom-6 rotate: false - xy: 427, 371 + xy: 703, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-top-0 rotate: false - xy: 437, 371 + xy: 723, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-top-1 rotate: false - xy: 427, 351 + xy: 733, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-top-2 rotate: false - xy: 437, 361 + xy: 743, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-top-3 rotate: false - xy: 447, 371 + xy: 753, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-top-4 rotate: false - xy: 427, 341 + xy: 763, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-top-5 rotate: false - xy: 437, 351 + xy: 773, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-top-6 rotate: false - xy: 447, 361 + xy: 783, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquid-router-bottom rotate: false - xy: 527, 325 + xy: 392, 347 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquid-router-liquid rotate: false - xy: 517, 315 + xy: 382, 337 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquid-router-top rotate: false - xy: 537, 345 + xy: 372, 327 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquid-tank-bottom rotate: false - xy: 152, 124 + xy: 880, 453 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 liquid-tank-liquid rotate: false - xy: 168, 98 + xy: 906, 453 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 liquid-tank-top rotate: false - xy: 168, 72 + xy: 932, 453 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 phase-conduit-arrow rotate: false - xy: 667, 315 + xy: 973, 383 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 phase-conduit-bridge rotate: false - xy: 687, 345 + xy: 983, 383 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 phase-conduit-end rotate: false - xy: 687, 335 + xy: 993, 383 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pulse-conduit-top-0 rotate: false - xy: 677, 315 + xy: 451, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pulse-conduit-top-1 rotate: false - xy: 657, 285 + xy: 451, 359 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pulse-conduit-top-2 rotate: false - xy: 667, 295 + xy: 461, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pulse-conduit-top-3 rotate: false - xy: 677, 305 + xy: 461, 359 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pulse-conduit-top-4 rotate: false - xy: 687, 315 + xy: 471, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pulse-conduit-top-5 rotate: false - xy: 667, 285 + xy: 471, 359 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pulse-conduit-top-6 rotate: false - xy: 677, 295 + xy: 481, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 alpha-mech-pad rotate: false - xy: 123, 1 + xy: 814, 435 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-alpha-mech-pad rotate: false - xy: 123, 1 + xy: 814, 435 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 battery rotate: false - xy: 212, 105 + xy: 81, 2 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-battery rotate: false - xy: 212, 105 + xy: 81, 2 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 battery-large rotate: false - xy: 53, 1 + xy: 178, 284 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-icon-battery-large rotate: false - xy: 53, 1 + xy: 178, 284 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 fusion-reactor rotate: false - xy: 720, 479 + xy: 712, 479 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 fusion-reactor-bottom rotate: false - xy: 754, 479 + xy: 746, 479 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 fusion-reactor-light rotate: false - xy: 788, 479 + xy: 780, 479 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 fusion-reactor-plasma-0 rotate: false - xy: 822, 479 + xy: 814, 479 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 fusion-reactor-plasma-1 rotate: false - xy: 856, 479 + xy: 848, 479 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 fusion-reactor-plasma-2 rotate: false - xy: 890, 479 + xy: 882, 479 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 fusion-reactor-plasma-3 rotate: false - xy: 924, 479 + xy: 916, 479 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 fusion-reactor-top rotate: false - xy: 958, 479 + xy: 950, 479 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 rtg-generator-top rotate: false - xy: 697, 335 + xy: 501, 359 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 thorium-reactor-center rotate: false - xy: 158, 152 + xy: 506, 427 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 thorium-reactor-lights rotate: false - xy: 289, 360 + xy: 532, 427 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 turbine-generator-top rotate: false - xy: 753, 377 + xy: 297, 206 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -alloy-fuser - rotate: false - xy: 213, 268 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 alloy-smelter rotate: false - xy: 90, 28 + xy: 332, 433 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-alloy-smelter rotate: false - xy: 90, 28 + xy: 332, 433 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 alloy-smelter-top rotate: false - xy: 105, 1 + xy: 796, 435 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 arc-smelter rotate: false - xy: 141, 1 + xy: 832, 435 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-arc-smelter rotate: false - xy: 141, 1 + xy: 832, 435 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 arc-smelter-top rotate: false - xy: 159, 1 + xy: 850, 435 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 silicon-smelter-top rotate: false - xy: 159, 1 + xy: 850, 435 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 biomattercompressor rotate: false - xy: 177, 1 + xy: 868, 435 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 biomattercompressor-frame0 rotate: false - xy: 319, 250 + xy: 886, 435 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 biomattercompressor-frame1 rotate: false - xy: 319, 232 + xy: 904, 435 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 biomattercompressor-frame2 rotate: false - xy: 319, 214 + xy: 922, 435 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 biomattercompressor-liquid rotate: false - xy: 315, 368 + xy: 940, 435 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 biomattercompressor-top rotate: false - xy: 315, 350 + xy: 958, 435 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 blast-mixer rotate: false - xy: 315, 332 + xy: 976, 435 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-blast-mixer rotate: false - xy: 315, 332 + xy: 976, 435 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 centrifuge-liquid rotate: false - xy: 483, 387 + xy: 888, 417 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 cryofluidmixer-bottom rotate: false - xy: 501, 378 + xy: 942, 417 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 cryofluidmixer-liquid rotate: false - xy: 483, 369 + xy: 960, 417 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 cryofluidmixer-top rotate: false - xy: 501, 360 + xy: 978, 417 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 cultivator rotate: false - xy: 528, 427 + xy: 996, 417 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 cultivator-middle rotate: false - xy: 546, 427 + xy: 112, 117 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 cultivator-top rotate: false - xy: 564, 427 + xy: 117, 99 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 lavasmelter rotate: false - xy: 507, 300 + xy: 352, 306 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 oilrefinery rotate: false - xy: 537, 315 + xy: 382, 317 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 phase-weaver rotate: false - xy: 627, 355 + xy: 241, 134 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 phase-weaver-bottom rotate: false - xy: 645, 355 + xy: 259, 130 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 phase-weaver-weave rotate: false - xy: 663, 355 + xy: 241, 116 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 plastanium-compressor-top rotate: false - xy: 681, 409 + xy: 225, 95 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 pulverizer rotate: false - xy: 687, 305 + xy: 481, 359 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pulverizer-rotator rotate: false - xy: 677, 285 + xy: 491, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 separator-liquid rotate: false - xy: 727, 325 + xy: 551, 359 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 core-open rotate: false - xy: 116, 46 + xy: 620, 453 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 core-top rotate: false - xy: 139, 204 + xy: 646, 453 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 sortedunloader rotate: false - xy: 747, 335 + xy: 601, 359 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-1 rotate: false - xy: 201, 198 + xy: 267, 36 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-1-top rotate: false - xy: 211, 198 + xy: 277, 36 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-2 rotate: false - xy: 315, 314 + xy: 994, 435 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-2-top rotate: false - xy: 319, 196 + xy: 325, 388 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-3 rotate: false - xy: 938, 453 + xy: 311, 406 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-3-top rotate: false - xy: 964, 453 + xy: 289, 356 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-4 rotate: false - xy: 326, 456 + xy: 406, 479 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-4-top rotate: false - xy: 360, 456 + xy: 440, 479 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 arc rotate: false - xy: 77, 207 + xy: 1010, 454 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 arc-heat rotate: false - xy: 212, 115 + xy: 71, 2 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 cyclone rotate: false - xy: 191, 208 + xy: 698, 453 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 duo rotate: false - xy: 447, 291 + xy: 347, 24 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 fuse rotate: false - xy: 142, 46 + xy: 828, 453 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 hail rotate: false - xy: 477, 339 + xy: 371, 377 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 hail-heat rotate: false - xy: 516, 433 + xy: 141, 153 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 lancer rotate: false - xy: 627, 373 + xy: 225, 183 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 lancer-heat rotate: false - xy: 645, 391 + xy: 207, 177 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 meltdown rotate: false - xy: 428, 453 + xy: 984, 479 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 meltdown-heat rotate: false - xy: 462, 453 + xy: 56, 80 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ripple rotate: false - xy: 247, 216 + xy: 428, 427 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 ripple-heat rotate: false - xy: 273, 216 + xy: 454, 427 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 salvo rotate: false - xy: 735, 413 + xy: 261, 46 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 salvo-heat rotate: false - xy: 699, 359 + xy: 279, 220 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 salvo-panel-left rotate: false - xy: 717, 377 + xy: 279, 202 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 salvo-panel-right rotate: false - xy: 735, 395 + xy: 279, 184 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 scatter rotate: false - xy: 697, 305 + xy: 541, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 scorch rotate: false - xy: 707, 315 + xy: 541, 359 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 scorch-shoot rotate: false - xy: 727, 335 + xy: 551, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 spectre rotate: false - xy: 652, 445 + xy: 77, 159 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 swarmer rotate: false - xy: 735, 377 + xy: 277, 130 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 wave rotate: false - xy: 789, 397 + xy: 315, 170 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 wave-liquid rotate: false - xy: 807, 415 + xy: 315, 152 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 dagger-factory-top rotate: false - xy: 582, 427 + xy: 130, 117 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 dagger-factory-top-open rotate: false - xy: 600, 427 + xy: 135, 99 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 fortress-factory rotate: false - xy: 108, 20 + xy: 750, 453 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 fortress-factory-top rotate: false - xy: 142, 98 + xy: 776, 453 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 ghoul-factory-top rotate: false - xy: 142, 98 + xy: 776, 453 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 titan-factory-top rotate: false - xy: 142, 98 + xy: 776, 453 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 fortress-factory-top-open rotate: false - xy: 142, 72 + xy: 802, 453 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 ghoul-factory-top-open rotate: false - xy: 142, 72 + xy: 802, 453 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 titan-factory-top-open rotate: false - xy: 142, 72 + xy: 802, 453 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 ghoul-factory rotate: false - xy: 134, 20 + xy: 854, 453 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 phantom-factory-top rotate: false - xy: 591, 355 + xy: 261, 148 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 phantom-factory-top-open rotate: false - xy: 609, 355 + xy: 223, 129 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 reconstructor-open rotate: false - xy: 699, 413 + xy: 225, 59 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 repair-point-turret rotate: false - xy: 687, 295 + xy: 491, 359 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 revenant-factory rotate: false - xy: 56, 27 + xy: 66, 227 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 revenant-factory-top rotate: false - xy: 516, 445 + xy: 100, 227 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 revenant-factory-top-open rotate: false - xy: 550, 445 + xy: 134, 227 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 spirit-factory-top rotate: false - xy: 753, 413 + xy: 279, 166 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 spirit-factory-top-open rotate: false - xy: 717, 359 + xy: 279, 148 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 titan-factory rotate: false - xy: 289, 334 + xy: 558, 427 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 wraith-factory-top rotate: false - xy: 789, 379 + xy: 279, 80 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 wraith-factory-top-open rotate: false - xy: 807, 397 + xy: 279, 62 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 deflector-wall rotate: false - xy: 467, 321 + xy: 307, 30 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 deflector-wall-large rotate: false - xy: 618, 427 + xy: 117, 81 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 door-large-open rotate: false - xy: 636, 427 + xy: 135, 81 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 door-open rotate: false - xy: 437, 291 + xy: 337, 24 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 beam rotate: false - xy: 1022, 499 + xy: 1018, 499 size: 1, 12 orig: 1, 12 offset: 0, 0 index: -1 beam-end rotate: false - xy: 496, 467 + xy: 285, 382 size: 18, 18 orig: 18, 18 offset: 0, 0 index: -1 blank rotate: false - xy: 53, 27 + xy: 256, 417 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 bullet rotate: false - xy: 501, 432 + xy: 82, 114 size: 13, 13 orig: 13, 13 offset: 0, 0 index: -1 bullet-back rotate: false - xy: 307, 181 + xy: 1010, 464 size: 13, 13 orig: 13, 13 offset: 0, 0 index: -1 casing rotate: false - xy: 243, 228 + xy: 329, 146 size: 2, 4 orig: 2, 4 offset: 0, 0 index: -1 clear rotate: false - xy: 428, 487 + xy: 256, 414 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 command-attack rotate: false - xy: 407, 336 + xy: 613, 399 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 command-idle rotate: false - xy: 417, 346 + xy: 613, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 command-patrol rotate: false - xy: 407, 326 + xy: 623, 399 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 command-retreat rotate: false - xy: 417, 336 + xy: 623, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 enemyarrow rotate: false - xy: 853, 331 + xy: 327, 15 size: 8, 7 orig: 8, 7 offset: 0, 0 index: -1 error rotate: false - xy: 391, 388 + xy: 980, 403 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 laser rotate: false - xy: 1022, 485 + xy: 111, 56 size: 1, 12 orig: 1, 12 offset: 0, 0 index: -1 laser-end rotate: false - xy: 80, 130 + xy: 656, 433 size: 18, 18 orig: 18, 18 offset: 0, 0 index: -1 laserfull rotate: false - xy: 293, 288 + xy: 676, 433 size: 18, 18 orig: 18, 18 offset: 0, 0 index: -1 minelaser rotate: false - xy: 851, 373 + xy: 114, 56 size: 1, 12 orig: 1, 12 offset: 0, 0 index: -1 minelaser-end rotate: false - xy: 291, 268 + xy: 696, 433 size: 18, 18 orig: 18, 18 offset: 0, 0 index: -1 missile rotate: false - xy: 853, 340 + xy: 27, 1 size: 9, 9 orig: 9, 9 offset: 0, 0 index: -1 missile-back rotate: false - xy: 866, 356 + xy: 38, 1 size: 9, 9 orig: 9, 9 offset: 0, 0 index: -1 scorch1 rotate: false - xy: 1016, 452 + xy: 337, 406 size: 7, 25 orig: 7, 25 offset: 0, 0 index: -1 scorch2 rotate: false - xy: 186, 19 + xy: 90, 87 size: 7, 25 orig: 7, 25 offset: 0, 0 index: -1 scorch3 rotate: false - xy: 181, 179 + xy: 162, 200 size: 7, 25 orig: 7, 25 offset: 0, 0 index: -1 scorch4 rotate: false - xy: 280, 354 + xy: 99, 88 size: 7, 25 orig: 7, 25 offset: 0, 0 index: -1 scorch5 rotate: false - xy: 280, 327 + xy: 108, 88 size: 7, 25 orig: 7, 25 offset: 0, 0 index: -1 shell rotate: false - xy: 865, 345 + xy: 49, 1 size: 9, 9 orig: 9, 9 offset: 0, 0 index: -1 shell-back rotate: false - xy: 864, 334 + xy: 60, 1 size: 9, 9 orig: 9, 9 offset: 0, 0 index: -1 shot rotate: false - xy: 707, 305 + xy: 561, 359 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 transfer rotate: false - xy: 204, 314 + xy: 187, 49 size: 1, 12 orig: 1, 12 offset: 0, 0 index: -1 transfer-arrow rotate: false - xy: 787, 295 + xy: 801, 359 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 transfer-end rotate: false - xy: 311, 268 + xy: 776, 433 size: 18, 18 orig: 18, 18 offset: 0, 0 index: -1 blackstone-cliff-edge rotate: false - xy: 213, 45 + xy: 227, 29 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackstone-cliff-edge-1 rotate: false - xy: 213, 35 + xy: 237, 36 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackstone-cliff-edge-2 rotate: false - xy: 213, 25 + xy: 247, 36 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackstone-cliff-side rotate: false - xy: 191, 198 + xy: 257, 36 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-arc rotate: false - xy: 210, 188 + xy: 257, 26 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-biomattercompressor rotate: false - xy: 315, 296 + xy: 346, 407 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-blast-drill rotate: false - xy: 990, 453 + xy: 290, 330 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-icon-bridge-conduit rotate: false - xy: 347, 376 + xy: 267, 26 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 bridge-conduit rotate: false - xy: 347, 376 + xy: 267, 26 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-bridge-conveyor rotate: false - xy: 347, 366 + xy: 277, 26 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 bridge-conveyor rotate: false - xy: 347, 366 + xy: 277, 26 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-centrifuge rotate: false - xy: 184, 161 + xy: 364, 407 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 centrifuge rotate: false - xy: 184, 161 + xy: 364, 407 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-combustion-generator rotate: false - xy: 347, 356 + xy: 343, 396 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 combustion-generator rotate: false - xy: 347, 356 + xy: 343, 396 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-command-center rotate: false - xy: 184, 143 + xy: 382, 407 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 command-center rotate: false - xy: 184, 143 + xy: 382, 407 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-conduit rotate: false - xy: 347, 346 + xy: 353, 397 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-container rotate: false - xy: 178, 125 + xy: 400, 407 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 container rotate: false - xy: 178, 125 + xy: 400, 407 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-conveyor rotate: false - xy: 347, 336 + xy: 363, 397 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-0-0 rotate: false - xy: 347, 336 + xy: 363, 397 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-copper-wall rotate: false - xy: 347, 326 + xy: 373, 397 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 copper-wall rotate: false - xy: 347, 326 + xy: 373, 397 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-copper-wall-large rotate: false - xy: 196, 125 + xy: 418, 407 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 copper-wall-large rotate: false - xy: 196, 125 + xy: 418, 407 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-core rotate: false - xy: 239, 268 + xy: 290, 304 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 core rotate: false - xy: 239, 268 + xy: 290, 304 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-icon-cryofluidmixer rotate: false - xy: 194, 107 + xy: 436, 409 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-cultivator rotate: false - xy: 194, 89 + xy: 454, 409 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-cyclone rotate: false - xy: 247, 242 + xy: 290, 278 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-icon-dagger-factory rotate: false - xy: 194, 71 + xy: 472, 409 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-dart-ship-pad rotate: false - xy: 194, 53 + xy: 490, 409 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 dart-ship-pad rotate: false - xy: 194, 53 + xy: 490, 409 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-deepwater rotate: false - xy: 347, 316 + xy: 383, 397 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 deepwater rotate: false - xy: 347, 316 + xy: 383, 397 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-delta-mech-pad rotate: false - xy: 195, 35 + xy: 508, 409 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 delta-mech-pad rotate: false - xy: 195, 35 + xy: 508, 409 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-dense-alloy-wall rotate: false - xy: 347, 306 + xy: 393, 397 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dense-alloy-wall rotate: false - xy: 347, 306 + xy: 393, 397 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-dense-alloy-wall-large rotate: false - xy: 195, 17 + xy: 526, 409 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 dense-alloy-wall-large rotate: false - xy: 195, 17 + xy: 526, 409 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-dirt rotate: false - xy: 347, 296 + xy: 403, 397 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirt1 rotate: false - xy: 347, 296 + xy: 403, 397 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-distributor rotate: false - xy: 321, 436 + xy: 544, 409 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 distributor rotate: false - xy: 321, 436 + xy: 544, 409 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-door rotate: false - xy: 357, 378 + xy: 413, 397 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 door rotate: false - xy: 357, 378 + xy: 413, 397 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-door-large rotate: false - xy: 321, 418 + xy: 562, 409 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 door-large rotate: false - xy: 321, 418 + xy: 562, 409 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-duo rotate: false - xy: 357, 368 + xy: 423, 397 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-force-projector rotate: false - xy: 295, 386 + xy: 315, 356 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 force-projector rotate: false - xy: 295, 386 + xy: 315, 356 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-icon-fortress-factory rotate: false - xy: 87, 202 + xy: 316, 330 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-icon-fuse rotate: false - xy: 77, 176 + xy: 316, 304 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-icon-fusion-reactor rotate: false - xy: 394, 456 + xy: 474, 479 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-icon-ghoul-factory rotate: false - xy: 80, 150 + xy: 316, 278 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-icon-glaive-ship-pad rotate: false - xy: 103, 176 + xy: 334, 451 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 glaive-ship-pad rotate: false - xy: 103, 176 + xy: 334, 451 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-icon-grass rotate: false - xy: 367, 378 + xy: 343, 386 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grass1 rotate: false - xy: 367, 378 + xy: 343, 386 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-hail rotate: false - xy: 357, 358 + xy: 353, 387 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-ice rotate: false - xy: 367, 368 + xy: 363, 387 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ice1 rotate: false - xy: 367, 368 + xy: 363, 387 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-icerock rotate: false - xy: 377, 378 + xy: 373, 387 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icerock1 rotate: false - xy: 377, 378 + xy: 373, 387 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-incinerator rotate: false - xy: 357, 348 + xy: 383, 387 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 incinerator rotate: false - xy: 357, 348 + xy: 383, 387 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-itemsource rotate: false - xy: 367, 358 + xy: 393, 387 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 itemsource rotate: false - xy: 367, 358 + xy: 393, 387 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-itemvoid rotate: false - xy: 377, 368 + xy: 403, 387 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 itemvoid rotate: false - xy: 377, 368 + xy: 403, 387 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-javelin-ship-pad rotate: false - xy: 321, 400 + xy: 580, 409 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 javelin-ship-pad rotate: false - xy: 321, 400 + xy: 580, 409 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-junction rotate: false - xy: 387, 378 + xy: 413, 387 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 junction rotate: false - xy: 387, 378 + xy: 413, 387 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-lancer rotate: false - xy: 339, 438 + xy: 598, 409 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-laser-drill rotate: false - xy: 357, 438 + xy: 616, 409 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-lava rotate: false - xy: 357, 338 + xy: 423, 387 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 lava rotate: false - xy: 357, 338 + xy: 423, 387 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-liquid-junction rotate: false - xy: 367, 348 + xy: 341, 376 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquid-junction rotate: false - xy: 367, 348 + xy: 341, 376 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-liquid-router rotate: false - xy: 377, 358 + xy: 341, 366 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-liquid-tank rotate: false - xy: 113, 202 + xy: 360, 451 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-icon-liquidsource rotate: false - xy: 387, 368 + xy: 341, 356 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquidsource rotate: false - xy: 387, 368 + xy: 341, 356 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-mass-driver rotate: false - xy: 106, 150 + xy: 386, 451 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 mass-driver rotate: false - xy: 106, 150 + xy: 386, 451 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-icon-mechanical-drill rotate: false - xy: 339, 420 + xy: 168, 243 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-mechanical-pump rotate: false - xy: 357, 328 + xy: 342, 346 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 mechanical-pump rotate: false - xy: 357, 328 + xy: 342, 346 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-meltdown rotate: false - xy: 516, 479 + xy: 508, 479 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-icon-melter rotate: false - xy: 367, 338 + xy: 342, 336 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 melter rotate: false - xy: 367, 338 + xy: 342, 336 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-mend-projector rotate: false - xy: 375, 438 + xy: 171, 209 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 mend-projector rotate: false - xy: 375, 438 + xy: 171, 209 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-metalfloor rotate: false - xy: 377, 348 + xy: 342, 326 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor1 rotate: false - xy: 377, 348 + xy: 342, 326 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-oil-extractor rotate: false - xy: 100, 124 + xy: 412, 453 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-icon-omega-mech-pad rotate: false - xy: 90, 98 + xy: 438, 453 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 omega-mech-pad rotate: false - xy: 90, 98 + xy: 438, 453 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-icon-overdrive-projector rotate: false - xy: 339, 402 + xy: 180, 266 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 overdrive-projector rotate: false - xy: 339, 402 + xy: 180, 266 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-overflow-gate rotate: false - xy: 387, 358 + xy: 342, 316 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 overflow-gate rotate: false - xy: 387, 358 + xy: 342, 316 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-phantom-factory rotate: false - xy: 357, 420 + xy: 198, 265 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-phase-conduit rotate: false - xy: 357, 318 + xy: 342, 306 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 phase-conduit rotate: false - xy: 357, 318 + xy: 342, 306 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-phase-conveyor rotate: false - xy: 367, 328 + xy: 342, 296 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 phase-conveyor rotate: false - xy: 367, 328 + xy: 342, 296 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-phase-wall rotate: false - xy: 377, 338 + xy: 342, 286 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 phase-wall rotate: false - xy: 377, 338 + xy: 342, 286 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-phase-wall-large rotate: false - xy: 393, 438 + xy: 171, 191 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 phase-wall-large rotate: false - xy: 393, 438 + xy: 171, 191 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-phase-weaver rotate: false - xy: 357, 402 + xy: 169, 173 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-plasma-drill rotate: false - xy: 550, 479 + xy: 542, 479 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-icon-plastanium-compressor rotate: false - xy: 375, 420 + xy: 230, 260 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 plastanium-compressor rotate: false - xy: 375, 420 + xy: 230, 260 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-pneumatic-drill rotate: false - xy: 375, 402 + xy: 248, 260 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-power-node rotate: false - xy: 387, 348 + xy: 1014, 432 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 power-node rotate: false - xy: 387, 348 + xy: 1014, 432 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-power-node-large rotate: false - xy: 393, 420 + xy: 266, 262 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 power-node-large rotate: false - xy: 393, 420 + xy: 266, 262 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-powerinfinite rotate: false - xy: 357, 308 + xy: 1014, 422 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 powerinfinite rotate: false - xy: 357, 308 + xy: 1014, 422 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-powervoid rotate: false - xy: 367, 318 + xy: 433, 397 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 powervoid rotate: false - xy: 367, 318 + xy: 433, 397 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-pulse-conduit rotate: false - xy: 377, 328 + xy: 433, 387 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-pulverizer rotate: false - xy: 387, 338 + xy: 443, 399 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-pyratite-mixer rotate: false - xy: 393, 402 + xy: 284, 260 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 pyratite-mixer rotate: false - xy: 393, 402 + xy: 284, 260 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-reconstructor rotate: false - xy: 411, 422 + xy: 302, 260 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 dagger-factory rotate: false - xy: 411, 422 + xy: 302, 260 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 phantom-factory rotate: false - xy: 411, 422 + xy: 302, 260 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 reconstructor rotate: false - xy: 411, 422 + xy: 302, 260 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 spirit-factory rotate: false - xy: 411, 422 + xy: 302, 260 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 wraith-factory rotate: false - xy: 411, 422 + xy: 302, 260 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-repair-point rotate: false - xy: 357, 298 + xy: 443, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 repair-point rotate: false - xy: 357, 298 + xy: 443, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-revenant-factory rotate: false - xy: 584, 479 + xy: 576, 479 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-icon-ripple rotate: false - xy: 90, 72 + xy: 464, 453 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-icon-rock rotate: false - xy: 367, 308 + xy: 453, 399 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 rock1 rotate: false - xy: 367, 308 + xy: 453, 399 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-rotary-pump rotate: false - xy: 411, 404 + xy: 320, 260 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 rotary-pump rotate: false - xy: 411, 404 + xy: 320, 260 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-router rotate: false - xy: 377, 318 + xy: 453, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 router rotate: false - xy: 377, 318 + xy: 453, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-rtg-generator rotate: false - xy: 429, 435 + xy: 169, 155 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 rtg-generator rotate: false - xy: 429, 435 + xy: 169, 155 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-salvo rotate: false - xy: 429, 417 + xy: 636, 415 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-sand rotate: false - xy: 387, 328 + xy: 463, 399 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sand1 rotate: false - xy: 387, 328 + xy: 463, 399 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-scorch rotate: false - xy: 367, 298 + xy: 463, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-separator rotate: false - xy: 377, 308 + xy: 473, 399 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 separator rotate: false - xy: 377, 308 + xy: 473, 399 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-shock-mine rotate: false - xy: 387, 318 + xy: 473, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 shock-mine rotate: false - xy: 387, 318 + xy: 473, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-shrub rotate: false - xy: 377, 298 + xy: 483, 399 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 shrub rotate: false - xy: 377, 298 + xy: 483, 399 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-silicon-smelter rotate: false - xy: 447, 435 + xy: 654, 415 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 silicon-smelter rotate: false - xy: 447, 435 + xy: 654, 415 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-smelter rotate: false - xy: 387, 308 + xy: 483, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 smelter rotate: false - xy: 387, 308 + xy: 483, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-snow rotate: false - xy: 387, 298 + xy: 493, 399 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snow1 rotate: false - xy: 387, 298 + xy: 493, 399 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-solar-panel rotate: false - xy: 347, 286 + xy: 493, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 solar-panel rotate: false - xy: 347, 286 + xy: 493, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-solar-panel-large rotate: false - xy: 90, 46 + xy: 490, 453 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 solar-panel-large rotate: false - xy: 90, 46 + xy: 490, 453 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-icon-solidifer rotate: false - xy: 357, 288 + xy: 503, 399 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 solidifer rotate: false - xy: 357, 288 + xy: 503, 399 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-sorter rotate: false - xy: 367, 288 + xy: 503, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sorter rotate: false - xy: 367, 288 + xy: 503, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-space rotate: false - xy: 377, 288 + xy: 513, 399 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 space rotate: false - xy: 377, 288 + xy: 513, 399 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-spawn rotate: false - xy: 387, 288 + xy: 513, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 spawn rotate: false - xy: 387, 288 + xy: 513, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-spectre rotate: false - xy: 618, 479 + xy: 610, 479 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-icon-spirit-factory rotate: false - xy: 447, 417 + xy: 672, 415 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-stone rotate: false - xy: 397, 378 + xy: 523, 399 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stone1 rotate: false - xy: 397, 378 + xy: 523, 399 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-surge-wall rotate: false - xy: 397, 368 + xy: 523, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 surge-wall rotate: false - xy: 397, 368 + xy: 523, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-surge-wall-large rotate: false - xy: 465, 435 + xy: 690, 415 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 surge-wall-large rotate: false - xy: 465, 435 + xy: 690, 415 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-swarmer rotate: false - xy: 465, 417 + xy: 708, 415 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-tar rotate: false - xy: 397, 358 + xy: 533, 399 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 tar rotate: false - xy: 397, 358 + xy: 533, 399 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-tau-mech-pad rotate: false - xy: 429, 399 + xy: 726, 415 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 tau-mech-pad rotate: false - xy: 429, 399 + xy: 726, 415 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-thermal-generator rotate: false - xy: 447, 399 + xy: 744, 415 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 thermal-generator rotate: false - xy: 447, 399 + xy: 744, 415 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-thermal-pump rotate: false - xy: 465, 399 + xy: 762, 415 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 thermal-pump rotate: false - xy: 465, 399 + xy: 762, 415 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-thorium-reactor rotate: false - xy: 129, 176 + xy: 516, 453 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 thorium-reactor rotate: false - xy: 129, 176 + xy: 516, 453 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-icon-thorium-wall rotate: false - xy: 397, 348 + xy: 533, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 thorium-wall rotate: false - xy: 397, 348 + xy: 533, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-thorium-wall-large rotate: false - xy: 411, 386 + xy: 780, 415 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 thorium-wall-large rotate: false - xy: 411, 386 + xy: 780, 415 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-titan-factory rotate: false - xy: 132, 150 + xy: 542, 453 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-icon-titanium-conveyor rotate: false - xy: 397, 338 + xy: 543, 399 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-0-0 rotate: false - xy: 397, 338 + xy: 543, 399 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-trident-ship-pad rotate: false - xy: 429, 381 + xy: 798, 417 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 trident-ship-pad rotate: false - xy: 429, 381 + xy: 798, 417 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-turbine-generator rotate: false - xy: 447, 381 + xy: 816, 417 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 turbine-generator rotate: false - xy: 447, 381 + xy: 816, 417 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-unloader rotate: false - xy: 397, 328 + xy: 543, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 unloader rotate: false - xy: 397, 328 + xy: 543, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-vault rotate: false - xy: 126, 124 + xy: 568, 453 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 vault rotate: false - xy: 126, 124 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-icon-warp-gate - rotate: false - xy: 116, 98 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -warp-gate - rotate: false - xy: 116, 98 + xy: 568, 453 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-icon-water rotate: false - xy: 397, 318 + xy: 553, 399 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 water rotate: false - xy: 397, 318 + xy: 553, 399 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-water-extractor rotate: false - xy: 465, 381 + xy: 834, 417 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-wave rotate: false - xy: 483, 423 + xy: 852, 417 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-wraith-factory rotate: false - xy: 483, 405 + xy: 870, 417 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 deepwater-cliff-edge rotate: false - xy: 457, 321 + xy: 357, 38 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 deepwater-cliff-edge-1 rotate: false - xy: 467, 331 + xy: 357, 28 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 deepwater-cliff-edge-2 rotate: false - xy: 447, 301 + xy: 287, 30 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 deepwater-cliff-side rotate: false - xy: 457, 311 + xy: 297, 30 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirt-cliff-edge rotate: false - xy: 467, 301 + xy: 297, 20 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirt-cliff-edge-1 rotate: false - xy: 407, 286 + xy: 307, 20 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirt-cliff-edge-2 rotate: false - xy: 417, 286 + xy: 317, 20 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirt-cliff-side rotate: false - xy: 427, 291 + xy: 327, 24 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 lava-cliff-edge rotate: false - xy: 507, 320 + xy: 352, 346 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 lava-cliff-edge-1 rotate: false - xy: 497, 300 + xy: 352, 336 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 lava-cliff-edge-2 rotate: false - xy: 507, 310 + xy: 352, 326 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 lava-cliff-side rotate: false - xy: 497, 290 + xy: 352, 316 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquid-icon-cryofluid rotate: false - xy: 517, 335 + xy: 362, 337 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquid-icon-lava rotate: false - xy: 517, 325 + xy: 382, 347 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquid-icon-oil rotate: false - xy: 527, 345 + xy: 372, 337 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquid-icon-water rotate: false - xy: 527, 335 + xy: 362, 327 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 mech-icon-alpha-mech rotate: false - xy: 783, 345 + xy: 345, 62 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 mech-icon-dart-ship rotate: false - xy: 825, 387 + xy: 345, 48 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 mech-icon-delta-mech rotate: false - xy: 839, 387 + xy: 343, 34 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 mech-icon-omega-mech rotate: false - xy: 243, 200 + xy: 311, 40 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 mech-icon-tau-mech rotate: false - xy: 259, 200 + xy: 329, 130 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 mech-icon-trident-ship rotate: false - xy: 275, 200 + xy: 329, 114 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 trident-ship rotate: false - xy: 275, 200 + xy: 329, 114 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 metalfloor-cliff-edge rotate: false - xy: 547, 335 + xy: 362, 307 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor-cliff-edge-1 rotate: false - xy: 547, 325 + xy: 412, 347 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor-cliff-edge-2 rotate: false - xy: 517, 295 + xy: 402, 337 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor-cliff-side rotate: false - xy: 527, 305 + xy: 392, 327 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-blackstone1 rotate: false - xy: 557, 345 + xy: 372, 307 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-blackstone2 rotate: false - xy: 557, 335 + xy: 362, 297 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-blackstone3 rotate: false - xy: 557, 325 + xy: 422, 347 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-grass1 rotate: false - xy: 517, 285 + xy: 412, 337 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-grass2 rotate: false - xy: 527, 295 + xy: 402, 327 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-grass3 rotate: false - xy: 537, 305 + xy: 392, 317 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-ice1 rotate: false - xy: 547, 315 + xy: 382, 307 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-ice2 rotate: false - xy: 567, 345 + xy: 372, 297 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-ice3 rotate: false - xy: 567, 335 + xy: 362, 287 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-sand1 rotate: false - xy: 567, 325 + xy: 422, 337 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-sand2 rotate: false - xy: 527, 285 + xy: 412, 327 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-sand3 rotate: false - xy: 537, 295 + xy: 402, 317 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-snow1 rotate: false - xy: 547, 305 + xy: 392, 307 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-snow2 rotate: false - xy: 557, 315 + xy: 382, 297 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-snow3 rotate: false - xy: 577, 345 + xy: 372, 287 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-stone1 rotate: false - xy: 577, 335 + xy: 422, 327 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-stone2 rotate: false - xy: 577, 325 + xy: 412, 317 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-stone3 rotate: false - xy: 537, 285 + xy: 402, 307 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-copper-blackstone1 rotate: false - xy: 547, 295 + xy: 392, 297 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-copper-blackstone2 rotate: false - xy: 557, 305 + xy: 382, 287 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-copper-blackstone3 rotate: false - xy: 567, 315 + xy: 422, 317 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-copper-grass1 rotate: false - xy: 587, 345 + xy: 412, 307 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-copper-grass2 rotate: false - xy: 587, 335 + xy: 402, 297 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-copper-grass3 rotate: false - xy: 587, 325 + xy: 392, 287 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-copper-ice1 rotate: false - xy: 547, 285 + xy: 422, 307 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-copper-ice2 rotate: false - xy: 557, 295 + xy: 412, 297 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-copper-ice3 rotate: false - xy: 567, 305 + xy: 402, 287 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-copper-sand1 rotate: false - xy: 577, 315 + xy: 422, 297 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-copper-sand2 rotate: false - xy: 597, 345 + xy: 412, 287 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-copper-sand3 rotate: false - xy: 597, 335 + xy: 422, 287 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-copper-snow1 rotate: false - xy: 597, 325 + xy: 432, 347 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-copper-snow2 rotate: false - xy: 557, 285 + xy: 432, 337 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-copper-snow3 rotate: false - xy: 567, 295 + xy: 432, 327 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-copper-stone1 rotate: false - xy: 577, 305 + xy: 432, 317 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-copper-stone2 rotate: false - xy: 587, 315 + xy: 432, 307 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-copper-stone3 rotate: false - xy: 607, 345 + xy: 432, 297 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-blackstone1 rotate: false - xy: 607, 335 + xy: 432, 287 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-blackstone2 rotate: false - xy: 607, 325 + xy: 443, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-blackstone3 rotate: false - xy: 567, 285 + xy: 453, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-grass1 rotate: false - xy: 577, 295 + xy: 463, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-grass2 rotate: false - xy: 587, 305 + xy: 473, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-grass3 rotate: false - xy: 597, 315 + xy: 483, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-ice1 rotate: false - xy: 617, 345 + xy: 493, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-ice2 rotate: false - xy: 617, 335 + xy: 503, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-ice3 rotate: false - xy: 617, 325 + xy: 513, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-sand1 rotate: false - xy: 577, 285 + xy: 523, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-sand2 rotate: false - xy: 587, 295 + xy: 533, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-sand3 rotate: false - xy: 597, 305 + xy: 543, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-snow1 rotate: false - xy: 607, 315 + xy: 553, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-snow2 rotate: false - xy: 627, 345 + xy: 563, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-snow3 rotate: false - xy: 627, 335 + xy: 573, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-stone1 rotate: false - xy: 627, 325 + xy: 583, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-stone2 rotate: false - xy: 587, 285 + xy: 593, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-stone3 rotate: false - xy: 597, 295 + xy: 603, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-blackstone1 rotate: false - xy: 607, 305 + xy: 613, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-blackstone2 rotate: false - xy: 617, 315 + xy: 623, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-blackstone3 rotate: false - xy: 637, 345 + xy: 633, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-grass1 rotate: false - xy: 637, 335 + xy: 643, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-grass2 rotate: false - xy: 637, 325 + xy: 653, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-grass3 rotate: false - xy: 597, 285 + xy: 663, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-ice1 rotate: false - xy: 607, 295 + xy: 673, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-ice2 rotate: false - xy: 617, 305 + xy: 683, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-ice3 rotate: false - xy: 627, 315 + xy: 693, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-sand1 rotate: false - xy: 647, 345 + xy: 703, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-sand2 rotate: false - xy: 647, 335 + xy: 713, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-sand3 rotate: false - xy: 647, 325 + xy: 723, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-snow1 rotate: false - xy: 607, 285 + xy: 733, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-snow2 rotate: false - xy: 617, 295 + xy: 743, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-snow3 rotate: false - xy: 627, 305 + xy: 753, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-stone1 rotate: false - xy: 637, 315 + xy: 763, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-stone2 rotate: false - xy: 657, 345 + xy: 773, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-stone3 rotate: false - xy: 657, 335 + xy: 783, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-blackstone1 rotate: false - xy: 657, 325 + xy: 793, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-blackstone2 rotate: false - xy: 617, 285 + xy: 803, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-blackstone3 rotate: false - xy: 627, 295 + xy: 813, 381 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-grass1 rotate: false - xy: 637, 305 + xy: 823, 381 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-grass2 rotate: false - xy: 647, 315 + xy: 833, 383 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-grass3 rotate: false - xy: 667, 345 + xy: 843, 383 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-ice1 rotate: false - xy: 667, 335 + xy: 853, 383 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-ice2 rotate: false - xy: 667, 325 + xy: 863, 383 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-ice3 rotate: false - xy: 627, 285 + xy: 873, 383 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-sand1 rotate: false - xy: 637, 295 + xy: 883, 383 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-sand2 rotate: false - xy: 647, 305 + xy: 893, 383 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-sand3 rotate: false - xy: 657, 315 + xy: 903, 383 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-snow1 rotate: false - xy: 677, 345 + xy: 913, 383 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-snow2 rotate: false - xy: 677, 335 + xy: 923, 383 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-snow3 rotate: false - xy: 677, 325 + xy: 933, 383 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-stone1 rotate: false - xy: 637, 285 + xy: 943, 383 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-stone2 rotate: false - xy: 647, 295 + xy: 953, 383 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-stone3 rotate: false - xy: 657, 305 + xy: 963, 383 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sand-cliff-edge rotate: false - xy: 707, 325 + xy: 521, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sand-cliff-edge-1 rotate: false - xy: 697, 315 + xy: 521, 359 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sand-cliff-edge-2 rotate: false - xy: 717, 335 + xy: 531, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sand-cliff-side rotate: false - xy: 717, 325 + xy: 531, 359 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snow-cliff-edge rotate: false - xy: 697, 285 + xy: 581, 359 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snow-cliff-edge-1 rotate: false - xy: 707, 295 + xy: 591, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snow-cliff-edge-2 rotate: false - xy: 717, 305 + xy: 591, 359 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snow-cliff-side rotate: false - xy: 727, 315 + xy: 601, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 space-cliff-edge rotate: false - xy: 747, 325 + xy: 611, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 space-cliff-edge-1 rotate: false - xy: 707, 285 + xy: 611, 359 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 space-cliff-edge-2 rotate: false - xy: 717, 295 + xy: 621, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 space-cliff-side rotate: false - xy: 727, 305 + xy: 621, 359 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 tar-cliff-edge rotate: false - xy: 747, 315 + xy: 661, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 tar-cliff-edge-1 rotate: false - xy: 767, 335 + xy: 661, 359 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 tar-cliff-edge-2 rotate: false - xy: 767, 325 + xy: 671, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 tar-cliff-side rotate: false - xy: 727, 285 + xy: 671, 359 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 unit-icon-dagger rotate: false - xy: 825, 331 + xy: 141, 21 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 unit-icon-fortress rotate: false - xy: 753, 359 + xy: 315, 224 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 unit-icon-titan rotate: false - xy: 771, 413 + xy: 297, 188 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 unit-icon-wraith rotate: false - xy: 839, 331 + xy: 155, 35 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 wraith rotate: false - xy: 839, 331 + xy: 155, 35 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 item-biomatter rotate: false - xy: 487, 319 + xy: 401, 377 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-blast-compound rotate: false - xy: 487, 309 + xy: 391, 367 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-coal rotate: false - xy: 477, 289 + xy: 381, 357 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-copper rotate: false - xy: 487, 299 + xy: 411, 377 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-dense-alloy rotate: false - xy: 487, 289 + xy: 401, 367 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-lead rotate: false - xy: 477, 279 + xy: 391, 357 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-phase-fabric rotate: false - xy: 487, 279 + xy: 421, 377 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-plastanium rotate: false - xy: 497, 350 + xy: 411, 367 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-pyratite rotate: false - xy: 507, 350 + xy: 401, 357 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-sand rotate: false - xy: 497, 340 + xy: 431, 377 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-silicon rotate: false - xy: 497, 330 + xy: 421, 367 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-stone rotate: false - xy: 507, 340 + xy: 411, 357 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-surge-alloy rotate: false - xy: 497, 320 + xy: 431, 367 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-thorium rotate: false - xy: 507, 330 + xy: 421, 357 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-titanium rotate: false - xy: 497, 310 + xy: 431, 357 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquid-icon rotate: false - xy: 517, 345 + xy: 372, 347 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 alpha-mech rotate: false - xy: 321, 386 + xy: 166, 261 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 alpha-mech-base rotate: false - xy: 322, 182 + xy: 216, 269 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 alpha-mech-leg rotate: false - xy: 243, 170 + xy: 216, 255 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 delta-mech rotate: false - xy: 333, 302 + xy: 924, 403 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 delta-mech-base rotate: false - xy: 349, 388 + xy: 938, 403 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 delta-mech-leg rotate: false - xy: 363, 388 + xy: 952, 403 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 omega-mech rotate: false - xy: 227, 192 + xy: 329, 98 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 omega-mech-armor rotate: false - xy: 243, 184 + xy: 329, 82 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 omega-mech-base rotate: false - xy: 259, 184 + xy: 329, 66 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 omega-mech-leg rotate: false - xy: 275, 184 + xy: 329, 50 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 tau-mech rotate: false - xy: 291, 176 + xy: 810, 401 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 tau-mech-base rotate: false - xy: 797, 335 + xy: 127, 21 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 tau-mech-leg rotate: false - xy: 811, 327 + xy: 141, 35 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 dart-ship rotate: false - xy: 333, 316 + xy: 910, 403 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 glaive-ship rotate: false - xy: 247, 294 + xy: 168, 227 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 mech-icon-glaive-ship rotate: false - xy: 247, 294 + xy: 168, 227 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 javelin-ship rotate: false - xy: 741, 345 + xy: 345, 104 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 mech-icon-javelin-ship rotate: false - xy: 741, 345 + xy: 345, 104 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 javelin-ship-shield rotate: false - xy: 755, 345 + xy: 345, 90 size: 12, 12 orig: 12, 12 offset: 0, 0 @@ -5284,14 +5270,14 @@ circle index: -1 shape-3 rotate: false - xy: 204, 378 + xy: 1, 198 size: 63, 63 orig: 63, 63 offset: 0, 0 index: -1 border rotate: false - xy: 30, 77 + xy: 204, 309 size: 24, 40 split: 5, 5, 5, 10 orig: 24, 40 @@ -5299,7 +5285,7 @@ border index: -1 button rotate: false - xy: 187, 268 + xy: 30, 106 size: 24, 40 split: 10, 10, 6, 10 orig: 24, 40 @@ -5307,7 +5293,7 @@ button index: -1 textarea rotate: false - xy: 187, 268 + xy: 30, 106 size: 24, 40 split: 10, 10, 9, 11 orig: 24, 40 @@ -5315,7 +5301,7 @@ textarea index: -1 button-down rotate: false - xy: 269, 401 + xy: 233, 372 size: 24, 40 split: 10, 10, 6, 10 orig: 24, 40 @@ -5323,7 +5309,7 @@ button-down index: -1 button-over rotate: false - xy: 269, 401 + xy: 233, 372 size: 24, 40 split: 10, 10, 6, 10 orig: 24, 40 @@ -5331,7 +5317,7 @@ button-over index: -1 button-select rotate: false - xy: 116, 72 + xy: 594, 453 size: 24, 24 split: 4, 4, 4, 4 orig: 24, 24 @@ -5339,826 +5325,840 @@ button-select index: -1 check-off rotate: false - xy: 992, 479 + xy: 230, 312 size: 28, 32 orig: 28, 32 offset: 0, 0 index: -1 check-on rotate: false - xy: 123, 230 + xy: 230, 278 size: 28, 32 orig: 28, 32 offset: 0, 0 index: -1 check-on-over rotate: false - xy: 187, 234 + xy: 260, 314 size: 28, 32 orig: 28, 32 offset: 0, 0 index: -1 check-over rotate: false - xy: 217, 234 + xy: 260, 280 size: 28, 32 orig: 28, 32 offset: 0, 0 index: -1 clear rotate: false - xy: 483, 441 + xy: 166, 275 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 cursor rotate: false - xy: 495, 441 + xy: 325, 382 size: 4, 4 orig: 4, 4 offset: 0, 0 index: -1 discord-banner rotate: false - xy: 204, 443 + xy: 1, 263 size: 84, 45 orig: 84, 45 offset: 0, 0 index: -1 empty-sector rotate: false - xy: 686, 479 + xy: 678, 479 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -controller-cursor - rotate: false - xy: 501, 414 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-about - rotate: false - xy: 263, 294 - size: 14, 14 - orig: 14, 14 - offset: 0, 0 - index: -1 -icon-add - rotate: false - xy: 195, 1 - size: 14, 14 - orig: 14, 14 - offset: 0, 0 - index: -1 -icon-admin - rotate: false - xy: 211, 1 - size: 14, 14 - orig: 14, 14 - offset: 0, 0 - index: -1 -icon-admin-small - rotate: false - xy: 313, 288 - size: 6, 6 - orig: 6, 6 - offset: 0, 0 - index: -1 -icon-areaDelete - rotate: false - xy: 1012, 440 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-arrow - rotate: false - xy: 708, 431 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-arrow-16 - rotate: false - xy: 708, 431 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-arrow-down - rotate: false - xy: 307, 196 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-arrow-left - rotate: false - xy: 811, 369 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-arrow-right - rotate: false - xy: 854, 375 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-arrow-up - rotate: false - xy: 825, 319 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-back - rotate: false - xy: 726, 431 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-ban - rotate: false - xy: 411, 440 - size: 14, 14 - orig: 14, 14 - offset: 0, 0 - index: -1 -icon-break - rotate: false - xy: 744, 431 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-cancel - rotate: false - xy: 762, 431 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-chat - rotate: false - xy: 837, 319 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-check - rotate: false - xy: 780, 433 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 icon-crafting rotate: false - xy: 867, 391 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-cursor - rotate: false - xy: 879, 393 - size: 10, 10 - orig: 10, 10 + xy: 153, 81 + size: 16, 16 + orig: 16, 16 offset: 0, 0 index: -1 icon-defense rotate: false - xy: 891, 393 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-dev-builds - rotate: false - xy: 825, 417 - size: 14, 14 - orig: 14, 14 - offset: 0, 0 - index: -1 -icon-discord - rotate: false - xy: 789, 363 - size: 14, 14 - orig: 14, 14 + xy: 153, 63 + size: 16, 16 + orig: 16, 16 offset: 0, 0 index: -1 icon-distribution rotate: false - xy: 903, 393 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-donate - rotate: false - xy: 807, 381 - size: 14, 14 - orig: 14, 14 - offset: 0, 0 - index: -1 -icon-dots - rotate: false - xy: 825, 401 - size: 14, 14 - orig: 14, 14 - offset: 0, 0 - index: -1 -icon-editor - rotate: false - xy: 841, 417 - size: 14, 14 - orig: 14, 14 - offset: 0, 0 - index: -1 -icon-egg - rotate: false - xy: 841, 401 - size: 14, 14 - orig: 14, 14 - offset: 0, 0 - index: -1 -icon-elevation - rotate: false - xy: 798, 433 + xy: 171, 99 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -icon-eraser +icon-effect rotate: false - xy: 816, 433 + xy: 171, 81 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -icon-exit - rotate: false - xy: 852, 435 - size: 14, 14 - orig: 14, 14 - offset: 0, 0 - index: -1 -icon-file - rotate: false - xy: 834, 433 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-file-image - rotate: false - xy: 519, 409 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-file-text - rotate: false - xy: 868, 437 - size: 14, 14 - orig: 14, 14 - offset: 0, 0 - index: -1 -icon-fill - rotate: false - xy: 519, 391 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-floppy - rotate: false - xy: 884, 437 - size: 14, 14 - orig: 14, 14 - offset: 0, 0 - index: -1 -icon-floppy-16 - rotate: false - xy: 537, 409 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-folder - rotate: false - xy: 900, 437 - size: 14, 14 - orig: 14, 14 - offset: 0, 0 - index: -1 -icon-folder-parent - rotate: false - xy: 916, 437 - size: 14, 14 - orig: 14, 14 - offset: 0, 0 - index: -1 -icon-generated - rotate: false - xy: 204, 328 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -icon-github - rotate: false - xy: 932, 437 - size: 14, 14 - orig: 14, 14 - offset: 0, 0 - index: -1 -icon-google-play - rotate: false - xy: 948, 437 - size: 14, 14 - orig: 14, 14 - offset: 0, 0 - index: -1 -icon-grid - rotate: false - xy: 519, 373 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-hold - rotate: false - xy: 915, 393 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-holdDelete - rotate: false - xy: 927, 393 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-home - rotate: false - xy: 964, 437 - size: 14, 14 - orig: 14, 14 - offset: 0, 0 - index: -1 -icon-host - rotate: false - xy: 980, 437 - size: 14, 14 - orig: 14, 14 - offset: 0, 0 - index: -1 -icon-info - rotate: false - xy: 939, 393 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-itch.io - rotate: false - xy: 996, 437 - size: 14, 14 - orig: 14, 14 - offset: 0, 0 - index: -1 -icon-item - rotate: false - xy: 951, 393 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-items-none - rotate: false - xy: 487, 329 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -icon-line - rotate: false - xy: 537, 391 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-link - rotate: false - xy: 857, 419 - size: 14, 14 - orig: 14, 14 - offset: 0, 0 - index: -1 icon-liquid rotate: false - xy: 963, 393 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-load - rotate: false - xy: 857, 403 - size: 14, 14 - orig: 14, 14 - offset: 0, 0 - index: -1 -icon-load-image - rotate: false - xy: 555, 409 + xy: 189, 101 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -icon-load-map - rotate: false - xy: 537, 373 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-loading - rotate: false - xy: 555, 391 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-locked - rotate: false - xy: 573, 409 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-logic - rotate: false - xy: 975, 393 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-map - rotate: false - xy: 873, 421 - size: 14, 14 - orig: 14, 14 - offset: 0, 0 - index: -1 -icon-menu - rotate: false - xy: 987, 393 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-menu-large - rotate: false - xy: 555, 373 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-missing - rotate: false - xy: 999, 393 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-mission-background - rotate: false - xy: 269, 381 - size: 18, 18 - orig: 18, 18 - offset: 0, 0 - index: -1 -icon-mission-battle - rotate: false - xy: 1011, 393 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-mission-defense - rotate: false - xy: 849, 319 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-mission-done - rotate: false - xy: 867, 379 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-none - rotate: false - xy: 879, 381 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-nullitem - rotate: false - xy: 477, 299 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -icon-pause - rotate: false - xy: 891, 381 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-pencil - rotate: false - xy: 573, 391 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-pencil-small - rotate: false - xy: 873, 405 - size: 14, 14 - orig: 14, 14 - offset: 0, 0 - index: -1 -icon-pick - rotate: false - xy: 591, 409 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-play - rotate: false - xy: 903, 381 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-play-2 - rotate: false - xy: 889, 421 - size: 14, 14 - orig: 14, 14 - offset: 0, 0 - index: -1 -icon-players - rotate: false - xy: 915, 381 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 icon-power rotate: false - xy: 927, 381 - size: 10, 10 - orig: 10, 10 + xy: 207, 195 + size: 16, 16 + orig: 16, 16 offset: 0, 0 index: -1 icon-production rotate: false - xy: 939, 381 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-quit - rotate: false - xy: 889, 405 - size: 14, 14 - orig: 14, 14 - offset: 0, 0 - index: -1 -icon-redo - rotate: false - xy: 573, 373 + xy: 218, 237 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -icon-refresh +icon-turret rotate: false - xy: 905, 421 - size: 14, 14 - orig: 14, 14 - offset: 0, 0 - index: -1 -icon-rename - rotate: false - xy: 905, 405 - size: 14, 14 - orig: 14, 14 - offset: 0, 0 - index: -1 -icon-resize - rotate: false - xy: 591, 391 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-rotate - rotate: false - xy: 921, 421 - size: 14, 14 - orig: 14, 14 - offset: 0, 0 - index: -1 -icon-rotate-arrow - rotate: false - xy: 921, 405 - size: 14, 14 - orig: 14, 14 - offset: 0, 0 - index: -1 -icon-rotate-left - rotate: false - xy: 937, 421 - size: 14, 14 - orig: 14, 14 - offset: 0, 0 - index: -1 -icon-rotate-right - rotate: false - xy: 937, 405 - size: 14, 14 - orig: 14, 14 - offset: 0, 0 - index: -1 -icon-save - rotate: false - xy: 953, 421 - size: 14, 14 - orig: 14, 14 - offset: 0, 0 - index: -1 -icon-save-image - rotate: false - xy: 609, 409 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-save-map - rotate: false - xy: 591, 373 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-settings - rotate: false - xy: 951, 381 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-terrain - rotate: false - xy: 609, 391 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-tools - rotate: false - xy: 953, 405 - size: 14, 14 - orig: 14, 14 - offset: 0, 0 - index: -1 -icon-touch - rotate: false - xy: 963, 381 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-touchDelete - rotate: false - xy: 975, 381 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -icon-trash - rotate: false - xy: 969, 421 - size: 14, 14 - orig: 14, 14 - offset: 0, 0 - index: -1 -icon-trash-16 - rotate: false - xy: 627, 409 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -icon-trello - rotate: false - xy: 969, 405 - size: 14, 14 - orig: 14, 14 - offset: 0, 0 - index: -1 -icon-tutorial - rotate: false - xy: 985, 421 - size: 14, 14 - orig: 14, 14 - offset: 0, 0 - index: -1 -icon-undo - rotate: false - xy: 609, 373 + xy: 225, 201 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-units rotate: false - xy: 987, 381 + xy: 243, 206 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-upgrade + rotate: false + xy: 261, 202 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +controller-cursor + rotate: false + xy: 906, 417 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-about + rotate: false + xy: 153, 149 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +icon-add + rotate: false + xy: 153, 133 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +icon-admin + rotate: false + xy: 148, 117 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +icon-admin-small + rotate: false + xy: 186, 243 + size: 6, 6 + orig: 6, 6 + offset: 0, 0 + index: -1 +icon-areaDelete + rotate: false + xy: 140, 141 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 +icon-arrow + rotate: false + xy: 135, 63 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-arrow-16 + rotate: false + xy: 135, 63 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-arrow-down + rotate: false + xy: 272, 250 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 +icon-arrow-left + rotate: false + xy: 272, 238 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 +icon-arrow-right + rotate: false + xy: 259, 100 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 +icon-arrow-up + rotate: false + xy: 271, 100 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 +icon-back + rotate: false + xy: 95, 34 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-ban + rotate: false + xy: 164, 117 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +icon-break + rotate: false + xy: 95, 16 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-cancel + rotate: false + xy: 169, 137 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-chat + rotate: false + xy: 1012, 442 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 +icon-check + rotate: false + xy: 153, 99 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-cursor + rotate: false + xy: 169, 37 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 +icon-dev-builds + rotate: false + xy: 184, 227 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +icon-discord + rotate: false + xy: 200, 249 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +icon-donate + rotate: false + xy: 225, 113 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +icon-dots + rotate: false + xy: 243, 100 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +icon-editor + rotate: false + xy: 279, 46 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +icon-egg + rotate: false + xy: 333, 226 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +icon-elevation + rotate: false + xy: 171, 63 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-eraser + rotate: false + xy: 189, 209 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-exit + rotate: false + xy: 333, 210 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +icon-file + rotate: false + xy: 189, 191 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-file-image + rotate: false + xy: 187, 173 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-file-text + rotate: false + xy: 333, 194 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +icon-fill + rotate: false + xy: 187, 155 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-floppy + rotate: false + xy: 333, 178 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +icon-floppy-16 + rotate: false + xy: 187, 137 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-folder + rotate: false + xy: 333, 162 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +icon-folder-parent + rotate: false + xy: 333, 146 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +icon-generated + rotate: false + xy: 1, 148 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +icon-github + rotate: false + xy: 634, 399 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +icon-google-play + rotate: false + xy: 650, 399 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +icon-grid + rotate: false + xy: 180, 119 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-hold + rotate: false + xy: 169, 25 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 +icon-holdDelete + rotate: false + xy: 123, 9 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 +icon-home + rotate: false + xy: 666, 399 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +icon-host + rotate: false + xy: 682, 399 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +icon-info + rotate: false + xy: 135, 9 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 +icon-itch.io + rotate: false + xy: 698, 399 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +icon-item + rotate: false + xy: 147, 9 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 +icon-items-none + rotate: false + xy: 381, 367 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +icon-line + rotate: false + xy: 200, 231 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-link + rotate: false + xy: 714, 399 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +icon-load + rotate: false + xy: 730, 399 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +icon-load-image + rotate: false + xy: 189, 83 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-load-map + rotate: false + xy: 189, 65 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-loading + rotate: false + xy: 198, 119 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-locked + rotate: false + xy: 207, 101 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-logic + rotate: false + xy: 159, 9 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 +icon-map + rotate: false + xy: 746, 399 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +icon-menu + rotate: false + xy: 181, 37 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 +icon-menu-large + rotate: false + xy: 207, 83 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-missing + rotate: false + xy: 181, 25 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 +icon-mission-background + rotate: false + xy: 636, 433 + size: 18, 18 + orig: 18, 18 + offset: 0, 0 + index: -1 +icon-mission-battle + rotate: false + xy: 171, 13 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 +icon-mission-defense + rotate: false + xy: 171, 1 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 +icon-mission-done + rotate: false + xy: 183, 13 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 +icon-none + rotate: false + xy: 183, 1 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 +icon-nullitem + rotate: false + xy: 371, 357 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +icon-pause + rotate: false + xy: 190, 53 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 +icon-pencil + rotate: false + xy: 207, 65 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-pencil-small + rotate: false + xy: 762, 399 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +icon-pick + rotate: false + xy: 207, 213 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-play + rotate: false + xy: 202, 53 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 +icon-play-2 + rotate: false + xy: 778, 399 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +icon-players + rotate: false + xy: 193, 41 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 +icon-quit + rotate: false + xy: 338, 262 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +icon-redo + rotate: false + xy: 236, 242 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-refresh + rotate: false + xy: 338, 246 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +icon-rename + rotate: false + xy: 297, 136 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +icon-resize + rotate: false + xy: 254, 242 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-rotate + rotate: false + xy: 313, 136 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +icon-rotate-arrow + rotate: false + xy: 295, 120 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +icon-rotate-left + rotate: false + xy: 311, 120 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +icon-rotate-right + rotate: false + xy: 297, 104 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +icon-save + rotate: false + xy: 297, 88 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +icon-save-image + rotate: false + xy: 284, 242 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-save-map + rotate: false + xy: 302, 242 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-settings + rotate: false + xy: 193, 29 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 +icon-terrain + rotate: false + xy: 320, 242 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-tools + rotate: false + xy: 297, 72 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +icon-touch + rotate: false + xy: 205, 41 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 +icon-touchDelete + rotate: false + xy: 205, 29 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 +icon-trash + rotate: false + xy: 313, 104 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +icon-trash-16 + rotate: false + xy: 225, 219 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +icon-trello + rotate: false + xy: 313, 88 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +icon-tutorial + rotate: false + xy: 313, 72 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +icon-undo + rotate: false + xy: 243, 224 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 icon-unlocked rotate: false - xy: 627, 391 + xy: 261, 220 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-unlocks rotate: false - xy: 985, 405 + xy: 297, 56 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 -icon-weapon - rotate: false - xy: 999, 381 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 icon-wiki rotate: false - xy: 1001, 421 + xy: 313, 56 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-zoom rotate: false - xy: 645, 409 + xy: 243, 188 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-zoom-small rotate: false - xy: 1001, 405 + xy: 295, 40 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 info-banner rotate: false - xy: 1, 217 + xy: 204, 466 size: 84, 45 orig: 84, 45 offset: 0, 0 index: -1 inventory rotate: false - xy: 54, 129 + xy: 259, 378 size: 24, 40 split: 10, 10, 10, 14 orig: 24, 40 @@ -6166,14 +6166,14 @@ inventory index: -1 logotext rotate: false - xy: 346, 490 + xy: 87, 287 size: 89, 21 orig: 89, 21 offset: 0, 0 index: -1 pane rotate: false - xy: 27, 1 + xy: 280, 428 size: 24, 36 split: 10, 10, 5, 5 orig: 24, 36 @@ -6189,7 +6189,7 @@ pane-button index: -1 scroll rotate: false - xy: 30, 40 + xy: 306, 432 size: 24, 35 split: 10, 10, 6, 5 orig: 24, 35 @@ -6197,7 +6197,7 @@ scroll index: -1 scroll-horizontal rotate: false - xy: 479, 487 + xy: 129, 261 size: 35, 24 split: 6, 5, 10, 10 orig: 35, 24 @@ -6205,7 +6205,7 @@ scroll-horizontal index: -1 scroll-knob-horizontal rotate: false - xy: 437, 487 + xy: 87, 261 size: 40, 24 split: 10, 6, 0, 24 pad: -1, -1, 10, 10 @@ -6214,7 +6214,7 @@ scroll-knob-horizontal index: -1 scroll-knob-vertical rotate: false - xy: 295, 412 + xy: 56, 114 size: 24, 40 split: 10, 10, 6, 10 orig: 24, 40 @@ -6222,7 +6222,7 @@ scroll-knob-vertical index: -1 scroll-knob-vertical-black rotate: false - xy: 254, 336 + xy: 51, 156 size: 24, 40 split: 10, 10, 6, 10 orig: 24, 40 @@ -6230,84 +6230,63 @@ scroll-knob-vertical-black index: -1 sector-edge rotate: false - xy: 584, 445 + xy: 94, 193 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 sector-select rotate: false - xy: 618, 445 + xy: 128, 193 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 selection rotate: false - xy: 77, 173 + xy: 230, 348 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 slider rotate: false - xy: 53, 30 + xy: 1020, 454 size: 1, 8 orig: 1, 8 offset: 0, 0 index: -1 slider-knob rotate: false - xy: 53, 171 + xy: 256, 420 size: 22, 44 orig: 22, 44 offset: 0, 0 index: -1 slider-knob-down rotate: false - xy: 30, 119 + xy: 1, 39 size: 22, 44 orig: 22, 44 offset: 0, 0 index: -1 slider-knob-over rotate: false - xy: 30, 119 + xy: 1, 39 size: 22, 44 orig: 22, 44 offset: 0, 0 index: -1 slider-vertical rotate: false - xy: 269, 378 + xy: 290, 466 size: 8, 1 orig: 8, 1 offset: 0, 0 index: -1 -text-sides - rotate: false - xy: 1, 287 - size: 140, 21 - orig: 140, 21 - offset: 0, 0 - index: -1 -text-sides-down - rotate: false - xy: 204, 490 - size: 140, 21 - orig: 140, 21 - offset: 0, 0 - index: -1 -text-sides-over - rotate: false - xy: 1, 264 - size: 140, 21 - orig: 140, 21 - offset: 0, 0 - index: -1 textfield rotate: false - xy: 746, 449 + xy: 82, 129 size: 28, 28 split: 6, 6, 6, 6 orig: 28, 28 @@ -6315,7 +6294,7 @@ textfield index: -1 textfield-over rotate: false - xy: 716, 449 + xy: 111, 163 size: 28, 28 split: 2, 2, 2, 2 orig: 28, 28 @@ -6323,14 +6302,14 @@ textfield-over index: -1 white rotate: false - xy: 290, 449 + xy: 25, 80 size: 3, 3 orig: 3, 3 offset: 0, 0 index: -1 window rotate: false - xy: 1, 39 + xy: 1, 85 size: 27, 61 split: 8, 8, 44, 11 orig: 27, 61 @@ -6338,7 +6317,7 @@ window index: -1 window-empty rotate: false - xy: 1, 102 + xy: 204, 351 size: 27, 61 split: 8, 8, 44, 11 orig: 27, 61 @@ -6346,210 +6325,210 @@ window-empty index: -1 alpha-drone rotate: false - xy: 279, 294 + xy: 97, 115 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 unit-icon-alpha-drone rotate: false - xy: 279, 294 + xy: 97, 115 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 dagger rotate: false - xy: 333, 358 + xy: 868, 403 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 dagger-base rotate: false - xy: 333, 344 + xy: 882, 403 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 dagger-leg rotate: false - xy: 333, 330 + xy: 896, 403 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 fortress rotate: false - xy: 654, 427 + xy: 99, 70 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 fortress-base rotate: false - xy: 672, 427 + xy: 93, 52 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 titan-base rotate: false - xy: 672, 427 + xy: 93, 52 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 fortress-leg rotate: false - xy: 690, 431 + xy: 117, 63 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 ghoul rotate: false - xy: 496, 447 + xy: 305, 382 size: 18, 18 orig: 18, 18 offset: 0, 0 index: -1 unit-icon-ghoul rotate: false - xy: 496, 447 + xy: 305, 382 size: 18, 18 orig: 18, 18 offset: 0, 0 index: -1 phantom rotate: false - xy: 291, 192 + xy: 327, 34 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 unit-icon-phantom rotate: false - xy: 291, 192 + xy: 327, 34 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 power-cell rotate: false - xy: 227, 176 + xy: 794, 399 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 revenant rotate: false - xy: 686, 449 + xy: 259, 348 size: 28, 28 orig: 28, 28 offset: 0, 0 index: -1 unit-icon-revenant rotate: false - xy: 686, 449 + xy: 259, 348 size: 28, 28 orig: 28, 28 offset: 0, 0 index: -1 spirit rotate: false - xy: 839, 359 + xy: 173, 49 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 unit-icon-spirit rotate: false - xy: 839, 359 + xy: 173, 49 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 titan rotate: false - xy: 753, 395 + xy: 277, 112 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 titan-leg rotate: false - xy: 735, 359 + xy: 297, 224 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 artillery-equip rotate: false - xy: 257, 170 + xy: 186, 251 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 blaster-equip rotate: false - xy: 307, 167 + xy: 826, 403 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 bomber-equip rotate: false - xy: 335, 386 + xy: 840, 403 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 missiles-equip rotate: false - xy: 335, 386 + xy: 840, 403 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 chain-blaster-equip rotate: false - xy: 333, 372 + xy: 854, 403 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 flakgun-equip rotate: false - xy: 333, 288 + xy: 994, 403 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 flamethrower-equip rotate: false - xy: 331, 274 + xy: 1008, 403 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 heal-blaster-equip rotate: false - xy: 713, 345 + xy: 345, 132 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 shockgun-equip rotate: false - xy: 837, 373 + xy: 131, 49 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 swarmer-equip rotate: false - xy: 825, 345 + xy: 113, 21 size: 12, 12 orig: 12, 12 offset: 0, 0 diff --git a/core/assets/sprites/sprites.png b/core/assets/sprites/sprites.png index 53901c92d1..14160e2581 100644 Binary files a/core/assets/sprites/sprites.png and b/core/assets/sprites/sprites.png differ diff --git a/core/assets/ui/uiskin.json b/core/assets/ui/uiskin.json index 32020b418f..ab630372a6 100644 --- a/core/assets/ui/uiskin.json +++ b/core/assets/ui/uiskin.json @@ -5,8 +5,7 @@ Color: { gray: {a: 1, b: 0.32, g: 0.32, r: 0.32 }, lightgray: {a: 1, b: 0.65, g: 0.65, r: 0.65 } orange: {hex: "FFA500"}, - accent: {hex: "f4ba6e"}, - accentDark: {hex: "f4ba6e"}, + accent: {hex: "ffd37f"} }, TintedDrawable: { dialogDim: {name: white, color: {r: 0, g: 0, b: 0, a: 0.9} }, @@ -15,12 +14,12 @@ TintedDrawable: { chatfield: {name: white, color: {r: 0, g: 0, b: 0, a: 0.2}}, clear: {name: white, color: {r: 0.1, g: 0.1, b: 0.1, a: 0.75}}, none: {name: white, color: {r: 0, g: 0, b: 0, a: 0}}, - clear-over: {name: white, color: {r: 1, g: 1, b: 1, a: 0.2} }, - clear-down: {name: white, color: {r: 1, g: 1, b: 1, a: 0.4} } + clear-over: {name: white, color: { hex: "#ffffff82" }}, + clear-alpha: {name: white, color: { hex: "#ffd37fff" }}, + clear-down: {name: white, color: { hex: "#ffd37fff" }} }, ButtonStyle: { default: {down: button-down, up: button }, - menu: {up: text-sides, over: text-sides-over, down: text-sides-down}, toggle: {checked: button-down, down: button-down, up: button } }, TextButtonStyle: { @@ -28,6 +27,7 @@ TextButtonStyle: { discord: {font: default-font, fontColor: white, up: discord-banner}, info: {font: default-font, fontColor: white, up: info-banner}, clear: {down: clear-down, up: clear, over: clear-over, font: default-font, fontColor: white, disabledFontColor: gray }, + clear-partial: {down: white, up: button-select, over: clear-down, font: default-font, fontColor: white, disabledFontColor: gray }, empty: {font: default-font}, toggle: {font: default-font, fontColor: white, checked: button-down, down: button-down, up: button, over: button-over, disabled: button, disabledFontColor: gray } }, @@ -40,6 +40,9 @@ ImageButtonStyle: { toggle: {checked: button-down, down: button-down, up: button, imageDisabledColor: gray, imageUpColor: white }, select: {checked: button-select, up: none }, clear: {down: clear-down, up: clear, over: clear-over}, + clear-partial: {down: clear-down, up: none, over: clear-over}, + clear-toggle: {down: clear-down, checked: clear-down, up: clear, over: clear-over}, + clear-toggle-partial: {down: clear-down, checked: clear-down, up: none, over: clear-over}, }, ScrollPaneStyle: { default: {background: border, vScroll: scroll, vScrollKnob: scroll-knob-vertical-black}, diff --git a/core/src/io/anuke/mindustry/content/Recipes.java b/core/src/io/anuke/mindustry/content/Recipes.java index 08a7f8fac1..2028daebd0 100644 --- a/core/src/io/anuke/mindustry/content/Recipes.java +++ b/core/src/io/anuke/mindustry/content/Recipes.java @@ -43,38 +43,41 @@ public class Recipes implements ContentList{ new Recipe(defense, DefenseBlocks.surgeWallLarge, new ItemStack(Items.surgealloy, 12 * 4)); //projectors - new Recipe(defense, DefenseBlocks.mendProjector, new ItemStack(Items.lead, 200), new ItemStack(Items.densealloy, 150), new ItemStack(Items.titanium, 50), new ItemStack(Items.silicon, 180)); - new Recipe(defense, DefenseBlocks.overdriveProjector, new ItemStack(Items.lead, 200), new ItemStack(Items.densealloy, 150), new ItemStack(Items.titanium, 150), new ItemStack(Items.silicon, 250)); - new Recipe(defense, DefenseBlocks.forceProjector, new ItemStack(Items.lead, 200), new ItemStack(Items.densealloy, 150), new ItemStack(Items.titanium, 150), new ItemStack(Items.silicon, 250)); + new Recipe(effect, DefenseBlocks.mendProjector, new ItemStack(Items.lead, 200), new ItemStack(Items.densealloy, 150), new ItemStack(Items.titanium, 50), new ItemStack(Items.silicon, 180)); + new Recipe(effect, DefenseBlocks.overdriveProjector, new ItemStack(Items.lead, 200), new ItemStack(Items.densealloy, 150), new ItemStack(Items.titanium, 150), new ItemStack(Items.silicon, 250)); + new Recipe(effect, DefenseBlocks.forceProjector, new ItemStack(Items.lead, 200), new ItemStack(Items.densealloy, 150), new ItemStack(Items.titanium, 150), new ItemStack(Items.silicon, 250)); - //extra blocks - new Recipe(defense, DefenseBlocks.shockMine, new ItemStack(Items.lead, 50), new ItemStack(Items.silicon, 25)) + new Recipe(effect, StorageBlocks.unloader, new ItemStack(Items.densealloy, 50), new ItemStack(Items.silicon, 60)); + new Recipe(effect, StorageBlocks.container, new ItemStack(Items.densealloy, 200)); + new Recipe(effect, StorageBlocks.vault, new ItemStack(Items.densealloy, 500), new ItemStack(Items.thorium, 250)); + + new Recipe(effect, DefenseBlocks.shockMine, new ItemStack(Items.lead, 50), new ItemStack(Items.silicon, 25)) .setDependencies(Items.blastCompound); //TURRETS - new Recipe(weapon, TurretBlocks.duo, new ItemStack(Items.copper, 40)).setAlwaysUnlocked(true); - new Recipe(weapon, TurretBlocks.arc, new ItemStack(Items.copper, 50), new ItemStack(Items.lead, 30), new ItemStack(Items.silicon, 20)); - new Recipe(weapon, TurretBlocks.hail, new ItemStack(Items.copper, 60), new ItemStack(Items.densealloy, 35)); - new Recipe(weapon, TurretBlocks.lancer, new ItemStack(Items.copper, 50), new ItemStack(Items.lead, 100), new ItemStack(Items.silicon, 90)); - new Recipe(weapon, TurretBlocks.wave, new ItemStack(Items.densealloy, 60), new ItemStack(Items.titanium, 70), new ItemStack(Items.lead, 150)); - new Recipe(weapon, TurretBlocks.salvo, new ItemStack(Items.copper, 210), new ItemStack(Items.densealloy, 190), new ItemStack(Items.thorium, 130)); - new Recipe(weapon, TurretBlocks.swarmer, new ItemStack(Items.densealloy, 70), new ItemStack(Items.titanium, 70), new ItemStack(Items.plastanium, 90), new ItemStack(Items.silicon, 60)); - new Recipe(weapon, TurretBlocks.ripple, new ItemStack(Items.copper, 300), new ItemStack(Items.densealloy, 220), new ItemStack(Items.thorium, 120)); - new Recipe(weapon, TurretBlocks.cyclone, new ItemStack(Items.copper, 400), new ItemStack(Items.densealloy, 400), new ItemStack(Items.surgealloy, 200), new ItemStack(Items.plastanium, 150)); - new Recipe(weapon, TurretBlocks.fuse, new ItemStack(Items.copper, 450), new ItemStack(Items.densealloy, 450), new ItemStack(Items.surgealloy, 250)); - new Recipe(weapon, TurretBlocks.spectre, new ItemStack(Items.copper, 700), new ItemStack(Items.densealloy, 600), new ItemStack(Items.surgealloy, 500), new ItemStack(Items.plastanium, 350), new ItemStack(Items.thorium, 500)); - new Recipe(weapon, TurretBlocks.meltdown, new ItemStack(Items.copper, 500), new ItemStack(Items.lead, 700), new ItemStack(Items.densealloy, 600), new ItemStack(Items.surgealloy, 650), new ItemStack(Items.silicon, 650)); + new Recipe(turret, TurretBlocks.duo, new ItemStack(Items.copper, 40)).setAlwaysUnlocked(true); + new Recipe(turret, TurretBlocks.arc, new ItemStack(Items.copper, 50), new ItemStack(Items.lead, 30), new ItemStack(Items.silicon, 20)); + new Recipe(turret, TurretBlocks.hail, new ItemStack(Items.copper, 60), new ItemStack(Items.densealloy, 35)); + new Recipe(turret, TurretBlocks.lancer, new ItemStack(Items.copper, 50), new ItemStack(Items.lead, 100), new ItemStack(Items.silicon, 90)); + new Recipe(turret, TurretBlocks.wave, new ItemStack(Items.densealloy, 60), new ItemStack(Items.titanium, 70), new ItemStack(Items.lead, 150)); + new Recipe(turret, TurretBlocks.salvo, new ItemStack(Items.copper, 210), new ItemStack(Items.densealloy, 190), new ItemStack(Items.thorium, 130)); + new Recipe(turret, TurretBlocks.swarmer, new ItemStack(Items.densealloy, 70), new ItemStack(Items.titanium, 70), new ItemStack(Items.plastanium, 90), new ItemStack(Items.silicon, 60)); + new Recipe(turret, TurretBlocks.ripple, new ItemStack(Items.copper, 300), new ItemStack(Items.densealloy, 220), new ItemStack(Items.thorium, 120)); + new Recipe(turret, TurretBlocks.cyclone, new ItemStack(Items.copper, 400), new ItemStack(Items.densealloy, 400), new ItemStack(Items.surgealloy, 200), new ItemStack(Items.plastanium, 150)); + new Recipe(turret, TurretBlocks.fuse, new ItemStack(Items.copper, 450), new ItemStack(Items.densealloy, 450), new ItemStack(Items.surgealloy, 250)); + new Recipe(turret, TurretBlocks.spectre, new ItemStack(Items.copper, 700), new ItemStack(Items.densealloy, 600), new ItemStack(Items.surgealloy, 500), new ItemStack(Items.plastanium, 350), new ItemStack(Items.thorium, 500)); + new Recipe(turret, TurretBlocks.meltdown, new ItemStack(Items.copper, 500), new ItemStack(Items.lead, 700), new ItemStack(Items.densealloy, 600), new ItemStack(Items.surgealloy, 650), new ItemStack(Items.silicon, 650)); //DISTRIBUTION new Recipe(distribution, DistributionBlocks.conveyor, new ItemStack(Items.copper, 1)).setAlwaysUnlocked(true); new Recipe(distribution, DistributionBlocks.titaniumconveyor, new ItemStack(Items.copper, 2), new ItemStack(Items.titanium, 1)); new Recipe(distribution, DistributionBlocks.phaseConveyor, new ItemStack(Items.phasefabric, 10), new ItemStack(Items.silicon, 15), new ItemStack(Items.lead, 20), new ItemStack(Items.densealloy, 20)); - //starter lead transportation + //starter transport new Recipe(distribution, DistributionBlocks.junction, new ItemStack(Items.copper, 2)).setAlwaysUnlocked(true); new Recipe(distribution, DistributionBlocks.router, new ItemStack(Items.copper, 6)).setAlwaysUnlocked(true); - //advanced densealloy transporation + //advanced densealloy transporat new Recipe(distribution, DistributionBlocks.distributor, new ItemStack(Items.densealloy, 8), new ItemStack(Items.copper, 8)); new Recipe(distribution, DistributionBlocks.sorter, new ItemStack(Items.densealloy, 4), new ItemStack(Items.copper, 4)); new Recipe(distribution, DistributionBlocks.overflowGate, new ItemStack(Items.densealloy, 4), new ItemStack(Items.copper, 8)); @@ -131,9 +134,6 @@ public class Recipes implements ContentList{ new Recipe(power, PowerBlocks.thoriumReactor, new ItemStack(Items.lead, 600), new ItemStack(Items.silicon, 400), new ItemStack(Items.densealloy, 300), new ItemStack(Items.thorium, 300)); new Recipe(power, PowerBlocks.rtgGenerator, new ItemStack(Items.lead, 200), new ItemStack(Items.silicon, 150), new ItemStack(Items.phasefabric, 50), new ItemStack(Items.plastanium, 150), new ItemStack(Items.thorium, 100)); - new Recipe(distribution, StorageBlocks.unloader, new ItemStack(Items.densealloy, 50), new ItemStack(Items.silicon, 60)); - new Recipe(distribution, StorageBlocks.container, new ItemStack(Items.densealloy, 200)); - new Recipe(distribution, StorageBlocks.vault, new ItemStack(Items.densealloy, 500), new ItemStack(Items.thorium, 250)); //core disabled due to being broken /*new Recipe(distribution, StorageBlocks.core, new ItemStack(Items.copper, 2000), new ItemStack(Items.densealloy, 1500), @@ -153,16 +153,16 @@ public class Recipes implements ContentList{ //UNITS - //bodies - new Recipe(units, UpgradeBlocks.dartPad, new ItemStack(Items.lead, 150), new ItemStack(Items.copper, 150), new ItemStack(Items.silicon, 200), new ItemStack(Items.titanium, 240)).setVisible(RecipeVisibility.desktopOnly); - new Recipe(units, UpgradeBlocks.tridentPad, new ItemStack(Items.lead, 250), new ItemStack(Items.copper, 250), new ItemStack(Items.silicon, 250), new ItemStack(Items.titanium, 300), new ItemStack(Items.plastanium, 200)); - new Recipe(units, UpgradeBlocks.javelinPad, new ItemStack(Items.lead, 350), new ItemStack(Items.silicon, 450), new ItemStack(Items.titanium, 500), new ItemStack(Items.plastanium, 400), new ItemStack(Items.phasefabric, 200)); - new Recipe(units, UpgradeBlocks.glaivePad, new ItemStack(Items.lead, 450), new ItemStack(Items.silicon, 650), new ItemStack(Items.titanium, 700), new ItemStack(Items.plastanium, 600), new ItemStack(Items.surgealloy, 200)); + //upgrades + new Recipe(upgrade, UpgradeBlocks.dartPad, new ItemStack(Items.lead, 150), new ItemStack(Items.copper, 150), new ItemStack(Items.silicon, 200), new ItemStack(Items.titanium, 240)).setVisible(RecipeVisibility.desktopOnly); + new Recipe(upgrade, UpgradeBlocks.tridentPad, new ItemStack(Items.lead, 250), new ItemStack(Items.copper, 250), new ItemStack(Items.silicon, 250), new ItemStack(Items.titanium, 300), new ItemStack(Items.plastanium, 200)); + new Recipe(upgrade, UpgradeBlocks.javelinPad, new ItemStack(Items.lead, 350), new ItemStack(Items.silicon, 450), new ItemStack(Items.titanium, 500), new ItemStack(Items.plastanium, 400), new ItemStack(Items.phasefabric, 200)); + new Recipe(upgrade, UpgradeBlocks.glaivePad, new ItemStack(Items.lead, 450), new ItemStack(Items.silicon, 650), new ItemStack(Items.titanium, 700), new ItemStack(Items.plastanium, 600), new ItemStack(Items.surgealloy, 200)); - new Recipe(units, UpgradeBlocks.alphaPad, new ItemStack(Items.lead, 200), new ItemStack(Items.densealloy, 100), new ItemStack(Items.copper, 150)).setVisible(RecipeVisibility.mobileOnly); - new Recipe(units, UpgradeBlocks.tauPad, new ItemStack(Items.lead, 250), new ItemStack(Items.densealloy, 250), new ItemStack(Items.copper, 250), new ItemStack(Items.silicon, 250)); - new Recipe(units, UpgradeBlocks.deltaPad, new ItemStack(Items.lead, 350), new ItemStack(Items.densealloy, 350), new ItemStack(Items.copper, 400), new ItemStack(Items.silicon, 450), new ItemStack(Items.thorium, 300)); - new Recipe(units, UpgradeBlocks.omegaPad, new ItemStack(Items.lead, 450), new ItemStack(Items.densealloy, 550), new ItemStack(Items.silicon, 650), new ItemStack(Items.thorium, 600), new ItemStack(Items.surgealloy, 240)); + new Recipe(upgrade, UpgradeBlocks.alphaPad, new ItemStack(Items.lead, 200), new ItemStack(Items.densealloy, 100), new ItemStack(Items.copper, 150)).setVisible(RecipeVisibility.mobileOnly); + new Recipe(upgrade, UpgradeBlocks.tauPad, new ItemStack(Items.lead, 250), new ItemStack(Items.densealloy, 250), new ItemStack(Items.copper, 250), new ItemStack(Items.silicon, 250)); + new Recipe(upgrade, UpgradeBlocks.deltaPad, new ItemStack(Items.lead, 350), new ItemStack(Items.densealloy, 350), new ItemStack(Items.copper, 400), new ItemStack(Items.silicon, 450), new ItemStack(Items.thorium, 300)); + new Recipe(upgrade, UpgradeBlocks.omegaPad, new ItemStack(Items.lead, 450), new ItemStack(Items.densealloy, 550), new ItemStack(Items.silicon, 650), new ItemStack(Items.thorium, 600), new ItemStack(Items.surgealloy, 240)); //actual unit related stuff new Recipe(units, UnitBlocks.spiritFactory, new ItemStack(Items.copper, 70), new ItemStack(Items.lead, 110), new ItemStack(Items.silicon, 130)); diff --git a/core/src/io/anuke/mindustry/core/Control.java b/core/src/io/anuke/mindustry/core/Control.java index 450773f1d3..075c7e1688 100644 --- a/core/src/io/anuke/mindustry/core/Control.java +++ b/core/src/io/anuke/mindustry/core/Control.java @@ -111,15 +111,6 @@ public class Control extends Module{ } state.set(State.playing); - - if(world.getSector() == null && !Settings.getBool("custom-warning-for-real-1", false)){ - threads.runGraphics(() -> ui.showInfo("$mode.custom.warning", () -> - ui.showInfo("$mode.custom.warning.read", () -> { - Settings.putBool("custom-warning-for-real-1", true); - Settings.save(); - }))); - - } }); Events.on(WorldLoadGraphicsEvent.class, event -> { diff --git a/core/src/io/anuke/mindustry/core/UI.java b/core/src/io/anuke/mindustry/core/UI.java index ab1c29244c..0d7ca96820 100644 --- a/core/src/io/anuke/mindustry/core/UI.java +++ b/core/src/io/anuke/mindustry/core/UI.java @@ -28,6 +28,7 @@ import io.anuke.ucore.scene.ui.TextField.TextFieldFilter; import io.anuke.ucore.scene.ui.TooltipManager; import io.anuke.ucore.scene.ui.layout.Table; import io.anuke.ucore.scene.ui.layout.Unit; +import io.anuke.ucore.util.Strings; import static io.anuke.mindustry.Vars.*; import static io.anuke.ucore.scene.actions.Actions.*; @@ -293,4 +294,16 @@ public class UI extends SceneModule{ dialog.keyDown(Keys.BACK, dialog::hide); dialog.show(); } + + public String formatAmount(int number){ + if(number >= 1000000){ + return Strings.toFixed(number / 1000000f, 1) + "[gray]mil[]"; + }else if(number >= 10000){ + return number / 1000 + "[gray]k[]"; + }else if(number >= 1000){ + return Strings.toFixed(number / 1000f, 1) + "[gray]k[]"; + }else{ + return number + ""; + } + } } diff --git a/core/src/io/anuke/mindustry/game/Unlocks.java b/core/src/io/anuke/mindustry/game/Unlocks.java index e2bbd5984b..bb2e384f68 100644 --- a/core/src/io/anuke/mindustry/game/Unlocks.java +++ b/core/src/io/anuke/mindustry/game/Unlocks.java @@ -4,16 +4,12 @@ import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.ObjectMap; import com.badlogic.gdx.utils.ObjectMap.Entry; import com.badlogic.gdx.utils.ObjectSet; -import io.anuke.mindustry.core.GameState.State; -import io.anuke.mindustry.net.Net; import io.anuke.mindustry.type.ContentType; import io.anuke.ucore.core.Settings; -import static io.anuke.mindustry.Vars.*; - /**Stores player unlocks. Clientside only.*/ public class Unlocks{ - private ObjectMap sets = new ObjectMap<>(); + ContentUnlockSet set = new ContentUnlockSet(); static{ Settings.setSerializer(ContentType.class, (stream, t) -> stream.writeInt(t.ordinal()), stream -> ContentType.values()[stream.readInt()]); @@ -21,7 +17,7 @@ public class Unlocks{ /** Returns whether or not this piece of content is unlocked yet.*/ public boolean isUnlocked(UnlockableContent content){ - return rootSet().isUnlocked(content) || currentSet().isUnlocked(content); + return set.isUnlocked(content); } /** @@ -32,77 +28,42 @@ public class Unlocks{ * @return whether or not this content was newly unlocked. */ public boolean unlockContent(UnlockableContent content){ - return !rootSet().isUnlocked(content) && currentSet().unlockContent(content); + return !set.isUnlocked(content) && currentSet().unlockContent(content); } private ContentUnlockSet currentSet(){ - //client connected to server: always return the IP-specific set - if(Net.client()){ - return getSet(Net.getLastIP()); - }else if((world.getSector() != null || state.mode.infiniteResources) || state.is(State.menu)){ //sector-sandbox have shared set - return rootSet(); - }else{ //per-mode set - return getSet(state.mode.name()); - } - } - - private ContentUnlockSet rootSet(){ - return getSet("root"); - } - - private ContentUnlockSet getSet(String name){ - if(!sets.containsKey(name)){ - sets.put(name, new ContentUnlockSet()); - } - return sets.get(name); + return set; } /** Returns whether unlockables have changed since the last save.*/ public boolean isDirty(){ - for(ContentUnlockSet set : sets.values()){ - if(set.isDirty()){ - return true; - } - } - return false; + return set.isDirty(); } /** Clears all unlocked content. Automatically saves.*/ public void reset(){ - sets.clear(); save(); } public void load(){ - sets.clear(); + ObjectMap> outer = Settings.getObject("unlocks", ObjectMap.class, ObjectMap::new); + ContentUnlockSet cset = new ContentUnlockSet(); - ObjectMap>> result = Settings.getObject("content-sets", ObjectMap.class, ObjectMap::new); - - for(Entry>> outer : result.entries()){ - ContentUnlockSet cset = new ContentUnlockSet(); - for (Entry> entry : outer.value.entries()){ - ObjectSet set = new ObjectSet<>(); - set.addAll(entry.value); - cset.getUnlocked().put(entry.key, set); - } - sets.put(outer.key, cset); + for (Entry> entry : outer.entries()){ + ObjectSet set = new ObjectSet<>(); + set.addAll(entry.value); + cset.getUnlocked().put(entry.key, set); } } public void save(){ - ObjectMap>> output = new ObjectMap<>(); + ObjectMap> write = new ObjectMap<>(); - for(Entry centry : sets.entries()){ - ObjectMap> write = new ObjectMap<>(); - - for(Entry> entry : centry.value.getUnlocked().entries()){ - write.put(entry.key, entry.value.iterator().toArray()); - } - - output.put(centry.key, write); + for(Entry> entry : set.getUnlocked().entries()){ + write.put(entry.key, entry.value.iterator().toArray()); } - Settings.putObject("content-sets", output); + Settings.putObject("unlocks", write); Settings.save(); } diff --git a/core/src/io/anuke/mindustry/graphics/Palette.java b/core/src/io/anuke/mindustry/graphics/Palette.java index 645df794e6..437a36034c 100644 --- a/core/src/io/anuke/mindustry/graphics/Palette.java +++ b/core/src/io/anuke/mindustry/graphics/Palette.java @@ -29,6 +29,7 @@ public class Palette{ lightishGray = Color.valueOf("a2a2a2"), darkishGray = new Color(0.3f, 0.3f, 0.3f, 1f), + darkerGray = new Color(0.2f, 0.2f, 0.2f, 1f), boostTo = Color.valueOf("ffad4d"), boostFrom = Color.valueOf("ff7f57"), diff --git a/core/src/io/anuke/mindustry/input/InputHandler.java b/core/src/io/anuke/mindustry/input/InputHandler.java index 84b1563b22..36722ffe21 100644 --- a/core/src/io/anuke/mindustry/input/InputHandler.java +++ b/core/src/io/anuke/mindustry/input/InputHandler.java @@ -25,7 +25,7 @@ import io.anuke.ucore.core.Effects; import io.anuke.ucore.core.Graphics; import io.anuke.ucore.core.Inputs; import io.anuke.ucore.core.Timers; -import io.anuke.ucore.scene.Group; +import io.anuke.ucore.scene.ui.layout.Table; import io.anuke.ucore.util.Angles; import io.anuke.ucore.util.Mathf; import io.anuke.ucore.util.Translator; @@ -145,7 +145,7 @@ public abstract class InputHandler extends InputAdapter{ return false; } - public void buildUI(Group group){ + public void buildUI(Table table){ } diff --git a/core/src/io/anuke/mindustry/input/MobileInput.java b/core/src/io/anuke/mindustry/input/MobileInput.java index 0197d323e0..b0761dfb7e 100644 --- a/core/src/io/anuke/mindustry/input/MobileInput.java +++ b/core/src/io/anuke/mindustry/input/MobileInput.java @@ -30,8 +30,7 @@ import io.anuke.mindustry.world.Tile; import io.anuke.ucore.core.*; import io.anuke.ucore.graphics.Draw; import io.anuke.ucore.graphics.Lines; -import io.anuke.ucore.scene.Group; -import io.anuke.ucore.scene.event.Touchable; +import io.anuke.ucore.scene.ui.layout.Table; import io.anuke.ucore.util.Mathf; import static io.anuke.mindustry.Vars.*; @@ -208,78 +207,53 @@ public class MobileInput extends InputHandler implements GestureListener{ //region UI and drawing @Override - public void buildUI(Group group){ + public void buildUI(Table table){ + table.addImage("blank").color(Palette.accent).height(3f).colspan(4).growX(); + table.row(); + table.left().margin(0f).defaults().size(48f); - //Create confirm/cancel table - group.fill(c -> { - c.bottom().left().visible(() -> !state.is(State.menu)); + table.addImageButton("icon-break", "clear-toggle-partial", 16 * 2f, () -> { + mode = mode == breaking ? recipe == null ? none : placing : breaking; + lastRecipe = recipe; + if(mode == breaking){ + showGuide("deconstruction"); + } + }).update(l -> l.setChecked(mode == breaking)); - c.table("pane", act -> { - act.margin(5); - act.defaults().size(60f); + //rotate button + table.addImageButton("icon-arrow", "clear-partial", 16 * 2f, () -> rotation = Mathf.mod(rotation + 1, 4)) + .update(i -> i.getImage().setRotationOrigin(rotation * 90, Align.center)) + .visible(() -> recipe != null && recipe.result.rotate); - //Add a cancel button - act.addImageButton("icon-cancel", 16*2f, () -> { - mode = none; - recipe = null; - }); + //cancel button + table.addImageButton("icon-cancel", "clear-partial", 16 * 2f, () -> { + player.clearBuilding(); + mode = none; + recipe = null; + }).visible(() -> player.isBuilding() || mode != none); - act.row(); + //confirm button + table.addImageButton("icon-check", "clear-partial", 16 * 2f, () -> { + for(PlaceRequest request : selection){ + Tile tile = request.tile(); - //Add an accept button, which places everything. - act.addImageButton("icon-check", 16 * 2f, () -> { - for(PlaceRequest request : selection){ - Tile tile = request.tile(); - - //actually place/break all selected blocks - if(tile != null){ - if(!request.remove){ - rotation = request.rotation; - recipe = request.recipe; - tryPlaceBlock(tile.x, tile.y); - }else{ - tryBreakBlock(tile.x, tile.y); - } - } + //actually place/break all selected blocks + if(tile != null){ + if(!request.remove){ + rotation = request.rotation; + recipe = request.recipe; + tryPlaceBlock(tile.x, tile.y); + }else{ + tryBreakBlock(tile.x, tile.y); } + } + } - //move all current requests to removal array so they fade out - removals.addAll(selection); - selection.clear(); - selecting = false; - }).disabled(i -> selection.size == 0); - - act.row(); - - //Add a rotate button - act.addImageButton("icon-arrow", 16 * 2f, () -> rotation = Mathf.mod(rotation + 1, 4)) - .update(i -> i.getImage().setRotationOrigin(rotation * 90, Align.center)) - .disabled(i -> recipe == null || !recipe.result.rotate); - }).visible(() -> mode != none).touchable(Touchable.enabled); - - c.row(); - - c.table("pane", remove -> { - remove.defaults().size(60f); - - //Add a break button. - remove.addImageButton("icon-break", "toggle", 16 * 2f, () -> { - mode = mode == breaking ? recipe == null ? none : placing : breaking; - lastRecipe = recipe; - if(mode == breaking){ - showGuide("deconstruction"); - } - }).update(l -> l.setChecked(mode == breaking)); - }).margin(5).touchable(Touchable.enabled); - - c.table("pane", cancel -> { - cancel.defaults().size(60f); - - //Add a 'cancel building' button. - cancel.addImageButton("icon-cancel", 16 * 2f, player::clearBuilding); - - }).left().colspan(2).margin(5).touchable(Touchable.enabled).visible(() -> player.getPlaceQueue().size > 0); - }); + //move all current requests to removal array so they fade out + removals.addAll(selection); + selection.clear(); + selecting = false; + }).visible(() -> !selection.isEmpty()); } @Override diff --git a/core/src/io/anuke/mindustry/type/Category.java b/core/src/io/anuke/mindustry/type/Category.java index 6d75054b2f..6e5f7a621a 100644 --- a/core/src/io/anuke/mindustry/type/Category.java +++ b/core/src/io/anuke/mindustry/type/Category.java @@ -1,5 +1,24 @@ package io.anuke.mindustry.type; public enum Category{ - weapon, production, distribution, liquid, power, defense, crafting, units + /**Offensive turrets.*/ + turret, + /**Blocks that produce raw resources, such as drills.*/ + production, + /**Blocks that move items around.*/ + distribution, + /**Blocks that move liquids around.*/ + liquid, + /**Blocks that generate or transport power.*/ + power, + /**Walls and other defensive structures.*/ + defense, + /**Blocks that craft things.*/ + crafting, + /**Blocks that create units.*/ + units, + /**Things that upgrade the player such as mech pads.*/ + upgrade, + /**Things for storage or passive effects.*/ + effect } diff --git a/core/src/io/anuke/mindustry/type/Recipe.java b/core/src/io/anuke/mindustry/type/Recipe.java index eed821961c..2b5d02fb57 100644 --- a/core/src/io/anuke/mindustry/type/Recipe.java +++ b/core/src/io/anuke/mindustry/type/Recipe.java @@ -23,6 +23,7 @@ import static io.anuke.mindustry.Vars.*; public class Recipe extends UnlockableContent{ private static ObjectMap recipeMap = new ObjectMap<>(); + private static Array returnArray = new Array<>(); public final Block result; public final ItemStack[] requirements; @@ -55,34 +56,15 @@ public class Recipe extends UnlockableContent{ recipeMap.put(result, this); } - /** - * Returns unlocked recipes in a category. - * Do not call on the server backend, as unlocking does not exist! - */ - public static void getUnlockedByCategory(Category category, Array arr){ - if(headless){ - throw new RuntimeException("Not implemented on the headless backend!"); - } - - arr.clear(); - for(Recipe r : content.recipes()){ - if(r.category == category && (control.unlocks.isUnlocked(r)) && - !((r.mode != null && r.mode != state.mode) || !r.visibility.shown())){ - arr.add(r); - } - } - } - - /** - * Returns all recipes in a category. - */ - public static void getByCategory(Category category, Array r){ - r.clear(); + /**Returns all non-hidden recipes in a category.*/ + public static Array getByCategory(Category category){ + returnArray.clear(); for(Recipe recipe : content.recipes()){ - if(recipe.category == category){ - r.add(recipe); + if(recipe.category == category && !recipe.isHidden()){ + returnArray.add(recipe); } } + return returnArray; } public static Recipe getByResult(Block block){ diff --git a/core/src/io/anuke/mindustry/ui/ImageStack.java b/core/src/io/anuke/mindustry/ui/ImageStack.java new file mode 100644 index 0000000000..2ca0063e48 --- /dev/null +++ b/core/src/io/anuke/mindustry/ui/ImageStack.java @@ -0,0 +1,14 @@ +package io.anuke.mindustry.ui; + +import com.badlogic.gdx.graphics.g2d.TextureRegion; +import io.anuke.ucore.scene.ui.Image; +import io.anuke.ucore.scene.ui.layout.Stack; + +public class ImageStack extends Stack{ + + public ImageStack(TextureRegion... regions){ + for(TextureRegion region : regions){ + add(new Image(region)); + } + } +} diff --git a/core/src/io/anuke/mindustry/ui/ItemDisplay.java b/core/src/io/anuke/mindustry/ui/ItemDisplay.java new file mode 100644 index 0000000000..4530d606f0 --- /dev/null +++ b/core/src/io/anuke/mindustry/ui/ItemDisplay.java @@ -0,0 +1,18 @@ +package io.anuke.mindustry.ui; + +import io.anuke.mindustry.type.Item; +import io.anuke.mindustry.type.ItemStack; +import io.anuke.ucore.scene.ui.layout.Table; + +/**An item image with text.*/ +public class ItemDisplay extends Table{ + + public ItemDisplay(Item item){ + this(item, 0); + } + + public ItemDisplay(Item item, int amount){ + add(new ItemImage(new ItemStack(item, amount))).size(8*3); + add(item.localizedName()).padLeft(4); + } +} diff --git a/core/src/io/anuke/mindustry/ui/ItemImage.java b/core/src/io/anuke/mindustry/ui/ItemImage.java index 709c2903c2..130916cb26 100644 --- a/core/src/io/anuke/mindustry/ui/ItemImage.java +++ b/core/src/io/anuke/mindustry/ui/ItemImage.java @@ -18,10 +18,12 @@ public class ItemImage extends Stack{ } public ItemImage(ItemStack stack){ - Table t = new Table().left().bottom(); - t.add(stack.amount + ""); - add(new Image(stack.item.region)); - add(t); + + if(stack.amount != 0){ + Table t = new Table().left().bottom(); + t.add(stack.amount + ""); + add(t); + } } } diff --git a/core/src/io/anuke/mindustry/ui/LiquidDisplay.java b/core/src/io/anuke/mindustry/ui/LiquidDisplay.java new file mode 100644 index 0000000000..f639dfe1c5 --- /dev/null +++ b/core/src/io/anuke/mindustry/ui/LiquidDisplay.java @@ -0,0 +1,14 @@ +package io.anuke.mindustry.ui; + +import io.anuke.mindustry.type.Liquid; +import io.anuke.ucore.scene.ui.Image; +import io.anuke.ucore.scene.ui.layout.Table; + +/**An ItemDisplay, but for liquids.*/ +public class LiquidDisplay extends Table{ + + public LiquidDisplay(Liquid liquid){ + add(new Image(liquid.getContentIcon())).size(8*3); + add(liquid.localizedName()).padLeft(3); + } +} diff --git a/core/src/io/anuke/mindustry/ui/SelectionTable.java b/core/src/io/anuke/mindustry/ui/SelectionTable.java deleted file mode 100644 index 27e41eeb43..0000000000 --- a/core/src/io/anuke/mindustry/ui/SelectionTable.java +++ /dev/null @@ -1,52 +0,0 @@ -package io.anuke.mindustry.ui; - -import com.badlogic.gdx.graphics.g2d.TextureRegion; -import io.anuke.mindustry.world.Block; -import io.anuke.mindustry.world.Tile; -import io.anuke.mindustry.world.blocks.OreBlock; -import io.anuke.ucore.core.Graphics; -import io.anuke.ucore.graphics.Draw; -import io.anuke.ucore.scene.style.TextureRegionDrawable; -import io.anuke.ucore.scene.ui.Image; -import io.anuke.ucore.scene.ui.layout.Table; -import io.anuke.ucore.util.Mathf; - -import static io.anuke.mindustry.Vars.world; - -public class SelectionTable extends Table{ - Tile lastTile; - - public SelectionTable(){ - super("clear"); - - margin(5f); - - update(() -> { - Block result; - Tile tile = world.tileWorld(Graphics.mouseWorld().x, Graphics.mouseWorld().y); - if(tile != null){ - tile = tile.target(); - result = tile.block().synthetic() ? tile.block() : tile.floor() instanceof OreBlock ? tile.floor() : null; - }else{ - result = null; - } - - if(result != null){ - lastTile = tile; - } - - getTranslation().y = Mathf.lerp(getTranslation().y, result == null ? -getHeight() : 0f, 0.2f); - }); - - Image image = new Image(new TextureRegionDrawable(new TextureRegion(Draw.region("clear")))); - image.update(() -> - ((TextureRegionDrawable)image.getDrawable()).setRegion(lastTile == null ? Draw.getBlankRegion() : - (lastTile.block().synthetic() ? lastTile.block() : lastTile.floor()).getDisplayIcon(lastTile))); - - add(image).size(8*5).padRight(4); - label(() -> lastTile == null ? "" : (lastTile.block().synthetic() ? lastTile.block() : lastTile.floor()).getDisplayName(lastTile)); - - pack(); - getTranslation().y = - getHeight(); - } -} diff --git a/core/src/io/anuke/mindustry/ui/dialogs/UnlocksDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/UnlocksDialog.java index 4d9411c4df..8b46947740 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/UnlocksDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/UnlocksDialog.java @@ -6,10 +6,10 @@ import io.anuke.mindustry.game.Content; import io.anuke.mindustry.game.UnlockableContent; import io.anuke.mindustry.graphics.Palette; import io.anuke.mindustry.type.ContentType; -import io.anuke.mindustry.world.meta.StatValue; import io.anuke.ucore.scene.event.HandCursorListener; import io.anuke.ucore.scene.ui.Image; import io.anuke.ucore.scene.ui.ScrollPane; +import io.anuke.ucore.scene.ui.Tooltip; import io.anuke.ucore.scene.ui.layout.Table; import io.anuke.ucore.scene.utils.UIUtils; @@ -65,7 +65,10 @@ public class UnlocksDialog extends FloatingDialog{ if(control.unlocks.isUnlocked(unlock)){ image.clicked(() -> Vars.ui.content.show(unlock)); - StatValue.addToolTip(image, unlock); + image.addListener(new Tooltip<>(new Table("clear"){{ + add(unlock.localizedName()); + margin(4); + }})); } if((++count) % maxWidth == 0){ diff --git a/core/src/io/anuke/mindustry/ui/fragments/BlockInventoryFragment.java b/core/src/io/anuke/mindustry/ui/fragments/BlockInventoryFragment.java index 6faed6e1ba..e193b04ed2 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/BlockInventoryFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/BlockInventoryFragment.java @@ -180,7 +180,9 @@ public class BlockInventoryFragment extends Fragment{ private String round(float f){ f = (int) f; - if(f >= 1000){ + if(f >= 1000000){ + return Strings.toFixed(f / 1000000f, 1) + "[gray]mil[]"; + }else if(f >= 1000){ return Strings.toFixed(f / 1000, 1) + "k"; }else{ return (int) f + ""; diff --git a/core/src/io/anuke/mindustry/ui/fragments/BlocksFragment.java b/core/src/io/anuke/mindustry/ui/fragments/BlocksFragment.java deleted file mode 100644 index 50c63e4596..0000000000 --- a/core/src/io/anuke/mindustry/ui/fragments/BlocksFragment.java +++ /dev/null @@ -1,349 +0,0 @@ -package io.anuke.mindustry.ui.fragments; - -import com.badlogic.gdx.Gdx; -import com.badlogic.gdx.graphics.Color; -import com.badlogic.gdx.graphics.g2d.TextureRegion; -import com.badlogic.gdx.math.Interpolation; -import com.badlogic.gdx.utils.Array; -import io.anuke.mindustry.core.GameState.State; -import io.anuke.mindustry.entities.TileEntity; -import io.anuke.mindustry.game.EventType.WorldLoadEvent; -import io.anuke.mindustry.input.InputHandler; -import io.anuke.mindustry.type.Category; -import io.anuke.mindustry.type.ItemStack; -import io.anuke.mindustry.type.Recipe; -import io.anuke.ucore.core.Core; -import io.anuke.ucore.core.Events; -import io.anuke.ucore.core.Graphics; -import io.anuke.ucore.scene.Element; -import io.anuke.ucore.scene.Group; -import io.anuke.ucore.scene.actions.Actions; -import io.anuke.ucore.scene.event.ClickListener; -import io.anuke.ucore.scene.event.InputEvent; -import io.anuke.ucore.scene.event.Touchable; -import io.anuke.ucore.scene.ui.*; -import io.anuke.ucore.scene.ui.layout.Stack; -import io.anuke.ucore.scene.ui.layout.Table; -import io.anuke.ucore.util.Mathf; -import io.anuke.ucore.util.Strings; - -import static io.anuke.mindustry.Vars.*; - -public class BlocksFragment extends Fragment{ - //number of block icon rows - private static final int rows = 4; - //number of category button rows - private static final int secrows = 4; - //size of each block icon - private static final float size = 48; - //maximum recipe rows - private static final int maxrow = 3; - /** Table containing description that is shown on top.*/ - private Table descTable; - /** Main table containing the whole menu.*/ - private Table mainTable; - /** Table for all section buttons and blocks.*/ - private Table selectTable; - /** Whether the whole thing is shown or hidden by the popup button.*/ - private boolean shown = true; - /** Recipe currently hovering over.*/ - private Recipe hoverRecipe; - /** Last category selected.*/ - private Category lastCategory; - /** Last block pane scroll Y position.*/ - private float lastScroll; - /** Temporary recipe array for storage*/ - private Array recipes = new Array<>(); - - public void build(Group parent){ - InputHandler input = control.input(0); - - parent.fill(container -> { - container.bottom().right().visible(() -> !state.is(State.menu)); - - mainTable = container.table(main -> { - - //add top description table - descTable = new Table("button"); - descTable.visible(() -> (hoverRecipe != null || input.recipe != null) && shown); //make sure it's visible when necessary - descTable.update(() -> { - if(state.is(State.menu)){ - descTable.clear(); - control.input(0).recipe = null; - } - // note: This is required because there is no direct connection between input.recipe and the description ui. - // If input.recipe gets set to null, a proper cleanup of the ui elements is required. - boolean anyRecipeShown = input.recipe != null || hoverRecipe != null; - boolean descriptionTableClean = descTable.getChildren().size == 0; - boolean cleanupRequired = (!anyRecipeShown && !descriptionTableClean); - if(cleanupRequired){ - descTable.clear(); - } - }); - - float w = 246f; - - main.add(descTable).width(w); - - main.row(); - - //now add the block selection menu - selectTable = main.table("pane", select -> {}) - .margin(10f).marginLeft(0f).marginRight(0f).marginTop(-5) - .touchable(Touchable.enabled).right().bottom().width(w).get(); - - }).bottom().right().get(); - }); - - Events.on(WorldLoadEvent.class, event -> rebuild()); - - rebuild(); - } - - /**Rebuilds the whole placement menu, attempting to preserve previous state.*/ - void rebuild(){ - selectTable.clear(); - - InputHandler input = control.input(0); - Stack stack = new Stack(); - ButtonGroup group = new ButtonGroup<>(); - Table catTable = selectTable; - - int cati = 0; - int checkedi = 0; - int rowsUsed = 0; - - //add categories - for(Category cat : Category.values()){ - //get recipes out by category - Recipe.getUnlockedByCategory(cat, recipes); - - //empty section, nothing to see here - if(recipes.size == 0){ - continue; - } - - //table where actual recipes go - Table recipeTable = new Table(); - recipeTable.margin(4).top().left().marginRight(15); - - //add a new row here when needed - if(cati % secrows == 0){ - catTable = new Table(); - selectTable.row(); - selectTable.add(catTable).colspan(secrows).padTop(-5).growX(); - } - - //add category button - ImageButton catb = catTable.addImageButton("icon-" + cat.name(), "toggle", 40, () -> { - if(!recipeTable.isVisible() && input.recipe != null){ - input.recipe = null; - } - lastCategory = cat; - stack.act(Gdx.graphics.getDeltaTime()); - stack.act(Gdx.graphics.getDeltaTime()); - }).growX().height(54).group(group) - .name("sectionbutton" + cat.name()).get(); - - if(lastCategory == cat || lastCategory == null){ - checkedi = cati; - lastCategory = cat; - } - - //scrollpane for recipes - ScrollPane pane = new ScrollPane(recipeTable, "clear-black"); - pane.setOverscroll(false, false); - pane.visible(catb::isChecked); - pane.setScrollYForce(lastScroll); - pane.update(() -> { - Element e = Core.scene.hit(Graphics.mouse().x, Graphics.mouse().y, true); - if(e != null && e.isDescendantOf(pane)){ - Core.scene.setScrollFocus(pane); - }else if(Core.scene.getScrollFocus() == pane){ - Core.scene.setScrollFocus(null); - } - - if(lastCategory == cat){ - lastScroll = pane.getVisualScrollY(); - } - }); - stack.add(pane); - - int i = 0; - - //add actual recipes - for(Recipe r : recipes){ - if((r.mode != null && r.mode != state.mode) || !r.visibility.shown()) continue; - - ImageButton image = new ImageButton(new TextureRegion(), "select"); - - TextureRegion[] regions = r.result.getCompactIcon(); - Stack istack = new Stack(); - for(TextureRegion region : regions){ - Image u = new Image(region); - u.update(() -> u.setColor(istack.getColor())); - istack.add(u); - } - - image.getImageCell().setActor(istack).size(size); - image.addChild(istack); - image.setTouchable(Touchable.enabled); - image.getImage().remove(); - - image.addListener(new ClickListener(){ - @Override - public void enter(InputEvent event, float x, float y, int pointer, Element fromActor){ - super.enter(event, x, y, pointer, fromActor); - if(hoverRecipe != r){ - hoverRecipe = r; - updateRecipe(r); - } - } - - @Override - public void exit(InputEvent event, float x, float y, int pointer, Element toActor){ - super.exit(event, x, y, pointer, toActor); - hoverRecipe = null; - updateRecipe(input.recipe); - } - }); - - image.clicked(() -> { - // note: input.recipe only gets set here during a click. - // during a hover only the visual description will be updated. - InputHandler handler = mobile ? input : control.input(0); - - boolean nothingSelectedYet = handler.recipe == null; - boolean selectedSomethingElse = !nothingSelectedYet && handler.recipe != r; - boolean shouldMakeSelection = nothingSelectedYet || selectedSomethingElse; - if(shouldMakeSelection){ - handler.recipe = r; - hoverRecipe = r; - updateRecipe(r); - }else{ - handler.recipe = null; - hoverRecipe = null; - updateRecipe(null); - } - }); - - recipeTable.add(image).size(size + 8); - - image.update(() -> { - image.setChecked(r == control.input(0).recipe); - TileEntity entity = players[0].getClosestCore(); - - if(entity == null) return; - - if(!state.mode.infiniteResources){ - for(ItemStack s : r.requirements){ - if(!entity.items.has(s.item, Mathf.ceil(s.amount))){ - istack.setColor(Color.GRAY); - return; - } - } - } - istack.setColor(Color.WHITE); - }); - - if(i % rows == rows - 1){ - rowsUsed = Math.max((i + 1) / rows, rowsUsed); - recipeTable.row(); - } - - i++; - } - - cati++; - } - - if(group.getButtons().size > 0){ - group.getButtons().get(checkedi).setChecked(true); - } - - selectTable.row(); - selectTable.add(stack).growX().left().top().colspan(Category.values().length).padBottom(-5).height((size + 12) * Math.min(rowsUsed, 3)); - } - - void toggle(float t, Interpolation ip){ - if(shown){ - shown = false; - mainTable.actions(Actions.translateBy(0, mainTable.getTranslation().y + (-mainTable.getHeight() - descTable.getHeight()), t, ip)); - }else{ - shown = true; - mainTable.actions(Actions.translateBy(0, -mainTable.getTranslation().y, t, ip)); - } - } - - private void updateRecipe(Recipe recipe){ - if(recipe == null){ - descTable.clear(); - return; - } - - descTable.clear(); - descTable.setTouchable(Touchable.enabled); - - descTable.defaults().left(); - descTable.left(); - descTable.margin(12); - - Table header = new Table(); - - descTable.add(header).left(); - - descTable.row(); - - TextureRegion[] regions = recipe.result.getCompactIcon(); - - Stack istack = new Stack(); - - for(TextureRegion region : regions) istack.add(new Image(region)); - - header.add(istack).size(8 * 5).padTop(4); - Label nameLabel = new Label(recipe.result.formalName); - nameLabel.setWrap(true); - header.add(nameLabel).padLeft(2).width(120f); - - header.addButton("?", () -> ui.content.show(recipe)).expandX().padLeft(3).top().right().size(40f, 44f).padTop(-2); - - descTable.add().pad(2); - - Table requirements = new Table(); - - descTable.row(); - - descTable.left(); - descTable.add(requirements); - - for(ItemStack stack : recipe.requirements){ - requirements.addImage(stack.item.region).size(8 * 3); - Label reqlabel = new Label(() -> { - TileEntity core = players[0].getClosestCore(); - if(core == null || state.mode.infiniteResources) return "*/*"; - - int amount = core.items.get(stack.item); - String color = (amount < stack.amount / 2f ? "[red]" : amount < stack.amount ? "[accent]" : "[white]"); - - return color + format(amount) + "[white]/" + stack.amount; - }); - - requirements.add(reqlabel).left(); - requirements.row(); - } - - descTable.row(); - } - - String format(int number){ - if(number >= 1000000){ - return Strings.toFixed(number / 1000000f, 1) + "[gray]mil[]"; - }else if(number >= 10000){ - return number / 1000 + "[gray]k[]"; - }else if(number >= 1000){ - return Strings.toFixed(number / 1000f, 1) + "[gray]k[]"; - }else{ - return number + ""; - } - } -} \ No newline at end of file diff --git a/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java b/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java index 3da203e15a..0aa55b3a29 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java @@ -16,7 +16,6 @@ import io.anuke.mindustry.net.Packets.AdminAction; import io.anuke.mindustry.type.Recipe; import io.anuke.mindustry.ui.IntFormat; import io.anuke.mindustry.ui.Minimap; -import io.anuke.mindustry.ui.SelectionTable; import io.anuke.mindustry.ui.dialogs.FloatingDialog; import io.anuke.ucore.core.*; import io.anuke.ucore.graphics.Hue; @@ -33,7 +32,7 @@ import io.anuke.ucore.util.Mathf; import static io.anuke.mindustry.Vars.*; public class HudFragment extends Fragment{ - public final BlocksFragment blockfrag = new BlocksFragment(); + public final PlacementFragment blockfrag = new PlacementFragment(); private ImageButton menu, flip; private Stack wavetable; @@ -199,12 +198,6 @@ public class HudFragment extends Fragment{ t.add("$text.saveload"); }); - //tapped block indicator - parent.fill(t -> { - t.bottom().visible(() -> !state.is(State.menu)); - t.add(new SelectionTable()); - }); - blockfrag.build(Core.scene.getRoot()); } @@ -231,7 +224,6 @@ public class HudFragment extends Fragment{ /**Show unlock notification for a new recipe.*/ public void showUnlock(Recipe recipe){ - blockfrag.rebuild(); //if there's currently no unlock notification... if(lastUnlockTable == null){ diff --git a/core/src/io/anuke/mindustry/ui/fragments/OverlayFragment.java b/core/src/io/anuke/mindustry/ui/fragments/OverlayFragment.java index fd861518ad..f19ec137a4 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/OverlayFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/OverlayFragment.java @@ -31,7 +31,7 @@ public class OverlayFragment extends Fragment{ config.build(group); consume.build(group); - input.buildUI(group); + //input.buildUI(group); } public void remove(){ diff --git a/core/src/io/anuke/mindustry/ui/fragments/PlacementFragment.java b/core/src/io/anuke/mindustry/ui/fragments/PlacementFragment.java new file mode 100644 index 0000000000..4eb3e6b7f6 --- /dev/null +++ b/core/src/io/anuke/mindustry/ui/fragments/PlacementFragment.java @@ -0,0 +1,230 @@ +package io.anuke.mindustry.ui.fragments; + +import com.badlogic.gdx.graphics.Color; +import com.badlogic.gdx.math.Interpolation; +import io.anuke.mindustry.core.GameState.State; +import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.graphics.Palette; +import io.anuke.mindustry.input.InputHandler; +import io.anuke.mindustry.type.Category; +import io.anuke.mindustry.type.ItemStack; +import io.anuke.mindustry.type.Recipe; +import io.anuke.mindustry.ui.ImageStack; +import io.anuke.mindustry.world.Block; +import io.anuke.mindustry.world.Tile; +import io.anuke.mindustry.world.blocks.OreBlock; +import io.anuke.ucore.core.Graphics; +import io.anuke.ucore.scene.Group; +import io.anuke.ucore.scene.actions.Actions; +import io.anuke.ucore.scene.event.Touchable; +import io.anuke.ucore.scene.ui.ButtonGroup; +import io.anuke.ucore.scene.ui.Image; +import io.anuke.ucore.scene.ui.ImageButton; +import io.anuke.ucore.scene.ui.layout.Table; +import io.anuke.ucore.util.Bundles; + +import static io.anuke.mindustry.Vars.*; + +public class PlacementFragment extends Fragment{ + final int rowWidth = 4; + + Category currentCategory = Category.turret; + Block hovered, lastDisplay; + Tile hoverTile; + Table blockTable, toggler; + boolean shown = true; + + @Override + public void build(Group parent){ + parent.fill(full -> { + toggler = full; + full.bottom().right().visible(() -> !state.is(State.menu)); + + full.table(frame -> { + InputHandler input = control.input(0); + + //rebuilds the category table with the correct recipes + Runnable rebuildCategory = () -> { + blockTable.clear(); + blockTable.top().margin(5); + + int index = 0; + + ButtonGroup group = new ButtonGroup<>(); + group.setMinCheckCount(0); + + for(Recipe recipe : Recipe.getByCategory(currentCategory)){ + + if(index++ % rowWidth == 0){ + blockTable.row(); + } + + boolean[] unlocked = {false}; + + ImageButton button = blockTable.addImageButton("icon-locked", "select", 8*4, () -> { + if(control.unlocks.isUnlocked(recipe)){ + input.recipe = input.recipe == recipe ? null : recipe; + } + }).size(46f).group(group).get(); + + button.update(() -> { //color unplacable things gray + boolean ulock = control.unlocks.isUnlocked(recipe); + TileEntity core = players[0].getClosestCore(); + Color color = core != null && core.items.has(recipe.requirements) ? Color.WHITE : ulock ? Color.GRAY : Color.WHITE; + button.forEach(elem -> elem.setColor(color)); + button.setChecked(input.recipe == recipe); + + if(ulock == unlocked[0]) return; + unlocked[0] = ulock; + + if(!ulock){ + button.replaceImage(new Image("icon-locked")); + }else{ + button.replaceImage(new ImageStack(recipe.result.getCompactIcon())); + } + }); + + if(!mobile){ + button.hovered(() -> hovered = recipe.result); + button.exited(() -> { + if(hovered == recipe.result){ + hovered = null; + } + }); + } + } + + blockTable.act(0f); + }; + + //top table with hover info + frame.table("clear", top -> { + top.add(new Table()).growX().update(topTable -> { + if((tileDisplayBlock() == null && lastDisplay == getSelected()) || + (tileDisplayBlock() != null && lastDisplay == tileDisplayBlock())) return; + + topTable.clear(); + topTable.top().left().margin(5); + + lastDisplay = getSelected(); + + if(lastDisplay != null){ //show selected recipe + topTable.table(header -> { + header.left(); + header.add(new ImageStack(lastDisplay.getCompactIcon())).size(8*4); + header.labelWrap(() -> + !control.unlocks.isUnlocked(Recipe.getByResult(lastDisplay)) ? Bundles.get("text.blocks.unknown") : lastDisplay.formalName) + .left().width(190f).padLeft(5); + header.add().growX(); + if(control.unlocks.isUnlocked(Recipe.getByResult(lastDisplay))){ + header.addButton("?", "clear-partial", () -> ui.content.show(Recipe.getByResult(lastDisplay))) + .size(8 * 5).padTop(-5).padRight(-5).right().grow(); + } + }).growX().left(); + topTable.row(); + //add requirement table + topTable.table(req -> { + req.top().left(); + + for(ItemStack stack : Recipe.getByResult(lastDisplay).requirements){ + req.table(line -> { + line.left(); + line.addImage(stack.item.region).size(8*2); + line.add(stack.item.localizedName()).color(Color.LIGHT_GRAY).padLeft(2).left(); + line.labelWrap(() -> { + TileEntity core = players[0].getClosestCore(); + if(core == null || state.mode.infiniteResources) return "*/*"; + + int amount = core.items.get(stack.item); + String color = (amount < stack.amount / 2f ? "[red]" : amount < stack.amount ? "[accent]" : "[white]"); + + return color + ui.formatAmount(amount) + "[white]/" + stack.amount; + }).padLeft(5); + }).left(); + req.row(); + } + }).growX().left().margin(3); + + }else if(tileDisplayBlock() != null){ //show selected tile + lastDisplay = tileDisplayBlock(); + topTable.add(new ImageStack(lastDisplay.getDisplayIcon(hoverTile))).size(8*4); + topTable.labelWrap(lastDisplay.getDisplayName(hoverTile)).left().width(190f).padLeft(5); + } + }); + top.row(); + top.addImage("blank").growX().color(Palette.accent).height(3f); + }).colspan(3).fillX().visible(() -> getSelected() != null || tileDisplayBlock() != null).touchable(Touchable.enabled); + frame.row(); + frame.table("clear", blocksSelect -> { + blocksSelect.table(blocks -> blockTable = blocks).grow(); + blocksSelect.row(); + blocksSelect.table(input::buildUI).growX(); + }).fillY().bottom().touchable(Touchable.enabled); + frame.addImage("blank").width(3f).fillY().color(Palette.accent); + frame.table(categories -> { + categories.defaults().size(50f); + + ButtonGroup group = new ButtonGroup<>(); + + for(Category cat : Category.values()){ + if(Recipe.getByCategory(cat).isEmpty()) continue; + + categories.addImageButton("icon-" + cat.name(), "clear-toggle", 16*2, () -> { + currentCategory = cat; + rebuildCategory.run(); + }).group(group); + + if(cat.ordinal() %2 == 1) categories.row(); + } + }).touchable(Touchable.enabled); + + rebuildCategory.run(); + }); + }); + } + + /**Returns the currently displayed block in the top box.*/ + Block getSelected(){ + Block toDisplay = null; + + //setup hovering tile + if(!ui.hasMouse()){ + Tile tile = world.tileWorld(Graphics.mouseWorld().x, Graphics.mouseWorld().y); + if(tile != null){ + hoverTile = tile.target(); + }else{ + hoverTile = null; + } + }else{ + hoverTile = null; + } + + //block currently selected + if(control.input(0).recipe != null){ + toDisplay = control.input(0).recipe.result; + } + + //block hovered on in build menu + if(hovered != null){ + toDisplay = hovered; + } + + return toDisplay; + } + + /**Returns the block currently being hovered over in the world.*/ + Block tileDisplayBlock(){ + return hoverTile == null ? null : hoverTile.block().synthetic() ? hoverTile.block() : hoverTile.floor() instanceof OreBlock ? hoverTile.floor() : null; + } + + /**Show or hide the placement menu.*/ + void toggle(float t, Interpolation ip){ + if(shown){ + shown = false; + toggler.actions(Actions.translateBy(toggler.getTranslation().x + toggler.getWidth(), 0, t, ip)); + }else{ + shown = true; + toggler.actions(Actions.translateBy(-toggler.getTranslation().x, 0, t, ip)); + } + } +} \ No newline at end of file diff --git a/core/src/io/anuke/mindustry/world/blocks/production/Drill.java b/core/src/io/anuke/mindustry/world/blocks/production/Drill.java index f0232c5cf3..212a71168b 100644 --- a/core/src/io/anuke/mindustry/world/blocks/production/Drill.java +++ b/core/src/io/anuke/mindustry/world/blocks/production/Drill.java @@ -16,14 +16,11 @@ import io.anuke.mindustry.world.consumers.ConsumeLiquid; import io.anuke.mindustry.world.meta.BlockGroup; import io.anuke.mindustry.world.meta.BlockStat; import io.anuke.mindustry.world.meta.StatUnit; -import io.anuke.mindustry.world.meta.StatValue; import io.anuke.ucore.core.Effects; import io.anuke.ucore.core.Effects.Effect; import io.anuke.ucore.core.Graphics; import io.anuke.ucore.core.Timers; import io.anuke.ucore.graphics.Draw; -import io.anuke.ucore.scene.ui.Image; -import io.anuke.ucore.scene.ui.layout.Cell; import io.anuke.ucore.util.Mathf; import static io.anuke.mindustry.Vars.content; @@ -135,8 +132,9 @@ public class Drill extends Block{ for(int i = 0; i < list.size; i++){ Item item = list.get(i); - Cell imageCell = table.addImage(item.name + "1").size(8 * 3).padRight(2).padLeft(2).padTop(3).padBottom(3); - StatValue.addToolTip(imageCell.getElement(), item); + + table.addImage(item.name + "1").size(8 * 3).padRight(2).padLeft(2).padTop(3).padBottom(3); + table.add(item.localizedName()); if(i != list.size - 1){ table.add("/"); } diff --git a/core/src/io/anuke/mindustry/world/meta/StatValue.java b/core/src/io/anuke/mindustry/world/meta/StatValue.java index ef3e51acef..df53cc2947 100644 --- a/core/src/io/anuke/mindustry/world/meta/StatValue.java +++ b/core/src/io/anuke/mindustry/world/meta/StatValue.java @@ -1,10 +1,5 @@ package io.anuke.mindustry.world.meta; -import io.anuke.mindustry.game.UnlockableContent; -import io.anuke.ucore.scene.Element; -import io.anuke.ucore.scene.ui.Image; -import io.anuke.ucore.scene.ui.Tooltip; -import io.anuke.ucore.scene.ui.layout.Cell; import io.anuke.ucore.scene.ui.layout.Table; /** @@ -13,37 +8,7 @@ import io.anuke.ucore.scene.ui.layout.Table; public interface StatValue{ /** * This method should provide all elements necessary to display this stat to the specified table. - * For example, a stat that is just text would add label to the table. + * For example, a stat that is just text would add a label to the table. */ void display(Table table); - - /** - * This method adds an icon image together with a tool tip which contains the name of the item. - * @param table the table to add the image cell to. - * @param item The item which provides the tool tip content. - * @return the image cell which was created. The cell is not yet sized or padded. - */ - static Cell addImageWithToolTip(Table table, UnlockableContent item){ - - // Create a table cell with a new image as provided by the item - Cell imageCell = table.addImage(item.getContentIcon()); - - // Retrieve the image and add a tool tip with the item's name - addToolTip(imageCell.getElement(), item); - - // Return the table cell for further processing (sizing, padding, ...) - return imageCell; - } - - /** - * Adds a tool tip containing the item's localized name to the given element. - * @param element The element to assign the tool tip to. - * @param item The item which provides the tool tip content. - */ - static void addToolTip(Element element, UnlockableContent item){ - element.addListener(new Tooltip<>(new Table("clear"){{ - add(item.localizedName()); - margin(4); - }})); - } } diff --git a/core/src/io/anuke/mindustry/world/meta/values/ItemFilterValue.java b/core/src/io/anuke/mindustry/world/meta/values/ItemFilterValue.java index 669f5baa2c..0f917dda71 100644 --- a/core/src/io/anuke/mindustry/world/meta/values/ItemFilterValue.java +++ b/core/src/io/anuke/mindustry/world/meta/values/ItemFilterValue.java @@ -2,12 +2,12 @@ package io.anuke.mindustry.world.meta.values; import com.badlogic.gdx.utils.Array; import io.anuke.mindustry.type.Item; +import io.anuke.mindustry.ui.ItemDisplay; import io.anuke.mindustry.world.meta.StatValue; import io.anuke.ucore.function.Predicate; -import io.anuke.ucore.scene.ui.Image; -import io.anuke.ucore.scene.ui.layout.Cell; import io.anuke.ucore.scene.ui.layout.Table; -import static io.anuke.mindustry.Vars.*; + +import static io.anuke.mindustry.Vars.content; public class ItemFilterValue implements StatValue{ private final Predicate filter; @@ -27,10 +27,7 @@ public class ItemFilterValue implements StatValue{ for(int i = 0; i < list.size; i++){ Item item = list.get(i); - Cell imageCell = table.addImage(item.region); - imageCell.size(8 * 3).padRight(2).padLeft(2); - - StatValue.addToolTip(imageCell.getElement(), item); + table.add(new ItemDisplay(item)).padRight(5); if(i != list.size - 1){ table.add("/"); diff --git a/core/src/io/anuke/mindustry/world/meta/values/ItemListValue.java b/core/src/io/anuke/mindustry/world/meta/values/ItemListValue.java index 7cb237296f..22e37ea7bd 100644 --- a/core/src/io/anuke/mindustry/world/meta/values/ItemListValue.java +++ b/core/src/io/anuke/mindustry/world/meta/values/ItemListValue.java @@ -3,11 +3,8 @@ package io.anuke.mindustry.world.meta.values; import io.anuke.mindustry.game.UnlockableContent; import io.anuke.mindustry.type.Item; import io.anuke.mindustry.type.ItemStack; -import io.anuke.mindustry.ui.ItemImage; +import io.anuke.mindustry.ui.ItemDisplay; import io.anuke.mindustry.world.meta.ContentStatValue; -import io.anuke.mindustry.world.meta.StatValue; -import io.anuke.ucore.scene.ui.Image; -import io.anuke.ucore.scene.ui.layout.Cell; import io.anuke.ucore.scene.ui.layout.Table; public class ItemListValue implements ContentStatValue{ @@ -41,17 +38,11 @@ public class ItemListValue implements ContentStatValue{ public void display(Table table){ if(items != null){ for(Item item : items){ - Cell imageCell = table.addImage(item.region); - imageCell.size(8 * 3).padRight(5); - - StatValue.addToolTip(imageCell.getElement(), item); + table.add(new ItemDisplay(item)); } }else{ for(ItemStack stack : stacks){ - ItemImage image = new ItemImage(stack); - table.add(image).size(8 * 3).padRight(5); - - StatValue.addToolTip(image, stack.item); + new ItemDisplay(stack.item, stack.amount); } } } diff --git a/core/src/io/anuke/mindustry/world/meta/values/ItemValue.java b/core/src/io/anuke/mindustry/world/meta/values/ItemValue.java index 269c537dc5..2b54142976 100644 --- a/core/src/io/anuke/mindustry/world/meta/values/ItemValue.java +++ b/core/src/io/anuke/mindustry/world/meta/values/ItemValue.java @@ -3,9 +3,8 @@ package io.anuke.mindustry.world.meta.values; import io.anuke.mindustry.game.UnlockableContent; import io.anuke.mindustry.type.Item; import io.anuke.mindustry.type.ItemStack; -import io.anuke.mindustry.ui.ItemImage; +import io.anuke.mindustry.ui.ItemDisplay; import io.anuke.mindustry.world.meta.ContentStatValue; -import io.anuke.mindustry.world.meta.StatValue; import io.anuke.ucore.scene.ui.layout.Table; public class ItemValue implements ContentStatValue{ @@ -22,9 +21,6 @@ public class ItemValue implements ContentStatValue{ @Override public void display(Table table){ - //TODO better implementation, quantity support - ItemImage image = new ItemImage(item); - table.add(image).size(8 * 3); - StatValue.addToolTip(image, item.item); + table.add(new ItemDisplay(item.item, item.amount)); } } diff --git a/core/src/io/anuke/mindustry/world/meta/values/LiquidFilterValue.java b/core/src/io/anuke/mindustry/world/meta/values/LiquidFilterValue.java index 9dc6a6bd0b..7c5d638be9 100644 --- a/core/src/io/anuke/mindustry/world/meta/values/LiquidFilterValue.java +++ b/core/src/io/anuke/mindustry/world/meta/values/LiquidFilterValue.java @@ -2,13 +2,12 @@ package io.anuke.mindustry.world.meta.values; import com.badlogic.gdx.utils.Array; import io.anuke.mindustry.type.Liquid; +import io.anuke.mindustry.ui.LiquidDisplay; import io.anuke.mindustry.world.meta.StatValue; import io.anuke.ucore.function.Predicate; -import io.anuke.ucore.scene.ui.Image; -import io.anuke.ucore.scene.ui.Tooltip; -import io.anuke.ucore.scene.ui.layout.Cell; import io.anuke.ucore.scene.ui.layout.Table; -import static io.anuke.mindustry.Vars.*; + +import static io.anuke.mindustry.Vars.content; public class LiquidFilterValue implements StatValue{ private final Predicate filter; @@ -26,10 +25,7 @@ public class LiquidFilterValue implements StatValue{ } for(int i = 0; i < list.size; i++){ - Liquid item = list.get(i); - - Cell imageCell = StatValue.addImageWithToolTip(table, item); - imageCell.size(8 * 3).padRight(2).padLeft(2).padTop(2).padBottom(2); + table.add(new LiquidDisplay(list.get(i))).padRight(5); if(i != list.size - 1){ table.add("/"); diff --git a/core/src/io/anuke/mindustry/world/meta/values/LiquidValue.java b/core/src/io/anuke/mindustry/world/meta/values/LiquidValue.java index d4d6734511..0dcc6c03c7 100644 --- a/core/src/io/anuke/mindustry/world/meta/values/LiquidValue.java +++ b/core/src/io/anuke/mindustry/world/meta/values/LiquidValue.java @@ -2,10 +2,8 @@ package io.anuke.mindustry.world.meta.values; import io.anuke.mindustry.game.UnlockableContent; import io.anuke.mindustry.type.Liquid; +import io.anuke.mindustry.ui.LiquidDisplay; import io.anuke.mindustry.world.meta.ContentStatValue; -import io.anuke.mindustry.world.meta.StatValue; -import io.anuke.ucore.scene.ui.Image; -import io.anuke.ucore.scene.ui.layout.Cell; import io.anuke.ucore.scene.ui.layout.Table; public class LiquidValue implements ContentStatValue{ @@ -22,7 +20,6 @@ public class LiquidValue implements ContentStatValue{ @Override public void display(Table table){ - Cell imageCell = StatValue.addImageWithToolTip(table, liquid); - imageCell.size(8 * 3); + table.add(new LiquidDisplay(liquid)); } }