diff --git a/android/src/io/anuke/mindustry/AndroidLauncher.java b/android/src/io/anuke/mindustry/AndroidLauncher.java index 4564fc8c08..ff729c7227 100644 --- a/android/src/io/anuke/mindustry/AndroidLauncher.java +++ b/android/src/io/anuke/mindustry/AndroidLauncher.java @@ -36,11 +36,7 @@ import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; -import java.text.DateFormat; -import java.text.NumberFormat; -import java.text.SimpleDateFormat; import java.util.ArrayList; -import java.util.Date; import static io.anuke.mindustry.Vars.*; @@ -55,17 +51,6 @@ public class AndroidLauncher extends PatchedAndroidApplication{ AndroidApplicationConfiguration config = new AndroidApplicationConfiguration(); config.useImmersiveMode = true; Platform.instance = new Platform(){ - DateFormat format = SimpleDateFormat.getDateTimeInstance(); - - @Override - public String format(Date date){ - return format.format(date); - } - - @Override - public String format(int number){ - return NumberFormat.getIntegerInstance().format(number); - } @Override public void addDialog(TextField field, int length){ @@ -133,6 +118,7 @@ public class AndroidLauncher extends PatchedAndroidApplication{ return true; } }; + try{ ProviderInstaller.installIfNeeded(this); }catch(GooglePlayServicesRepairableException e){ diff --git a/build.gradle b/build.gradle index 6aa109db1e..cefdf7d49c 100644 --- a/build.gradle +++ b/build.gradle @@ -25,7 +25,7 @@ allprojects { appName = 'Mindustry' gdxVersion = '1.9.8' roboVMVersion = '2.3.0' - uCoreVersion = '7a77659cc5bb22c586d73cde6e21b854962e7f64' + uCoreVersion = 'f5ae8c0d58b6b7b42e95e57114220b11beb43fb3' getVersionString = { String buildVersion = getBuildVersion() diff --git a/core/assets-raw/sprites/ui/empty-sector.png b/core/assets-raw/sprites/ui/empty-sector.png new file mode 100644 index 0000000000..9d17083c9e Binary files /dev/null and b/core/assets-raw/sprites/ui/empty-sector.png differ diff --git a/core/assets-raw/sprites/ui/icons/icon-mission-background.png b/core/assets-raw/sprites/ui/icons/icon-mission-background.png new file mode 100644 index 0000000000..2b88834d79 Binary files /dev/null and b/core/assets-raw/sprites/ui/icons/icon-mission-background.png differ diff --git a/core/assets-raw/sprites/ui/icons/icon-mission-battle.png b/core/assets-raw/sprites/ui/icons/icon-mission-battle.png new file mode 100644 index 0000000000..880db69769 Binary files /dev/null and b/core/assets-raw/sprites/ui/icons/icon-mission-battle.png differ diff --git a/core/assets-raw/sprites/ui/icons/icon-mission-defense.png b/core/assets-raw/sprites/ui/icons/icon-mission-defense.png new file mode 100644 index 0000000000..84bf574eb1 Binary files /dev/null and b/core/assets-raw/sprites/ui/icons/icon-mission-defense.png differ diff --git a/core/assets-raw/sprites/ui/icons/icon-mission-done.png b/core/assets-raw/sprites/ui/icons/icon-mission-done.png new file mode 100644 index 0000000000..a035434400 Binary files /dev/null and b/core/assets-raw/sprites/ui/icons/icon-mission-done.png differ diff --git a/core/assets-raw/sprites/ui/icons/icon-units.png b/core/assets-raw/sprites/ui/icons/icon-units.png index 2066ab2cdf..c6aa0c67a0 100644 Binary files a/core/assets-raw/sprites/ui/icons/icon-units.png and b/core/assets-raw/sprites/ui/icons/icon-units.png differ diff --git a/core/assets-raw/sprites/ui/sector-edge.png b/core/assets-raw/sprites/ui/sector-edge.png new file mode 100644 index 0000000000..db6adb5ea6 Binary files /dev/null and b/core/assets-raw/sprites/ui/sector-edge.png differ diff --git a/core/assets-raw/sprites/ui/sector-select.png b/core/assets-raw/sprites/ui/sector-select.png new file mode 100644 index 0000000000..f0b05a94f7 Binary files /dev/null and b/core/assets-raw/sprites/ui/sector-select.png differ diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 1f342c4348..d226feb2c6 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -53,7 +53,7 @@ text.mission.complete.body = Sector {0},{1} has been conquered. text.mission.wave = Survive[accent] {0}/{1} []waves\nWave in {2} text.mission.wave.enemies = Survive[accent] {0}/{1} []waves\n{2} Enemies text.mission.wave.enemy = Survive[accent] {0}/{1} []waves\n{2} Enemy -text.mission.wave.menu = Survive[accent] {0} []waves +text.mission.wave.menu = Survive[accent] {0}[] waves text.mission.battle = Destroy the enemy core text.mission.resource.menu = Obtain {0} x{1} text.mission.resource = Obtain {0}\:\n[accent]{1}/{2}[] @@ -268,6 +268,7 @@ text.error.invalidaddress = Invalid address. text.error.timedout = Timed out!\nMake sure the host has port forwarding set up, and that the address is correct! text.error.mismatch = Packet error:\npossible client/server version mismatch.\nMake sure you and the host have the latest version of Mindustry! text.error.alreadyconnected = Already connected. +text.error.mapnotfound = Map file not found! text.error.any = Unkown network error. text.settings.language = Language @@ -624,6 +625,7 @@ block.rtg-generator.name = RTG Generator block.spectre.name = Spectre block.meltdown.name = Meltdown block.container.name = Container +block.core.description = The most important building in the game. team.blue.name = blue team.red.name = red team.orange.name = orange @@ -668,7 +670,6 @@ tutorial.daggerfactory = Construct a[accent] dagger mech factory.[]\n\nThis will tutorial.router = Factories need resources to function.\nCreate a router to split conveyor resources. tutorial.dagger = Link power nodes to the factory.\nOnce requirements are met, a mech will be created.\n\nCreate more drills, generators and conveyors as necessary. tutorial.battle = The[LIGHT_GRAY] enemy[] has revealed their core.\nDestroy it with your unit and dagger mechs. -block.core.description = The most important building in the game. block.copper-wall.description = A cheap defensive block.\nUseful for protecting the core and turrets in the first few waves. block.copper-wall-large.description = A cheap defensive block.\nUseful for protecting the core and turrets in the first few waves.\nSpans multiple tiles. block.dense-alloy-wall.description = A standard defensive block.\nAdequate protection from enemies. diff --git a/core/assets/sprites/sprites.atlas b/core/assets/sprites/sprites.atlas index e498df9613..91e4f753de 100644 --- a/core/assets/sprites/sprites.atlas +++ b/core/assets/sprites/sprites.atlas @@ -6,5292 +6,5292 @@ filter: Nearest,Nearest repeat: none force-projector-top rotate: false - xy: 818, 424 + xy: 372, 361 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 mend-projector-top rotate: false - xy: 182, 227 + xy: 423, 374 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 overdrive-projector-top rotate: false - xy: 200, 248 + xy: 441, 374 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 bridge-conveyor-bridge rotate: false - xy: 426, 228 + xy: 315, 263 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 bridge-conveyor-end rotate: false - xy: 446, 238 + xy: 295, 243 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-0-1 rotate: false - xy: 406, 173 + xy: 319, 203 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-0-2 rotate: false - xy: 416, 173 + xy: 319, 193 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-0-3 rotate: false - xy: 426, 173 + xy: 319, 183 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-1-0 rotate: false - xy: 848, 364 + xy: 319, 173 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-1-1 rotate: false - xy: 858, 364 + xy: 319, 163 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-1-2 rotate: false - xy: 868, 364 + xy: 309, 153 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-1-3 rotate: false - xy: 878, 364 + xy: 309, 143 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-2-0 rotate: false - xy: 888, 364 + xy: 319, 153 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-2-1 rotate: false - xy: 898, 364 + xy: 319, 143 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-2-2 rotate: false - xy: 908, 364 + xy: 316, 133 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-2-3 rotate: false - xy: 918, 364 + xy: 325, 273 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-3-0 rotate: false - xy: 928, 364 + xy: 325, 263 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-3-1 rotate: false - xy: 938, 364 + xy: 335, 273 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-3-2 rotate: false - xy: 948, 364 + xy: 335, 263 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-3-3 rotate: false - xy: 958, 364 + xy: 325, 253 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-4-0 rotate: false - xy: 968, 368 + xy: 325, 243 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-4-1 rotate: false - xy: 978, 368 + xy: 335, 253 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-4-2 rotate: false - xy: 988, 368 + xy: 325, 233 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-4-3 rotate: false - xy: 846, 354 + xy: 335, 243 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-0-1 rotate: false - xy: 224, 158 + xy: 499, 166 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-0-2 rotate: false - xy: 234, 168 + xy: 499, 156 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-0-3 rotate: false - xy: 224, 148 + xy: 499, 146 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-1-0 rotate: false - xy: 234, 158 + xy: 316, 123 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-1-1 rotate: false - xy: 224, 138 + xy: 326, 123 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-1-2 rotate: false - xy: 234, 148 + xy: 336, 123 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-1-3 rotate: false - xy: 224, 128 + xy: 346, 123 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-2-0 rotate: false - xy: 234, 138 + xy: 356, 123 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-2-1 rotate: false - xy: 234, 128 + xy: 366, 123 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-2-2 rotate: false - xy: 244, 166 + xy: 376, 123 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-2-3 rotate: false - xy: 254, 166 + xy: 386, 123 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-3-0 rotate: false - xy: 244, 156 + xy: 396, 123 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-3-1 rotate: false - xy: 244, 146 + xy: 406, 123 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-3-2 rotate: false - xy: 254, 156 + xy: 416, 133 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-3-3 rotate: false - xy: 244, 136 + xy: 416, 123 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-4-0 rotate: false - xy: 254, 146 + xy: 426, 136 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-4-1 rotate: false - xy: 254, 136 + xy: 426, 126 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-4-2 rotate: false - xy: 244, 126 + xy: 436, 136 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-4-3 rotate: false - xy: 254, 126 + xy: 436, 126 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 mass-driver-turret rotate: false - xy: 532, 396 + xy: 647, 452 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 phase-conveyor-arrow rotate: false - xy: 201, 27 + xy: 419, 156 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 phase-conveyor-bridge rotate: false - xy: 201, 17 + xy: 429, 166 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 phase-conveyor-end rotate: false - xy: 201, 7 + xy: 439, 176 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 warp-gate-top rotate: false - xy: 818, 398 + xy: 933, 452 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 blast-drill rotate: false - xy: 601, 450 + xy: 113, 191 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 blast-drill-rim rotate: false - xy: 627, 450 + xy: 294, 337 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 blast-drill-rotator rotate: false - xy: 653, 450 + xy: 320, 337 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 blast-drill-top rotate: false - xy: 679, 450 + xy: 268, 309 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 laser-drill rotate: false - xy: 552, 378 + xy: 398, 363 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 laser-drill-rotator rotate: false - xy: 570, 378 + xy: 398, 345 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 laser-drill-top rotate: false - xy: 588, 378 + xy: 398, 327 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 mechanical-drill rotate: false - xy: 1006, 394 + xy: 398, 309 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 mechanical-drill-rotator rotate: false - xy: 1006, 376 + xy: 400, 291 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 mechanical-drill-top rotate: false - xy: 182, 245 + xy: 400, 273 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 oil-extractor rotate: false - xy: 558, 396 + xy: 673, 452 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 oil-extractor-liquid rotate: false - xy: 584, 396 + xy: 699, 452 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 oil-extractor-rotator rotate: false - xy: 610, 398 + xy: 725, 452 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 oil-extractor-top rotate: false - xy: 636, 398 + xy: 751, 452 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 plasma-drill rotate: false - xy: 924, 476 + xy: 958, 478 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 plasma-drill-rim rotate: false - xy: 958, 476 + xy: 59, 73 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 plasma-drill-rotator rotate: false - xy: 59, 71 + xy: 53, 39 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 plasma-drill-top rotate: false - xy: 53, 37 + xy: 423, 452 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pneumatic-drill rotate: false - xy: 200, 212 + xy: 452, 356 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 pneumatic-drill-rotator rotate: false - xy: 218, 208 + xy: 434, 320 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 pneumatic-drill-top rotate: false - xy: 236, 208 + xy: 452, 338 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 water-extractor rotate: false - xy: 254, 196 + xy: 488, 346 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 water-extractor-liquid rotate: false - xy: 272, 185 + xy: 488, 328 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 water-extractor-rotator rotate: false - xy: 290, 191 + xy: 490, 310 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 water-extractor-top rotate: false - xy: 308, 191 + xy: 490, 292 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 blackrock1 rotate: false - xy: 160, 217 + xy: 543, 354 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-blackrock rotate: false - xy: 160, 217 + xy: 543, 354 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackrockshadow1 rotate: false - xy: 149, 206 + xy: 566, 366 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackstone1 rotate: false - xy: 139, 195 + xy: 576, 366 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-blackstone rotate: false - xy: 139, 195 + xy: 576, 366 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackstone2 rotate: false - xy: 170, 217 + xy: 586, 366 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackstone3 rotate: false - xy: 149, 196 + xy: 596, 366 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackstoneedge rotate: false - xy: 108, 95 + xy: 398, 381 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 coal1 rotate: false - xy: 436, 228 + xy: 305, 253 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 coal2 rotate: false - xy: 426, 218 + xy: 315, 253 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 coal3 rotate: false - xy: 446, 228 + xy: 305, 243 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 copper1 rotate: false - xy: 856, 354 + xy: 325, 223 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 copper2 rotate: false - xy: 866, 354 + xy: 325, 213 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 copper3 rotate: false - xy: 876, 354 + xy: 335, 233 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirt2 rotate: false - xy: 946, 354 + xy: 329, 163 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirt3 rotate: false - xy: 956, 354 + xy: 329, 153 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirtedge rotate: false - xy: 710, 368 + xy: 854, 404 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 generic-cliff-edge rotate: false - xy: 528, 352 + xy: 345, 243 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ice-cliff-edge rotate: false - xy: 528, 352 + xy: 345, 243 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 generic-cliff-edge-1 rotate: false - xy: 538, 352 + xy: 355, 253 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ice-cliff-edge-1 rotate: false - xy: 538, 352 + xy: 355, 253 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 generic-cliff-edge-2 rotate: false - xy: 548, 352 + xy: 375, 263 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ice-cliff-edge-2 rotate: false - xy: 548, 352 + xy: 375, 263 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 generic-cliff-side rotate: false - xy: 558, 352 + xy: 345, 233 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ice-cliff-side rotate: false - xy: 558, 352 + xy: 345, 233 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grass-cliff-edge rotate: false - xy: 588, 352 + xy: 385, 263 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grass-cliff-edge-1 rotate: false - xy: 598, 352 + xy: 345, 223 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grass-cliff-edge-2 rotate: false - xy: 610, 354 + xy: 355, 233 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grass-cliff-side rotate: false - xy: 484, 314 + xy: 365, 243 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grass2 rotate: false - xy: 568, 352 + xy: 355, 243 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grass3 rotate: false - xy: 578, 352 + xy: 365, 253 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grassedge rotate: false - xy: 766, 368 + xy: 910, 404 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 ice2 rotate: false - xy: 484, 294 + xy: 395, 263 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ice3 rotate: false - xy: 490, 284 + xy: 345, 213 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 iceedge rotate: false - xy: 794, 368 + xy: 938, 404 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 icerock2 rotate: false - xy: 490, 274 + xy: 339, 203 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icerockshadow1 rotate: false - xy: 490, 264 + xy: 355, 223 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 rockshadow1 rotate: false - xy: 490, 264 + xy: 355, 223 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icerockshadow2 rotate: false - xy: 490, 254 + xy: 365, 233 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 rockshadow2 rotate: false - xy: 490, 254 + xy: 365, 233 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 lavaedge rotate: false - xy: 822, 368 + xy: 522, 388 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 lead1 rotate: false - xy: 966, 338 + xy: 369, 203 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 lead2 rotate: false - xy: 976, 338 + xy: 385, 223 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 lead3 rotate: false - xy: 986, 338 + xy: 395, 233 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor2 rotate: false - xy: 169, 197 + xy: 405, 233 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor3 rotate: false - xy: 159, 187 + xy: 339, 153 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor4 rotate: false - xy: 169, 187 + xy: 349, 163 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor5 rotate: false - xy: 179, 197 + xy: 359, 173 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor6 rotate: false - xy: 179, 187 + xy: 369, 183 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalflooredge rotate: false - xy: 406, 291 + xy: 550, 388 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 rock2 rotate: false - xy: 214, 132 + xy: 449, 166 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sand2 rotate: false - xy: 206, 112 + xy: 469, 186 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sand3 rotate: false - xy: 206, 102 + xy: 439, 146 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sandedge rotate: false - xy: 420, 336 + xy: 564, 388 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 shrubshadow rotate: false - xy: 220, 62 + xy: 479, 196 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snow2 rotate: false - xy: 220, 52 + xy: 479, 186 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snow3 rotate: false - xy: 211, 42 + xy: 479, 176 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snowedge rotate: false - xy: 420, 322 + xy: 592, 388 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 spaceedge rotate: false - xy: 448, 336 + xy: 606, 388 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 stone-cliff-edge rotate: false - xy: 229, 198 + xy: 489, 206 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stone-cliff-edge-1 rotate: false - xy: 219, 178 + xy: 489, 196 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stone-cliff-edge-2 rotate: false - xy: 239, 198 + xy: 489, 186 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stone-cliff-side rotate: false - xy: 229, 188 + xy: 489, 176 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stone2 rotate: false - xy: 219, 198 + xy: 495, 226 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stone3 rotate: false - xy: 219, 188 + xy: 495, 216 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stoneedge rotate: false - xy: 420, 308 + xy: 634, 388 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 taredge rotate: false - xy: 434, 308 + xy: 662, 388 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 thorium1 rotate: false - xy: 259, 186 + xy: 505, 230 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 thorium2 rotate: false - xy: 249, 176 + xy: 505, 220 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 thorium3 rotate: false - xy: 259, 176 + xy: 499, 206 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium1 rotate: false - xy: 269, 175 + xy: 499, 196 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium2 rotate: false - xy: 279, 175 + xy: 499, 186 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium3 rotate: false - xy: 224, 168 + xy: 499, 176 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 water-cliff-edge rotate: false - xy: 274, 165 + xy: 446, 126 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 water-cliff-edge-1 rotate: false - xy: 264, 155 + xy: 456, 136 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 water-cliff-edge-2 rotate: false - xy: 264, 145 + xy: 456, 126 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 water-cliff-side rotate: false - xy: 274, 155 + xy: 466, 136 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 wateredge rotate: false - xy: 462, 330 + xy: 508, 272 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 block-border rotate: false - xy: 149, 176 + xy: 666, 366 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-elevation rotate: false - xy: 149, 166 + xy: 676, 366 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 combustion-generator-top rotate: false - xy: 149, 166 + xy: 676, 366 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-middle rotate: false - xy: 452, 248 + xy: 295, 273 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pump-liquid rotate: false - xy: 452, 248 + xy: 295, 273 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-slope rotate: false - xy: 416, 238 + xy: 295, 263 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 border rotate: false - xy: 416, 228 + xy: 305, 273 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-liquid rotate: false - xy: 156, 76 + xy: 299, 193 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 cross-1 rotate: false - xy: 886, 354 + xy: 335, 223 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 cross-2 rotate: false - xy: 114, 55 + xy: 142, 1 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 cross-3 rotate: false - xy: 766, 424 + xy: 346, 335 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 cross-4 rotate: false - xy: 550, 476 + xy: 550, 478 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 nuclearreactor-shadow rotate: false - xy: 517, 448 + xy: 193, 240 size: 26, 26 orig: 26, 26 offset: 0, 0 index: -1 place-arrow rotate: false - xy: 209, 192 + xy: 449, 186 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ripples rotate: false - xy: 458, 270 + xy: 520, 364 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 rubble-1-0 rotate: false - xy: 272, 221 + xy: 418, 302 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 rubble-1-1 rotate: false - xy: 290, 227 + xy: 418, 284 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 rubble-2-0 rotate: false - xy: 308, 227 + xy: 436, 302 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 rubble-2-1 rotate: false - xy: 326, 232 + xy: 436, 284 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 rubble-3-0 rotate: false - xy: 714, 398 + xy: 829, 452 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 rubble-3-1 rotate: false - xy: 714, 398 + xy: 829, 452 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 shadow-1 rotate: false - xy: 446, 258 + xy: 532, 364 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 shadow-2 rotate: false - xy: 884, 404 + xy: 979, 458 size: 18, 18 orig: 18, 18 offset: 0, 0 index: -1 shadow-3 rotate: false - xy: 545, 448 + xy: 169, 207 size: 26, 26 orig: 26, 26 offset: 0, 0 index: -1 shadow-4 rotate: false - xy: 204, 334 + xy: 204, 336 size: 34, 34 orig: 34, 34 offset: 0, 0 index: -1 shadow-5 rotate: false - xy: 143, 263 + xy: 143, 265 size: 42, 42 orig: 42, 42 offset: 0, 0 index: -1 shadow-6 rotate: false - xy: 204, 370 + xy: 204, 372 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 shadow-corner rotate: false - xy: 458, 258 + xy: 520, 352 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 shadow-round-1 rotate: false - xy: 137, 215 + xy: 544, 364 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 shadow-round-2 rotate: false - xy: 904, 404 + xy: 999, 458 size: 18, 18 orig: 18, 18 offset: 0, 0 index: -1 shadow-round-3 rotate: false - xy: 573, 448 + xy: 266, 335 size: 26, 26 orig: 26, 26 offset: 0, 0 index: -1 shadow-round-4 rotate: false - xy: 319, 451 + xy: 319, 453 size: 34, 34 orig: 34, 34 offset: 0, 0 index: -1 shadow-rounded-2 rotate: false - xy: 924, 404 + xy: 488, 420 size: 18, 18 orig: 18, 18 offset: 0, 0 index: -1 shadow-shock-mine rotate: false - xy: 210, 52 + xy: 469, 146 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 bridge-conduit-arrow rotate: false - xy: 426, 238 + xy: 305, 263 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 bridge-conveyor-arrow rotate: false - xy: 426, 238 + xy: 305, 263 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 bridge-conduit-bridge rotate: false - xy: 416, 218 + xy: 295, 253 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 bridge-conduit-end rotate: false - xy: 436, 238 + xy: 315, 273 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-bottom rotate: false - xy: 456, 238 + xy: 295, 213 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-bottom-0 rotate: false - xy: 456, 228 + xy: 315, 233 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-bottom-1 rotate: false - xy: 456, 218 + xy: 305, 223 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-bottom-2 rotate: false - xy: 450, 208 + xy: 315, 223 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-bottom-3 rotate: false - xy: 460, 208 + xy: 305, 213 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-bottom-4 rotate: false - xy: 156, 106 + xy: 315, 213 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-bottom-5 rotate: false - xy: 156, 96 + xy: 299, 203 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-bottom-6 rotate: false - xy: 156, 86 + xy: 309, 203 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-top-0 rotate: false - xy: 166, 106 + xy: 309, 193 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-top-1 rotate: false - xy: 166, 96 + xy: 299, 183 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-top-2 rotate: false - xy: 166, 86 + xy: 309, 183 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-top-3 rotate: false - xy: 166, 76 + xy: 299, 173 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-top-4 rotate: false - xy: 970, 378 + xy: 309, 173 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-top-5 rotate: false - xy: 980, 378 + xy: 299, 163 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-top-6 rotate: false - xy: 990, 378 + xy: 309, 163 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquid-router-bottom rotate: false - xy: 180, 207 + xy: 385, 213 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquid-router-liquid rotate: false - xy: 190, 207 + xy: 379, 203 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquid-router-top rotate: false - xy: 159, 197 + xy: 395, 223 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquid-tank-bottom rotate: false - xy: 974, 424 + xy: 569, 452 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 liquid-tank-liquid rotate: false - xy: 113, 163 + xy: 595, 452 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 liquid-tank-top rotate: false - xy: 506, 396 + xy: 621, 452 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 phase-conduit-arrow rotate: false - xy: 191, 17 + xy: 439, 186 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 phase-conduit-bridge rotate: false - xy: 191, 7 + xy: 449, 196 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 phase-conduit-end rotate: false - xy: 201, 37 + xy: 459, 206 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pulse-conduit-top-0 rotate: false - xy: 209, 182 + xy: 459, 196 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pulse-conduit-top-1 rotate: false - xy: 209, 172 + xy: 469, 206 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pulse-conduit-top-2 rotate: false - xy: 204, 162 + xy: 419, 146 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pulse-conduit-top-3 rotate: false - xy: 204, 152 + xy: 429, 156 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pulse-conduit-top-4 rotate: false - xy: 204, 142 + xy: 439, 166 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pulse-conduit-top-5 rotate: false - xy: 204, 132 + xy: 449, 176 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pulse-conduit-top-6 rotate: false - xy: 204, 122 + xy: 459, 186 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 alpha-mech-pad rotate: false - xy: 1000, 412 + xy: 517, 434 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-alpha-mech-pad rotate: false - xy: 1000, 412 + xy: 517, 434 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 battery rotate: false - xy: 139, 205 + xy: 556, 366 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-battery rotate: false - xy: 139, 205 + xy: 556, 366 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 battery-large rotate: false - xy: 491, 450 + xy: 251, 236 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-icon-battery-large rotate: false - xy: 491, 450 + xy: 251, 236 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 fusion-reactor rotate: false - xy: 584, 476 + xy: 618, 478 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 fusion-reactor-bottom rotate: false - xy: 618, 476 + xy: 652, 478 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 fusion-reactor-light rotate: false - xy: 652, 476 + xy: 686, 478 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 fusion-reactor-plasma-0 rotate: false - xy: 686, 476 + xy: 720, 478 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 fusion-reactor-plasma-1 rotate: false - xy: 720, 476 + xy: 754, 478 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 fusion-reactor-plasma-2 rotate: false - xy: 754, 476 + xy: 788, 478 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 fusion-reactor-plasma-3 rotate: false - xy: 788, 476 + xy: 822, 478 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 fusion-reactor-top rotate: false - xy: 822, 476 + xy: 856, 478 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 rtg-generator-top rotate: false - xy: 214, 122 + xy: 459, 176 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 thorium-reactor-center rotate: false - xy: 740, 398 + xy: 855, 452 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 thorium-reactor-lights rotate: false - xy: 766, 398 + xy: 881, 452 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 turbine-generator-top rotate: false - xy: 362, 215 + xy: 472, 284 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 alloy-fuser rotate: false - xy: 64, 105 + xy: 64, 107 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 alloy-smelter rotate: false - xy: 964, 406 + xy: 99, 141 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-alloy-smelter rotate: false - xy: 964, 406 + xy: 99, 141 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 alloy-smelter-top rotate: false - xy: 982, 406 + xy: 99, 123 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 arc-smelter rotate: false - xy: 146, 245 + xy: 535, 434 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-arc-smelter rotate: false - xy: 146, 245 + xy: 535, 434 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 arc-smelter-top rotate: false - xy: 164, 245 + xy: 553, 434 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 silicon-smelter-top rotate: false - xy: 164, 245 + xy: 553, 434 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 biomattercompressor rotate: false - xy: 90, 146 + xy: 571, 434 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 biomattercompressor-frame0 rotate: false - xy: 90, 128 + xy: 589, 434 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 biomattercompressor-frame1 rotate: false - xy: 90, 110 + xy: 607, 434 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 biomattercompressor-frame2 rotate: false - xy: 108, 145 + xy: 625, 434 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 biomattercompressor-liquid rotate: false - xy: 108, 127 + xy: 643, 434 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 biomattercompressor-top rotate: false - xy: 108, 109 + xy: 661, 434 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 blast-mixer rotate: false - xy: 126, 145 + xy: 679, 434 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-blast-mixer rotate: false - xy: 126, 145 + xy: 679, 434 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 centrifuge-liquid rotate: false - xy: 89, 23 + xy: 106, 1 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 cryofluidmixer-bottom rotate: false - xy: 114, 37 + xy: 129, 93 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 cryofluidmixer-liquid rotate: false - xy: 132, 55 + xy: 147, 152 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 cryofluidmixer-top rotate: false - xy: 132, 37 + xy: 165, 145 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 cultivator rotate: false - xy: 266, 251 + xy: 183, 151 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 cultivator-middle rotate: false - xy: 107, 19 + xy: 201, 156 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 cultivator-top rotate: false - xy: 125, 19 + xy: 147, 134 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 lavasmelter rotate: false - xy: 1006, 346 + xy: 375, 213 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 oilrefinery rotate: false - xy: 179, 177 + xy: 339, 143 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 phase-weaver rotate: false - xy: 236, 244 + xy: 416, 338 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 phase-weaver-bottom rotate: false - xy: 218, 226 + xy: 434, 356 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 phase-weaver-weave rotate: false - xy: 236, 226 + xy: 416, 320 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 plastanium-compressor-top rotate: false - xy: 254, 232 + xy: 434, 338 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 pulverizer rotate: false - xy: 214, 162 + xy: 469, 196 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pulverizer-rotator rotate: false - xy: 214, 152 + xy: 429, 146 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 separator-liquid rotate: false - xy: 210, 62 + xy: 469, 156 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 core-open rotate: false - xy: 714, 424 + xy: 464, 392 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 core-top rotate: false - xy: 740, 424 + xy: 346, 361 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 sortedunloader rotate: false - xy: 221, 32 + xy: 495, 246 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-1 rotate: false - xy: 180, 217 + xy: 646, 366 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-1-top rotate: false - xy: 190, 217 + xy: 656, 366 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-2 rotate: false - xy: 126, 127 + xy: 697, 434 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-2-top rotate: false - xy: 126, 109 + xy: 715, 434 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-3 rotate: false - xy: 705, 450 + xy: 294, 311 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-3-top rotate: false - xy: 731, 450 + xy: 320, 311 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-4 rotate: false - xy: 30, 139 + xy: 30, 141 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-4-top rotate: false - xy: 355, 453 + xy: 355, 455 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 arc rotate: false - xy: 256, 370 + xy: 256, 372 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 arc-heat rotate: false - xy: 338, 358 + xy: 520, 342 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 cyclone rotate: false - xy: 792, 424 + xy: 346, 309 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 duo rotate: false - xy: 518, 352 + xy: 365, 263 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 fuse rotate: false - xy: 922, 424 + xy: 517, 452 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 hail rotate: false - xy: 484, 304 + xy: 375, 253 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 hail-heat rotate: false - xy: 269, 425 + xy: 348, 387 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 lancer rotate: false - xy: 516, 378 + xy: 985, 422 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 lancer-heat rotate: false - xy: 534, 378 + xy: 1003, 422 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 meltdown rotate: false - xy: 856, 476 + xy: 890, 478 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 meltdown-heat rotate: false - xy: 890, 476 + xy: 924, 478 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ripple rotate: false - xy: 662, 398 + xy: 777, 452 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 ripple-heat rotate: false - xy: 688, 398 + xy: 803, 452 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 salvo rotate: false - xy: 344, 232 + xy: 454, 302 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 salvo-heat rotate: false - xy: 362, 233 + xy: 454, 284 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 salvo-panel-left rotate: false - xy: 380, 233 + xy: 418, 266 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 salvo-panel-right rotate: false - xy: 398, 233 + xy: 436, 266 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 scatter rotate: false - xy: 216, 92 + xy: 459, 156 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 scorch rotate: false - xy: 216, 82 + xy: 469, 166 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 scorch-shoot rotate: false - xy: 210, 72 + xy: 459, 146 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 spectre rotate: false - xy: 386, 419 + xy: 454, 418 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 swarmer rotate: false - xy: 308, 209 + xy: 470, 338 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 wave rotate: false - xy: 326, 196 + xy: 490, 274 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 wave-liquid rotate: false - xy: 344, 196 + xy: 490, 256 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 dagger-factory-top rotate: false - xy: 89, 5 + xy: 140, 111 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 dagger-factory-top-open rotate: false - xy: 107, 1 + xy: 165, 127 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 fortress-factory rotate: false - xy: 844, 424 + xy: 372, 335 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 fortress-factory-top rotate: false - xy: 870, 424 + xy: 372, 309 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 ghoul-factory-top rotate: false - xy: 870, 424 + xy: 372, 309 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 titan-factory-top rotate: false - xy: 870, 424 + xy: 372, 309 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 fortress-factory-top-open rotate: false - xy: 896, 424 + xy: 491, 440 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 ghoul-factory-top-open rotate: false - xy: 896, 424 + xy: 491, 440 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 titan-factory-top-open rotate: false - xy: 896, 424 + xy: 491, 440 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 ghoul-factory rotate: false - xy: 948, 424 + xy: 543, 452 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 phantom-factory-top rotate: false - xy: 200, 230 + xy: 459, 374 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 phantom-factory-top-open rotate: false - xy: 218, 244 + xy: 416, 356 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 reconstructor-open rotate: false - xy: 254, 214 + xy: 452, 320 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 repair-point-turret rotate: false - xy: 214, 142 + xy: 439, 156 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 revenant-factory rotate: false - xy: 423, 450 + xy: 457, 452 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 revenant-factory-top rotate: false - xy: 457, 450 + xy: 187, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 revenant-factory-top-open rotate: false - xy: 187, 266 + xy: 282, 363 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 spirit-factory-top rotate: false - xy: 272, 203 + xy: 454, 266 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 spirit-factory-top-open rotate: false - xy: 290, 209 + xy: 470, 356 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 titan-factory rotate: false - xy: 792, 398 + xy: 907, 452 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 wraith-factory-top rotate: false - xy: 362, 197 + xy: 190, 115 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 wraith-factory-top-open rotate: false - xy: 380, 197 + xy: 208, 120 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 deflector-wall rotate: false - xy: 936, 354 + xy: 329, 173 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 deflector-wall-large rotate: false - xy: 125, 1 + xy: 183, 133 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 door-large-open rotate: false - xy: 143, 19 + xy: 201, 138 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 door-open rotate: false - xy: 508, 352 + xy: 345, 253 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 beam rotate: false - xy: 1022, 496 + xy: 1022, 498 size: 1, 12 orig: 1, 12 offset: 0, 0 index: -1 beam-end rotate: false - xy: 1, 2 + xy: 1, 4 size: 18, 18 orig: 18, 18 offset: 0, 0 index: -1 blank rotate: false - xy: 420, 450 + xy: 420, 452 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 bullet rotate: false - xy: 266, 365 + xy: 698, 403 size: 13, 13 orig: 13, 13 offset: 0, 0 index: -1 bullet-back rotate: false - xy: 93, 95 + xy: 713, 403 size: 13, 13 orig: 13, 13 offset: 0, 0 index: -1 casing rotate: false - xy: 402, 341 + xy: 113, 159 size: 2, 4 orig: 2, 4 offset: 0, 0 index: -1 clear rotate: false - xy: 90, 107 + xy: 187, 265 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 command-attack rotate: false - xy: 436, 218 + xy: 315, 243 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 command-idle rotate: false - xy: 446, 218 + xy: 295, 233 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 command-patrol rotate: false - xy: 430, 208 + xy: 295, 223 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 command-retreat rotate: false - xy: 440, 208 + xy: 305, 233 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 enemyarrow rotate: false - xy: 159, 166 + xy: 268, 300 size: 8, 7 orig: 8, 7 offset: 0, 0 index: -1 error rotate: false - xy: 724, 368 + xy: 868, 404 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 laser rotate: false - xy: 1022, 482 + xy: 1022, 484 size: 1, 12 orig: 1, 12 offset: 0, 0 index: -1 laser-end rotate: false - xy: 1000, 430 + xy: 197, 220 size: 18, 18 orig: 18, 18 offset: 0, 0 index: -1 laserfull rotate: false - xy: 844, 404 + xy: 197, 200 size: 18, 18 orig: 18, 18 offset: 0, 0 index: -1 minelaser rotate: false - xy: 1022, 468 + xy: 1022, 470 size: 1, 12 orig: 1, 12 offset: 0, 0 index: -1 minelaser-end rotate: false - xy: 864, 404 + xy: 959, 458 size: 18, 18 orig: 18, 18 offset: 0, 0 index: -1 missile rotate: false - xy: 111, 84 + xy: 412, 381 size: 9, 9 orig: 9, 9 offset: 0, 0 index: -1 missile-back rotate: false - xy: 401, 390 + xy: 477, 381 size: 9, 9 orig: 9, 9 offset: 0, 0 index: -1 scorch1 rotate: false - xy: 104, 171 + xy: 104, 173 size: 7, 25 orig: 7, 25 offset: 0, 0 index: -1 scorch2 rotate: false - xy: 221, 273 + xy: 79, 12 size: 7, 25 orig: 7, 25 offset: 0, 0 index: -1 scorch3 rotate: false - xy: 87, 44 + xy: 87, 46 size: 7, 25 orig: 7, 25 offset: 0, 0 index: -1 scorch4 rotate: false - xy: 137, 234 + xy: 90, 153 size: 7, 25 orig: 7, 25 offset: 0, 0 index: -1 scorch5 rotate: false - xy: 338, 368 + xy: 90, 126 size: 7, 25 orig: 7, 25 offset: 0, 0 index: -1 shell rotate: false - xy: 401, 379 + xy: 77, 1 size: 9, 9 orig: 9, 9 offset: 0, 0 index: -1 shell-back rotate: false - xy: 149, 216 + xy: 532, 353 size: 9, 9 orig: 9, 9 offset: 0, 0 index: -1 shot rotate: false - xy: 220, 72 + xy: 479, 206 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 transfer rotate: false - xy: 45, 15 + xy: 1019, 464 size: 1, 12 orig: 1, 12 offset: 0, 0 index: -1 transfer-arrow rotate: false - xy: 264, 165 + xy: 446, 136 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 transfer-end rotate: false - xy: 944, 404 + xy: 490, 400 size: 18, 18 orig: 18, 18 offset: 0, 0 index: -1 blackstone-cliff-edge rotate: false - xy: 139, 185 + xy: 606, 366 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackstone-cliff-edge-1 rotate: false - xy: 139, 175 + xy: 616, 366 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackstone-cliff-edge-2 rotate: false - xy: 139, 165 + xy: 626, 366 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackstone-cliff-side rotate: false - xy: 149, 186 + xy: 636, 366 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-arc rotate: false - xy: 626, 358 + xy: 208, 110 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-biomattercompressor rotate: false - xy: 298, 317 + xy: 733, 434 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-blast-drill rotate: false - xy: 757, 450 + xy: 113, 165 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-icon-bridge-conduit rotate: false - xy: 636, 358 + xy: 218, 110 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 bridge-conduit rotate: false - xy: 636, 358 + xy: 218, 110 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-bridge-conveyor rotate: false - xy: 646, 358 + xy: 228, 114 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 bridge-conveyor rotate: false - xy: 646, 358 + xy: 228, 114 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-centrifuge rotate: false - xy: 298, 299 + xy: 751, 434 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 centrifuge rotate: false - xy: 298, 299 + xy: 751, 434 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-combustion-generator rotate: false - xy: 656, 358 + xy: 238, 114 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 combustion-generator rotate: false - xy: 656, 358 + xy: 238, 114 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-command-center rotate: false - xy: 146, 227 + xy: 769, 434 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 command-center rotate: false - xy: 146, 227 + xy: 769, 434 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-conduit rotate: false - xy: 666, 358 + xy: 248, 114 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-container rotate: false - xy: 164, 227 + xy: 787, 434 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 container rotate: false - xy: 164, 227 + xy: 787, 434 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-conveyor rotate: false - xy: 676, 358 + xy: 258, 114 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-0-0 rotate: false - xy: 676, 358 + xy: 258, 114 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-copper-wall rotate: false - xy: 686, 358 + xy: 268, 114 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 copper-wall rotate: false - xy: 686, 358 + xy: 268, 114 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-copper-wall-large rotate: false - xy: 230, 280 + xy: 805, 434 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 copper-wall-large rotate: false - xy: 230, 280 + xy: 805, 434 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-core rotate: false - xy: 783, 450 + xy: 139, 170 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 core rotate: false - xy: 783, 450 + xy: 139, 170 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-icon-cryofluidmixer rotate: false - xy: 248, 280 + xy: 823, 434 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-cultivator rotate: false - xy: 312, 340 + xy: 841, 434 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-cyclone rotate: false - xy: 809, 450 + xy: 169, 181 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-icon-dagger-factory rotate: false - xy: 316, 322 + xy: 859, 434 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-dart-ship-pad rotate: false - xy: 316, 304 + xy: 877, 434 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 dart-ship-pad rotate: false - xy: 316, 304 + xy: 877, 434 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-deepwater rotate: false - xy: 696, 358 + xy: 278, 114 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 deepwater rotate: false - xy: 696, 358 + xy: 278, 114 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-delta-mech-pad rotate: false - xy: 330, 340 + xy: 895, 434 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 delta-mech-pad rotate: false - xy: 330, 340 + xy: 895, 434 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-dense-alloy-wall rotate: false - xy: 706, 358 + xy: 288, 114 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dense-alloy-wall rotate: false - xy: 706, 358 + xy: 288, 114 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-dense-alloy-wall-large rotate: false - xy: 334, 322 + xy: 913, 434 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 dense-alloy-wall-large rotate: false - xy: 334, 322 + xy: 913, 434 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-dirt rotate: false - xy: 716, 358 + xy: 298, 114 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirt1 rotate: false - xy: 716, 358 + xy: 298, 114 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-distributor rotate: false - xy: 334, 304 + xy: 931, 434 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 distributor rotate: false - xy: 334, 304 + xy: 931, 434 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-door rotate: false - xy: 726, 358 + xy: 954, 412 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 door rotate: false - xy: 726, 358 + xy: 954, 412 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-door-large rotate: false - xy: 347, 377 + xy: 117, 147 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 door-large rotate: false - xy: 347, 377 + xy: 117, 147 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-duo rotate: false - xy: 736, 358 + xy: 964, 412 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-force-projector rotate: false - xy: 835, 450 + xy: 217, 210 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 force-projector rotate: false - xy: 835, 450 + xy: 217, 210 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-icon-fortress-factory rotate: false - xy: 861, 450 + xy: 243, 210 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-icon-fuse rotate: false - xy: 887, 450 + xy: 195, 174 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-icon-fusion-reactor rotate: false - xy: 389, 453 + xy: 389, 455 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-icon-ghoul-factory rotate: false - xy: 913, 450 + xy: 221, 184 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-icon-glaive-ship-pad rotate: false - xy: 939, 450 + xy: 247, 184 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 glaive-ship-pad rotate: false - xy: 939, 450 + xy: 247, 184 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-icon-grass rotate: false - xy: 746, 358 + xy: 974, 412 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grass1 rotate: false - xy: 746, 358 + xy: 974, 412 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-hail rotate: false - xy: 756, 358 + xy: 984, 412 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-ice rotate: false - xy: 766, 358 + xy: 994, 412 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ice1 rotate: false - xy: 766, 358 + xy: 994, 412 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-icerock rotate: false - xy: 776, 358 + xy: 1004, 412 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icerock1 rotate: false - xy: 776, 358 + xy: 1004, 412 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-incinerator rotate: false - xy: 786, 358 + xy: 1014, 412 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 incinerator rotate: false - xy: 786, 358 + xy: 1014, 412 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-itemsource rotate: false - xy: 796, 358 + xy: 952, 402 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 itemsource rotate: false - xy: 796, 358 + xy: 952, 402 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-itemvoid rotate: false - xy: 806, 358 + xy: 962, 402 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 itemvoid rotate: false - xy: 806, 358 + xy: 962, 402 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-javelin-ship-pad rotate: false - xy: 365, 377 + xy: 117, 129 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 javelin-ship-pad rotate: false - xy: 365, 377 + xy: 117, 129 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-junction rotate: false - xy: 816, 358 + xy: 972, 402 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 junction rotate: false - xy: 816, 358 + xy: 972, 402 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-lancer rotate: false - xy: 383, 377 + xy: 949, 434 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-laser-drill rotate: false - xy: 394, 401 + xy: 967, 440 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-lava rotate: false - xy: 826, 358 + xy: 982, 402 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 lava rotate: false - xy: 826, 358 + xy: 982, 402 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-liquid-junction rotate: false - xy: 836, 362 + xy: 992, 402 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquid-junction rotate: false - xy: 836, 362 + xy: 992, 402 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-liquid-router rotate: false - xy: 476, 334 + xy: 1002, 402 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-liquid-tank rotate: false - xy: 965, 450 + xy: 269, 210 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-icon-liquidsource rotate: false - xy: 470, 284 + xy: 1012, 402 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquidsource rotate: false - xy: 470, 284 + xy: 1012, 402 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-mass-driver rotate: false - xy: 991, 450 + xy: 273, 184 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 mass-driver rotate: false - xy: 991, 450 + xy: 273, 184 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-icon-mechanical-drill rotate: false - xy: 348, 359 + xy: 985, 440 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-mechanical-pump rotate: false - xy: 470, 274 + xy: 508, 250 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 mechanical-pump rotate: false - xy: 470, 274 + xy: 508, 250 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-meltdown rotate: false - xy: 30, 105 + xy: 30, 107 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-icon-melter rotate: false - xy: 470, 264 + xy: 686, 366 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 melter rotate: false - xy: 470, 264 + xy: 686, 366 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-mend-projector rotate: false - xy: 348, 341 + xy: 1003, 440 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 mend-projector rotate: false - xy: 348, 341 + xy: 1003, 440 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-metalfloor rotate: false - xy: 470, 254 + xy: 228, 104 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor1 rotate: false - xy: 470, 254 + xy: 228, 104 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-oil-extractor rotate: false - xy: 113, 189 + xy: 221, 158 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-icon-omega-mech-pad rotate: false - xy: 506, 422 + xy: 247, 158 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 omega-mech-pad rotate: false - xy: 506, 422 + xy: 247, 158 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-icon-overdrive-projector rotate: false - xy: 366, 359 + xy: 490, 382 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 overdrive-projector rotate: false - xy: 366, 359 + xy: 490, 382 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-overflow-gate rotate: false - xy: 836, 352 + xy: 238, 104 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 overflow-gate rotate: false - xy: 836, 352 + xy: 238, 104 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-phantom-factory rotate: false - xy: 366, 341 + xy: 93, 89 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-phase-conduit rotate: false - xy: 476, 324 + xy: 248, 104 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 phase-conduit rotate: false - xy: 476, 324 + xy: 248, 104 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-phase-conveyor rotate: false - xy: 474, 314 + xy: 258, 104 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 phase-conveyor rotate: false - xy: 474, 314 + xy: 258, 104 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-phase-wall rotate: false - xy: 474, 304 + xy: 268, 104 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 phase-wall rotate: false - xy: 474, 304 + xy: 268, 104 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-phase-wall-large rotate: false - xy: 352, 323 + xy: 96, 55 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 phase-wall-large rotate: false - xy: 352, 323 + xy: 96, 55 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-phase-weaver rotate: false - xy: 352, 305 + xy: 111, 89 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-plasma-drill rotate: false - xy: 25, 71 + xy: 25, 73 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-icon-plastanium-compressor rotate: false - xy: 384, 359 + xy: 114, 55 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 plastanium-compressor rotate: false - xy: 384, 359 + xy: 114, 55 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-pneumatic-drill rotate: false - xy: 384, 341 + xy: 96, 37 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-power-node rotate: false - xy: 474, 294 + xy: 278, 104 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 power-node rotate: false - xy: 474, 294 + xy: 278, 104 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-power-node-large rotate: false - xy: 370, 323 + xy: 114, 37 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 power-node-large rotate: false - xy: 370, 323 + xy: 114, 37 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-powerinfinite rotate: false - xy: 480, 284 + xy: 288, 104 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 powerinfinite rotate: false - xy: 480, 284 + xy: 288, 104 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-powervoid rotate: false - xy: 480, 274 + xy: 298, 104 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 powervoid rotate: false - xy: 480, 274 + xy: 298, 104 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-pulse-conduit rotate: false - xy: 480, 264 + xy: 696, 368 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-pulverizer rotate: false - xy: 480, 254 + xy: 706, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-pyratite-mixer rotate: false - xy: 370, 305 + xy: 88, 19 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 pyratite-mixer rotate: false - xy: 370, 305 + xy: 88, 19 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-reconstructor rotate: false - xy: 388, 323 + xy: 106, 19 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 dagger-factory rotate: false - xy: 388, 323 + xy: 106, 19 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 phantom-factory rotate: false - xy: 388, 323 + xy: 106, 19 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 reconstructor rotate: false - xy: 388, 323 + xy: 106, 19 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 spirit-factory rotate: false - xy: 388, 323 + xy: 106, 19 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 wraith-factory rotate: false - xy: 388, 323 + xy: 106, 19 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-repair-point rotate: false - xy: 21, 1 + xy: 716, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 repair-point rotate: false - xy: 21, 1 + xy: 716, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-revenant-factory rotate: false - xy: 204, 300 + xy: 204, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-icon-ripple rotate: false - xy: 532, 422 + xy: 273, 158 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-icon-rock rotate: false - xy: 31, 1 + xy: 553, 354 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 rock1 rotate: false - xy: 31, 1 + xy: 553, 354 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-rotary-pump rotate: false - xy: 388, 305 + xy: 132, 55 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 rotary-pump rotate: false - xy: 388, 305 + xy: 132, 55 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-router rotate: false - xy: 41, 1 + xy: 563, 356 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 router rotate: false - xy: 41, 1 + xy: 563, 356 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-rtg-generator rotate: false - xy: 53, 19 + xy: 132, 37 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 rtg-generator rotate: false - xy: 53, 19 + xy: 132, 37 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-salvo rotate: false - xy: 71, 19 + xy: 124, 19 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-sand rotate: false - xy: 144, 155 + xy: 573, 356 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sand1 rotate: false - xy: 144, 155 + xy: 573, 356 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-scorch rotate: false - xy: 144, 145 + xy: 583, 356 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-separator rotate: false - xy: 144, 135 + xy: 593, 356 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 separator rotate: false - xy: 144, 135 + xy: 593, 356 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-shock-mine rotate: false - xy: 144, 125 + xy: 603, 356 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 shock-mine rotate: false - xy: 144, 125 + xy: 603, 356 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-shrub rotate: false - xy: 144, 115 + xy: 613, 356 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 shrub rotate: false - xy: 144, 115 + xy: 613, 356 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-silicon-smelter rotate: false - xy: 93, 77 + xy: 142, 19 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 silicon-smelter rotate: false - xy: 93, 77 + xy: 142, 19 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-smelter rotate: false - xy: 154, 156 + xy: 623, 356 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 smelter rotate: false - xy: 154, 156 + xy: 623, 356 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-snow rotate: false - xy: 154, 146 + xy: 633, 356 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snow1 rotate: false - xy: 154, 146 + xy: 633, 356 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-solar-panel rotate: false - xy: 154, 136 + xy: 643, 356 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 solar-panel rotate: false - xy: 154, 136 + xy: 643, 356 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-solar-panel-large rotate: false - xy: 558, 422 + xy: 53, 13 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 solar-panel-large rotate: false - xy: 558, 422 + xy: 53, 13 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-icon-solidifer rotate: false - xy: 154, 126 + xy: 653, 356 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 solidifer rotate: false - xy: 154, 126 + xy: 653, 356 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-sorter rotate: false - xy: 154, 116 + xy: 663, 356 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sorter rotate: false - xy: 154, 116 + xy: 663, 356 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-space rotate: false - xy: 159, 175 + xy: 673, 356 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 space rotate: false - xy: 159, 175 + xy: 673, 356 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-spawn rotate: false - xy: 164, 156 + xy: 683, 356 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 spawn rotate: false - xy: 164, 156 + xy: 683, 356 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-spectre rotate: false - xy: 516, 476 + xy: 516, 478 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-icon-spirit-factory rotate: false - xy: 122, 91 + xy: 165, 163 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-stone rotate: false - xy: 164, 146 + xy: 306, 130 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stone1 rotate: false - xy: 164, 146 + xy: 306, 130 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-surge-wall rotate: false - xy: 164, 136 + xy: 201, 100 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 surge-wall rotate: false - xy: 164, 136 + xy: 201, 100 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-surge-wall-large rotate: false - xy: 96, 59 + xy: 278, 291 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 surge-wall-large rotate: false - xy: 96, 59 + xy: 278, 291 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-swarmer rotate: false - xy: 96, 41 + xy: 277, 273 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-tar rotate: false - xy: 164, 126 + xy: 211, 100 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 tar rotate: false - xy: 164, 126 + xy: 211, 100 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-tau-mech-pad rotate: false - xy: 268, 287 + xy: 277, 255 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 tau-mech-pad rotate: false - xy: 268, 287 + xy: 277, 255 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-thermal-generator rotate: false - xy: 230, 262 + xy: 277, 237 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 thermal-generator rotate: false - xy: 230, 262 + xy: 277, 237 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-thermal-pump rotate: false - xy: 248, 262 + xy: 296, 293 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 thermal-pump rotate: false - xy: 248, 262 + xy: 296, 293 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-thorium-reactor rotate: false - xy: 584, 422 + xy: 27, 5 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 thorium-reactor rotate: false - xy: 584, 422 + xy: 27, 5 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-icon-thorium-wall rotate: false - xy: 164, 116 + xy: 693, 356 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 thorium-wall rotate: false - xy: 164, 116 + xy: 693, 356 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-thorium-wall-large rotate: false - xy: 266, 269 + xy: 314, 293 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 thorium-wall-large rotate: false - xy: 266, 269 + xy: 314, 293 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-titan-factory rotate: false - xy: 610, 424 + xy: 386, 395 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-icon-titanium-conveyor rotate: false - xy: 422, 248 + xy: 296, 283 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-0-0 rotate: false - xy: 422, 248 + xy: 296, 283 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-trident-ship-pad rotate: false - xy: 412, 398 + xy: 346, 291 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 trident-ship-pad rotate: false - xy: 412, 398 + xy: 346, 291 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-turbine-generator rotate: false - xy: 430, 398 + xy: 364, 291 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 turbine-generator rotate: false - xy: 430, 398 + xy: 364, 291 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-unloader rotate: false - xy: 432, 248 + xy: 306, 283 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 unloader rotate: false - xy: 432, 248 + xy: 306, 283 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-vault rotate: false - xy: 636, 424 + xy: 360, 387 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 vault rotate: false - xy: 636, 424 + xy: 360, 387 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-icon-warp-gate rotate: false - xy: 662, 424 + xy: 412, 392 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 warp-gate rotate: false - xy: 662, 424 + xy: 412, 392 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-icon-water rotate: false - xy: 442, 248 + xy: 316, 283 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 water rotate: false - xy: 442, 248 + xy: 316, 283 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-water-extractor rotate: false - xy: 448, 398 + xy: 382, 291 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-wave rotate: false - xy: 480, 394 + xy: 122, 111 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icon-wraith-factory rotate: false - xy: 27, 11 + xy: 88, 1 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 deepwater-cliff-edge rotate: false - xy: 896, 354 + xy: 335, 213 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 deepwater-cliff-edge-1 rotate: false - xy: 906, 354 + xy: 329, 203 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 deepwater-cliff-edge-2 rotate: false - xy: 916, 354 + xy: 329, 193 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 deepwater-cliff-side rotate: false - xy: 926, 354 + xy: 329, 183 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirt-cliff-edge rotate: false - xy: 968, 358 + xy: 329, 143 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirt-cliff-edge-1 rotate: false - xy: 978, 358 + xy: 326, 133 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirt-cliff-edge-2 rotate: false - xy: 988, 358 + xy: 345, 263 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirt-cliff-side rotate: false - xy: 498, 352 + xy: 355, 263 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 lava-cliff-edge rotate: false - xy: 966, 348 + xy: 405, 253 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 lava-cliff-edge-1 rotate: false - xy: 976, 348 + xy: 339, 173 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 lava-cliff-edge-2 rotate: false - xy: 986, 348 + xy: 349, 183 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 lava-cliff-side rotate: false - xy: 996, 346 + xy: 359, 193 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquid-icon-cryofluid rotate: false - xy: 1006, 336 + xy: 339, 163 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquid-icon-lava rotate: false - xy: 482, 350 + xy: 349, 173 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquid-icon-oil rotate: false - xy: 160, 207 + xy: 359, 183 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquid-icon-water rotate: false - xy: 170, 207 + xy: 369, 193 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 mech-icon-alpha-mech rotate: false - xy: 406, 333 + xy: 506, 354 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 mech-icon-dart-ship rotate: false - xy: 406, 319 + xy: 536, 388 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 mech-icon-delta-mech rotate: false - xy: 406, 305 + xy: 506, 340 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 mech-icon-omega-mech rotate: false - xy: 466, 358 + xy: 538, 402 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 mech-icon-tau-mech rotate: false - xy: 482, 360 + xy: 554, 402 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 mech-icon-trident-ship rotate: false - xy: 498, 362 + xy: 570, 402 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 trident-ship rotate: false - xy: 498, 362 + xy: 570, 402 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 metalfloor-cliff-edge rotate: false - xy: 189, 197 + xy: 379, 193 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor-cliff-edge-1 rotate: false - xy: 189, 187 + xy: 395, 213 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor-cliff-edge-2 rotate: false - xy: 169, 177 + xy: 389, 203 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor-cliff-side rotate: false - xy: 169, 167 + xy: 405, 223 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-blackstone1 rotate: false - xy: 179, 167 + xy: 336, 133 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-blackstone2 rotate: false - xy: 189, 177 + xy: 349, 153 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-blackstone3 rotate: false - xy: 189, 167 + xy: 359, 163 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-grass1 rotate: false - xy: 174, 157 + xy: 369, 173 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-grass2 rotate: false - xy: 174, 147 + xy: 379, 183 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-grass3 rotate: false - xy: 184, 157 + xy: 389, 193 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-ice1 rotate: false - xy: 174, 137 + xy: 405, 213 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-ice2 rotate: false - xy: 184, 147 + xy: 399, 203 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-ice3 rotate: false - xy: 174, 127 + xy: 349, 143 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-sand1 rotate: false - xy: 184, 137 + xy: 346, 133 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-sand2 rotate: false - xy: 174, 117 + xy: 359, 153 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-sand3 rotate: false - xy: 184, 127 + xy: 369, 163 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-snow1 rotate: false - xy: 184, 117 + xy: 379, 173 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-snow2 rotate: false - xy: 176, 107 + xy: 389, 183 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-snow3 rotate: false - xy: 176, 97 + xy: 399, 193 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-stone1 rotate: false - xy: 176, 87 + xy: 359, 143 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-stone2 rotate: false - xy: 176, 77 + xy: 356, 133 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-stone3 rotate: false - xy: 186, 107 + xy: 369, 153 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-copper-blackstone1 rotate: false - xy: 186, 97 + xy: 379, 163 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-copper-blackstone2 rotate: false - xy: 186, 87 + xy: 389, 173 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-copper-blackstone3 rotate: false - xy: 186, 77 + xy: 399, 183 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-copper-grass1 rotate: false - xy: 200, 202 + xy: 369, 143 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-copper-grass2 rotate: false - xy: 199, 192 + xy: 366, 133 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-copper-grass3 rotate: false - xy: 199, 182 + xy: 379, 153 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-copper-ice1 rotate: false - xy: 199, 172 + xy: 389, 163 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-copper-ice2 rotate: false - xy: 194, 157 + xy: 399, 173 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-copper-ice3 rotate: false - xy: 194, 147 + xy: 379, 143 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-copper-sand1 rotate: false - xy: 194, 137 + xy: 376, 133 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-copper-sand2 rotate: false - xy: 194, 127 + xy: 389, 153 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-copper-sand3 rotate: false - xy: 194, 117 + xy: 399, 163 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-copper-snow1 rotate: false - xy: 196, 107 + xy: 389, 143 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-copper-snow2 rotate: false - xy: 196, 97 + xy: 386, 133 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-copper-snow3 rotate: false - xy: 196, 87 + xy: 399, 153 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-copper-stone1 rotate: false - xy: 196, 77 + xy: 399, 143 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-copper-stone2 rotate: false - xy: 150, 66 + xy: 396, 133 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-copper-stone3 rotate: false - xy: 150, 56 + xy: 415, 256 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-blackstone1 rotate: false - xy: 160, 66 + xy: 415, 246 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-blackstone2 rotate: false - xy: 150, 46 + xy: 425, 256 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-blackstone3 rotate: false - xy: 160, 56 + xy: 425, 246 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-grass1 rotate: false - xy: 160, 46 + xy: 415, 236 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-grass2 rotate: false - xy: 170, 66 + xy: 435, 256 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-grass3 rotate: false - xy: 170, 56 + xy: 435, 246 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-ice1 rotate: false - xy: 170, 46 + xy: 415, 226 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-ice2 rotate: false - xy: 180, 67 + xy: 425, 236 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-ice3 rotate: false - xy: 180, 57 + xy: 445, 256 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-sand1 rotate: false - xy: 190, 67 + xy: 445, 246 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-sand2 rotate: false - xy: 180, 47 + xy: 415, 216 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-sand3 rotate: false - xy: 190, 57 + xy: 425, 226 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-snow1 rotate: false - xy: 190, 47 + xy: 435, 236 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-snow2 rotate: false - xy: 200, 67 + xy: 455, 256 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-snow3 rotate: false - xy: 200, 57 + xy: 455, 246 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-stone1 rotate: false - xy: 200, 47 + xy: 425, 216 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-stone2 rotate: false - xy: 322, 170 + xy: 435, 226 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-stone3 rotate: false - xy: 332, 170 + xy: 445, 236 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-blackstone1 rotate: false - xy: 342, 170 + xy: 465, 256 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-blackstone2 rotate: false - xy: 352, 170 + xy: 465, 246 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-blackstone3 rotate: false - xy: 362, 170 + xy: 435, 216 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-grass1 rotate: false - xy: 372, 170 + xy: 445, 226 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-grass2 rotate: false - xy: 382, 171 + xy: 455, 236 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-grass3 rotate: false - xy: 392, 171 + xy: 475, 256 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-ice1 rotate: false - xy: 438, 198 + xy: 475, 246 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-ice2 rotate: false - xy: 438, 188 + xy: 445, 216 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-ice3 rotate: false - xy: 448, 198 + xy: 455, 226 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-sand1 rotate: false - xy: 448, 188 + xy: 465, 236 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-sand2 rotate: false - xy: 458, 198 + xy: 455, 216 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-sand3 rotate: false - xy: 458, 188 + xy: 465, 226 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-snow1 rotate: false - xy: 446, 178 + xy: 475, 236 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-snow2 rotate: false - xy: 456, 178 + xy: 465, 216 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-snow3 rotate: false - xy: 446, 168 + xy: 475, 226 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-stone1 rotate: false - xy: 456, 168 + xy: 475, 216 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-stone2 rotate: false - xy: 468, 198 + xy: 409, 203 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-stone3 rotate: false - xy: 468, 188 + xy: 409, 193 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-blackstone1 rotate: false - xy: 466, 178 + xy: 409, 183 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-blackstone2 rotate: false - xy: 466, 168 + xy: 409, 173 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-blackstone3 rotate: false - xy: 476, 178 + xy: 409, 163 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-grass1 rotate: false - xy: 476, 168 + xy: 409, 153 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-grass2 rotate: false - xy: 161, 36 + xy: 409, 143 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-grass3 rotate: false - xy: 161, 26 + xy: 406, 133 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-ice1 rotate: false - xy: 161, 16 + xy: 419, 206 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-ice2 rotate: false - xy: 161, 6 + xy: 419, 196 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-ice3 rotate: false - xy: 171, 36 + xy: 429, 206 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-sand1 rotate: false - xy: 171, 26 + xy: 419, 186 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-sand2 rotate: false - xy: 171, 16 + xy: 429, 196 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-sand3 rotate: false - xy: 171, 6 + xy: 439, 206 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-snow1 rotate: false - xy: 181, 37 + xy: 419, 176 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-snow2 rotate: false - xy: 181, 27 + xy: 429, 186 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-snow3 rotate: false - xy: 191, 37 + xy: 439, 196 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-stone1 rotate: false - xy: 181, 17 + xy: 449, 206 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-stone2 rotate: false - xy: 191, 27 + xy: 419, 166 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-stone3 rotate: false - xy: 181, 7 + xy: 429, 176 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sand-cliff-edge rotate: false - xy: 206, 92 + xy: 449, 156 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sand-cliff-edge-1 rotate: false - xy: 206, 82 + xy: 459, 166 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sand-cliff-edge-2 rotate: false - xy: 216, 112 + xy: 469, 176 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sand-cliff-side rotate: false - xy: 216, 102 + xy: 449, 146 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snow-cliff-edge rotate: false - xy: 211, 32 + xy: 479, 166 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snow-cliff-edge-1 rotate: false - xy: 211, 22 + xy: 479, 156 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snow-cliff-edge-2 rotate: false - xy: 211, 12 + xy: 479, 146 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snow-cliff-side rotate: false - xy: 221, 42 + xy: 485, 246 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 space-cliff-edge rotate: false - xy: 221, 22 + xy: 485, 236 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 space-cliff-edge-1 rotate: false - xy: 221, 12 + xy: 485, 226 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 space-cliff-edge-2 rotate: false - xy: 211, 2 + xy: 485, 216 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 space-cliff-side rotate: false - xy: 221, 2 + xy: 495, 236 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 tar-cliff-edge rotate: false - xy: 229, 178 + xy: 489, 166 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 tar-cliff-edge-1 rotate: false - xy: 239, 188 + xy: 489, 156 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 tar-cliff-edge-2 rotate: false - xy: 239, 178 + xy: 489, 146 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 tar-cliff-side rotate: false - xy: 249, 186 + xy: 505, 240 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 unit-icon-dagger rotate: false - xy: 434, 294 + xy: 508, 300 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 unit-icon-fortress rotate: false - xy: 380, 215 + xy: 472, 266 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 unit-icon-titan rotate: false - xy: 398, 215 + xy: 488, 364 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 unit-icon-wraith rotate: false - xy: 448, 294 + xy: 508, 286 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 wraith rotate: false - xy: 448, 294 + xy: 508, 286 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 item-biomatter rotate: false - xy: 1008, 366 + xy: 405, 263 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-blast-compound rotate: false - xy: 998, 356 + xy: 339, 193 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-coal rotate: false - xy: 1008, 356 + xy: 355, 213 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-copper rotate: false - xy: 846, 344 + xy: 349, 203 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-dense-alloy rotate: false - xy: 856, 344 + xy: 365, 223 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-lead rotate: false - xy: 866, 344 + xy: 375, 233 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-phase-fabric rotate: false - xy: 876, 344 + xy: 385, 243 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-plastanium rotate: false - xy: 886, 344 + xy: 395, 253 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-pyratite rotate: false - xy: 896, 344 + xy: 339, 183 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-sand rotate: false - xy: 906, 344 + xy: 349, 193 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-silicon rotate: false - xy: 916, 344 + xy: 365, 213 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-stone rotate: false - xy: 926, 344 + xy: 359, 203 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-surge-alloy rotate: false - xy: 936, 344 + xy: 375, 223 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-thorium rotate: false - xy: 946, 344 + xy: 385, 233 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-titanium rotate: false - xy: 956, 344 + xy: 395, 243 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquid-icon rotate: false - xy: 996, 336 + xy: 405, 243 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 alpha-mech rotate: false - xy: 334, 395 + xy: 334, 397 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 alpha-mech-base rotate: false - xy: 296, 335 + xy: 99, 159 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 alpha-mech-leg rotate: false - xy: 90, 164 + xy: 332, 297 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 delta-mech rotate: false - xy: 668, 368 + xy: 812, 404 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 delta-mech-base rotate: false - xy: 682, 368 + xy: 826, 404 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 delta-mech-leg rotate: false - xy: 696, 368 + xy: 840, 404 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 omega-mech rotate: false - xy: 514, 362 + xy: 586, 402 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 omega-mech-armor rotate: false - xy: 530, 362 + xy: 602, 402 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 omega-mech-base rotate: false - xy: 546, 362 + xy: 618, 402 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 omega-mech-leg rotate: false - xy: 562, 362 + xy: 634, 402 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 tau-mech rotate: false - xy: 610, 364 + xy: 682, 402 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 tau-mech-base rotate: false - xy: 420, 294 + xy: 676, 388 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 tau-mech-leg rotate: false - xy: 448, 308 + xy: 508, 314 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 dart-ship rotate: false - xy: 654, 368 + xy: 798, 404 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 glaive-ship rotate: false - xy: 296, 349 + xy: 266, 366 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 mech-icon-glaive-ship rotate: false - xy: 296, 349 + xy: 266, 366 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 javelin-ship rotate: false - xy: 808, 368 + xy: 508, 382 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 mech-icon-javelin-ship rotate: false - xy: 808, 368 + xy: 508, 382 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 javelin-ship-shield rotate: false - xy: 466, 344 + xy: 506, 368 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 circle rotate: false - xy: 1, 307 + xy: 1, 309 size: 201, 201 orig: 201, 201 offset: 0, 0 index: -1 shape-3 rotate: false - xy: 204, 422 + xy: 204, 424 size: 63, 63 orig: 63, 63 offset: 0, 0 index: -1 border rotate: false - xy: 1, 22 + xy: 1, 24 size: 24, 40 split: 5, 5, 5, 10 orig: 24, 40 @@ -5299,7 +5299,7 @@ border index: -1 button rotate: false - xy: 282, 395 + xy: 282, 397 size: 24, 40 split: 10, 10, 6, 10 orig: 24, 40 @@ -5307,7 +5307,7 @@ button index: -1 textarea rotate: false - xy: 282, 395 + xy: 282, 397 size: 24, 40 split: 10, 10, 9, 11 orig: 24, 40 @@ -5315,7 +5315,7 @@ textarea index: -1 button-down rotate: false - xy: 64, 131 + xy: 64, 133 size: 24, 40 split: 10, 10, 6, 10 orig: 24, 40 @@ -5323,7 +5323,7 @@ button-down index: -1 button-over rotate: false - xy: 64, 131 + xy: 64, 133 size: 24, 40 split: 10, 10, 6, 10 orig: 24, 40 @@ -5331,7 +5331,7 @@ button-over index: -1 button-map rotate: false - xy: 256, 380 + xy: 256, 382 size: 24, 40 split: 10, 10, 5, 10 orig: 24, 40 @@ -5339,7 +5339,7 @@ button-map index: -1 button-map-down rotate: false - xy: 27, 29 + xy: 27, 31 size: 24, 40 split: 10, 10, 5, 10 orig: 24, 40 @@ -5347,7 +5347,7 @@ button-map-down index: -1 button-map-over rotate: false - xy: 27, 29 + xy: 27, 31 size: 24, 40 split: 10, 10, 5, 10 orig: 24, 40 @@ -5355,7 +5355,7 @@ button-map-over index: -1 button-select rotate: false - xy: 688, 424 + xy: 438, 392 size: 24, 24 split: 4, 4, 4, 4 orig: 24, 24 @@ -5363,798 +5363,833 @@ button-select index: -1 check-off rotate: false - xy: 992, 476 + xy: 992, 478 size: 28, 32 orig: 28, 32 offset: 0, 0 index: -1 check-on rotate: false - xy: 238, 298 + xy: 238, 300 size: 28, 32 orig: 28, 32 offset: 0, 0 index: -1 check-on-over rotate: false - xy: 420, 416 + xy: 316, 363 size: 28, 32 orig: 28, 32 offset: 0, 0 index: -1 check-over rotate: false - xy: 450, 416 + xy: 221, 266 size: 28, 32 orig: 28, 32 offset: 0, 0 index: -1 clear rotate: false - xy: 286, 293 + xy: 348, 399 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 cursor rotate: false - xy: 1000, 406 + xy: 163, 229 size: 4, 4 orig: 4, 4 offset: 0, 0 index: -1 discord-banner rotate: false - xy: 1, 217 + xy: 1, 219 size: 81, 42 orig: 81, 42 offset: 0, 0 index: -1 discord-banner-over rotate: false - xy: 1, 217 + xy: 1, 219 size: 81, 42 orig: 81, 42 offset: 0, 0 index: -1 +empty-sector + rotate: false + xy: 584, 478 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 controller-cursor rotate: false - xy: 122, 73 + xy: 124, 1 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-about rotate: false - xy: 362, 395 + xy: 90, 107 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-add rotate: false - xy: 378, 395 + xy: 93, 73 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-admin rotate: false - xy: 398, 199 + xy: 106, 107 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-admin-small rotate: false - xy: 386, 411 + xy: 386, 387 size: 6, 6 orig: 6, 6 offset: 0, 0 index: -1 icon-areaDelete rotate: false - xy: 286, 281 + xy: 183, 169 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-arrow rotate: false - xy: 880, 386 + xy: 273, 140 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-arrow-16 rotate: false - xy: 880, 386 + xy: 273, 140 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-arrow-down rotate: false - xy: 254, 250 + xy: 135, 153 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-arrow-left rotate: false - xy: 272, 239 + xy: 135, 141 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-arrow-right rotate: false - xy: 462, 318 + xy: 135, 129 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-arrow-up rotate: false - xy: 462, 306 + xy: 269, 427 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-back rotate: false - xy: 898, 386 + xy: 147, 93 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-ban rotate: false - xy: 290, 175 + xy: 109, 73 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-break rotate: false - xy: 916, 386 + xy: 141, 75 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-cancel rotate: false - xy: 934, 386 + xy: 165, 93 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-chat rotate: false - xy: 462, 294 + xy: 510, 408 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-check rotate: false - xy: 952, 386 + xy: 159, 75 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-crafting rotate: false - xy: 836, 372 + xy: 510, 396 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-cursor rotate: false - xy: 848, 374 + xy: 506, 328 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-defense rotate: false - xy: 860, 374 + xy: 954, 422 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-dev-builds rotate: false - xy: 306, 175 + xy: 125, 73 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-discord rotate: false - xy: 326, 180 + xy: 158, 111 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-distribution rotate: false - xy: 872, 374 + xy: 508, 260 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-donate rotate: false - xy: 342, 180 + xy: 174, 111 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-dots rotate: false - xy: 140, 93 + xy: 226, 124 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-editor rotate: false - xy: 140, 77 + xy: 242, 124 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-egg rotate: false - xy: 606, 380 + xy: 258, 124 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-elevation rotate: false - xy: 970, 388 + xy: 150, 57 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-eraser rotate: false - xy: 988, 388 + xy: 150, 39 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-exit rotate: false - xy: 622, 382 + xy: 274, 124 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-file rotate: false - xy: 298, 281 + xy: 168, 57 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-file-image rotate: false - xy: 316, 286 + xy: 168, 39 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-file-text rotate: false - xy: 638, 382 + xy: 290, 124 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-fill rotate: false - xy: 334, 286 + xy: 160, 21 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-floppy rotate: false - xy: 654, 382 + xy: 522, 418 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-floppy-16 rotate: false - xy: 352, 287 + xy: 160, 3 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-folder rotate: false - xy: 670, 382 + xy: 538, 418 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-folder-parent rotate: false - xy: 686, 382 + xy: 554, 418 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-generated rotate: false - xy: 269, 437 + xy: 269, 439 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 icon-github rotate: false - xy: 702, 382 + xy: 570, 418 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-google-play rotate: false - xy: 718, 382 + xy: 586, 418 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-grid rotate: false - xy: 370, 287 + xy: 177, 75 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-hold rotate: false - xy: 884, 374 + xy: 53, 1 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-holdDelete rotate: false - xy: 896, 374 + xy: 65, 1 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-home rotate: false - xy: 734, 382 + xy: 602, 418 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-host rotate: false - xy: 750, 382 + xy: 618, 418 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-info rotate: false - xy: 908, 374 + xy: 690, 390 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-itch.io rotate: false - xy: 766, 382 + xy: 634, 418 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-item rotate: false - xy: 920, 374 + xy: 702, 391 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-items-none rotate: false - xy: 436, 173 + xy: 375, 243 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-line rotate: false - xy: 388, 287 + xy: 183, 93 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-link rotate: false - xy: 782, 382 + xy: 650, 418 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-liquid rotate: false - xy: 932, 374 + xy: 714, 391 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-load rotate: false - xy: 798, 382 + xy: 666, 418 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-load-image rotate: false - xy: 284, 263 + xy: 186, 57 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-load-map rotate: false - xy: 302, 263 + xy: 186, 39 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-loading rotate: false - xy: 320, 268 + xy: 178, 21 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-locked rotate: false - xy: 338, 268 + xy: 178, 3 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-logic rotate: false - xy: 944, 374 + xy: 522, 376 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-map rotate: false - xy: 814, 382 + xy: 682, 418 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-menu rotate: false - xy: 956, 374 + xy: 534, 376 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-menu-large rotate: false - xy: 356, 269 + xy: 195, 75 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-missing rotate: false - xy: 410, 279 + xy: 546, 376 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 +icon-mission-background + rotate: false + xy: 84, 180 + size: 18, 18 + orig: 18, 18 + offset: 0, 0 + index: -1 +icon-mission-battle + rotate: false + xy: 558, 376 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 +icon-mission-defense + rotate: false + xy: 570, 376 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 +icon-mission-done + rotate: false + xy: 582, 376 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-none rotate: false - xy: 410, 267 + xy: 594, 376 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-nullitem rotate: false - xy: 998, 366 + xy: 385, 253 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-pause rotate: false - xy: 410, 255 + xy: 606, 376 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-pencil rotate: false - xy: 374, 269 + xy: 204, 57 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-pencil-small rotate: false - xy: 358, 180 + xy: 698, 418 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-pick rotate: false - xy: 392, 269 + xy: 204, 39 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-play rotate: false - xy: 422, 282 + xy: 618, 376 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-play-2 rotate: false - xy: 374, 181 + xy: 714, 418 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-players rotate: false - xy: 434, 282 + xy: 630, 376 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-power rotate: false - xy: 422, 270 + xy: 642, 376 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-production rotate: false - xy: 446, 282 + xy: 654, 376 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-quit rotate: false - xy: 390, 181 + xy: 730, 418 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-redo rotate: false - xy: 284, 245 + xy: 196, 21 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-refresh rotate: false - xy: 406, 183 + xy: 746, 418 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-rename rotate: false - xy: 414, 199 + xy: 762, 418 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-resize rotate: false - xy: 302, 245 + xy: 196, 3 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-rotate rotate: false - xy: 422, 183 + xy: 778, 418 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-rotate-arrow rotate: false - xy: 412, 382 + xy: 794, 418 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-rotate-left rotate: false - xy: 428, 382 + xy: 810, 418 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-rotate-right rotate: false - xy: 444, 382 + xy: 826, 418 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-save rotate: false - xy: 402, 363 + xy: 842, 418 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-save-image rotate: false - xy: 320, 250 + xy: 291, 140 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-save-map rotate: false - xy: 338, 250 + xy: 214, 21 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-settings rotate: false - xy: 434, 270 + xy: 666, 376 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-terrain rotate: false - xy: 356, 251 + xy: 214, 3 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-tools rotate: false - xy: 402, 347 + xy: 858, 418 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-touch rotate: false - xy: 422, 258 + xy: 678, 376 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-touchDelete rotate: false - xy: 458, 282 + xy: 690, 378 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-trash rotate: false - xy: 418, 366 + xy: 874, 418 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-trash-16 rotate: false - xy: 374, 251 + xy: 346, 273 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-trello rotate: false - xy: 434, 366 + xy: 890, 418 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-tutorial rotate: false - xy: 418, 350 + xy: 906, 418 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-undo rotate: false - xy: 392, 251 + xy: 364, 273 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-units rotate: false - xy: 446, 270 + xy: 702, 379 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-unlocked rotate: false - xy: 480, 376 + xy: 382, 273 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-unlocks rotate: false - xy: 434, 350 + xy: 922, 418 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-weapon rotate: false - xy: 434, 258 + xy: 714, 379 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-wiki rotate: false - xy: 450, 366 + xy: 938, 418 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-zoom rotate: false - xy: 498, 378 + xy: 967, 422 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-zoom-small rotate: false - xy: 450, 350 + xy: 522, 402 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 info-banner rotate: false - xy: 1, 173 + xy: 1, 175 size: 81, 42 orig: 81, 42 offset: 0, 0 index: -1 inventory rotate: false - xy: 308, 395 + xy: 308, 397 size: 24, 40 split: 10, 10, 10, 14 orig: 24, 40 @@ -6162,14 +6197,14 @@ inventory index: -1 logotext rotate: false - xy: 346, 487 + xy: 346, 489 size: 89, 21 orig: 89, 21 offset: 0, 0 index: -1 pane rotate: false - xy: 480, 412 + xy: 251, 262 size: 24, 36 split: 10, 10, 5, 5 orig: 24, 36 @@ -6177,7 +6212,7 @@ pane index: -1 pane-button rotate: false - xy: 240, 332 + xy: 240, 334 size: 24, 36 split: 10, 10, 5, 5 orig: 24, 36 @@ -6185,7 +6220,7 @@ pane-button index: -1 scroll rotate: false - xy: 312, 358 + xy: 137, 226 size: 24, 35 split: 10, 10, 6, 5 orig: 24, 35 @@ -6193,7 +6228,7 @@ scroll index: -1 scroll-horizontal rotate: false - xy: 479, 484 + xy: 479, 486 size: 35, 24 split: 6, 5, 10, 10 orig: 35, 24 @@ -6201,7 +6236,7 @@ scroll-horizontal index: -1 scroll-knob-horizontal rotate: false - xy: 437, 484 + xy: 437, 486 size: 40, 24 split: 10, 6, 0, 24 pad: -1, -1, 10, 10 @@ -6210,7 +6245,7 @@ scroll-knob-horizontal index: -1 scroll-knob-vertical rotate: false - xy: 360, 411 + xy: 360, 413 size: 24, 40 split: 10, 10, 6, 10 orig: 24, 40 @@ -6218,78 +6253,92 @@ scroll-knob-vertical index: -1 scroll-knob-vertical-black rotate: false - xy: 334, 409 + xy: 334, 411 size: 24, 40 split: 10, 10, 6, 10 orig: 24, 40 offset: 0, 0 index: -1 +sector-edge + rotate: false + xy: 386, 421 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +sector-select + rotate: false + xy: 420, 418 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 selection rotate: false - xy: 93, 74 + xy: 190, 265 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 slider rotate: false - xy: 462, 248 + xy: 488, 442 size: 1, 8 orig: 1, 8 offset: 0, 0 index: -1 slider-knob rotate: false - xy: 113, 215 + xy: 113, 217 size: 22, 44 orig: 22, 44 offset: 0, 0 index: -1 slider-knob-down rotate: false - xy: 1, 64 + xy: 1, 66 size: 22, 44 orig: 22, 44 offset: 0, 0 index: -1 slider-knob-over rotate: false - xy: 1, 64 + xy: 1, 66 size: 22, 44 orig: 22, 44 offset: 0, 0 index: -1 slider-vertical rotate: false - xy: 423, 484 + xy: 423, 486 size: 8, 1 orig: 8, 1 offset: 0, 0 index: -1 text-sides rotate: false - xy: 1, 284 + xy: 1, 286 size: 140, 21 orig: 140, 21 offset: 0, 0 index: -1 text-sides-down rotate: false - xy: 204, 487 + xy: 204, 489 size: 140, 21 orig: 140, 21 offset: 0, 0 index: -1 text-sides-over rotate: false - xy: 1, 261 + xy: 1, 263 size: 140, 21 orig: 140, 21 offset: 0, 0 index: -1 textfield rotate: false - xy: 268, 305 + xy: 139, 196 size: 28, 28 split: 6, 6, 6, 6 orig: 28, 28 @@ -6297,7 +6346,7 @@ textfield index: -1 textfield-over rotate: false - xy: 266, 335 + xy: 221, 236 size: 28, 28 split: 2, 2, 2, 2 orig: 28, 28 @@ -6305,14 +6354,14 @@ textfield-over index: -1 white rotate: false - xy: 25, 105 + xy: 25, 107 size: 3, 3 orig: 3, 3 offset: 0, 0 index: -1 window rotate: false - xy: 1, 110 + xy: 1, 112 size: 27, 61 split: 8, 8, 44, 11 orig: 27, 61 @@ -6320,7 +6369,7 @@ window index: -1 window-empty rotate: false - xy: 84, 198 + xy: 84, 200 size: 27, 61 split: 8, 8, 44, 11 orig: 27, 61 @@ -6328,210 +6377,210 @@ window-empty index: -1 alpha-drone rotate: false - xy: 319, 437 + xy: 319, 439 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 unit-icon-alpha-drone rotate: false - xy: 319, 437 + xy: 319, 439 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 dagger rotate: false - xy: 466, 374 + xy: 756, 404 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 dagger-base rotate: false - xy: 626, 368 + xy: 770, 404 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 dagger-leg rotate: false - xy: 640, 368 + xy: 784, 404 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 fortress rotate: false - xy: 143, 1 + xy: 219, 140 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 fortress-base rotate: false - xy: 844, 386 + xy: 237, 140 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 titan-base rotate: false - xy: 844, 386 + xy: 237, 140 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 fortress-leg rotate: false - xy: 862, 386 + xy: 255, 140 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 ghoul rotate: false - xy: 84, 178 + xy: 491, 466 size: 18, 18 orig: 18, 18 offset: 0, 0 index: -1 unit-icon-ghoul rotate: false - xy: 84, 178 + xy: 491, 466 size: 18, 18 orig: 18, 18 offset: 0, 0 index: -1 phantom rotate: false - xy: 578, 362 + xy: 650, 402 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 unit-icon-phantom rotate: false - xy: 578, 362 + xy: 650, 402 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 power-cell rotate: false - xy: 594, 362 + xy: 666, 402 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 revenant rotate: false - xy: 282, 365 + xy: 163, 235 size: 28, 28 orig: 28, 28 offset: 0, 0 index: -1 unit-icon-revenant rotate: false - xy: 282, 365 + xy: 163, 235 size: 28, 28 orig: 28, 28 offset: 0, 0 index: -1 spirit rotate: false - xy: 434, 322 + xy: 620, 388 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 unit-icon-spirit rotate: false - xy: 434, 322 + xy: 620, 388 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 titan rotate: false - xy: 326, 214 + xy: 470, 320 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 titan-leg rotate: false - xy: 344, 214 + xy: 472, 302 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 artillery-equip rotate: false - xy: 348, 395 + xy: 332, 283 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 blaster-equip rotate: false - xy: 466, 402 + xy: 508, 420 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 bomber-equip rotate: false - xy: 466, 388 + xy: 728, 404 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 missiles-equip rotate: false - xy: 466, 388 + xy: 728, 404 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 chain-blaster-equip rotate: false - xy: 830, 384 + xy: 742, 404 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 flakgun-equip rotate: false - xy: 738, 368 + xy: 882, 404 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 flamethrower-equip rotate: false - xy: 752, 368 + xy: 896, 404 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 heal-blaster-equip rotate: false - xy: 780, 368 + xy: 924, 404 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 shockgun-equip rotate: false - xy: 434, 336 + xy: 578, 388 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 swarmer-equip rotate: false - xy: 448, 322 + xy: 648, 388 size: 12, 12 orig: 12, 12 offset: 0, 0 diff --git a/core/assets/sprites/sprites.png b/core/assets/sprites/sprites.png index 5ff4b5d82b..1608a4e4c5 100644 Binary files a/core/assets/sprites/sprites.png and b/core/assets/sprites/sprites.png differ diff --git a/core/assets/ui/square.fnt b/core/assets/ui/square.fnt index 6f1f6cc9cc..88f9a5bbc5 100644 --- a/core/assets/ui/square.fnt +++ b/core/assets/ui/square.fnt @@ -5,7 +5,7 @@ page id=1 file="square2.png" page id=2 file="square3.png" chars count=11450 char id=10 x=0 y=0 width=0 height=0 xoffset=-1 yoffset=0 xadvance=0 page=0 chnl=0 -char id=32 x=0 y=0 width=0 height=0 xoffset=-1 yoffset=0 xadvance=16 page=0 chnl=0 +char id=32 x=0 y=0 width=0 height=0 xoffset=-1 yoffset=0 xadvance=10 page=0 chnl=0 char id=33 x=2039 y=147 width=7 height=23 xoffset=-1 yoffset=4 xadvance=8 page=0 chnl=0 char id=34 x=147 y=2032 width=15 height=11 xoffset=-1 yoffset=4 xadvance=16 page=0 chnl=0 char id=36 x=7 y=0 width=23 height=31 xoffset=-1 yoffset=0 xadvance=24 page=0 chnl=0 diff --git a/core/src/io/anuke/mindustry/core/Control.java b/core/src/io/anuke/mindustry/core/Control.java index 832eab7581..4a511b4b29 100644 --- a/core/src/io/anuke/mindustry/core/Control.java +++ b/core/src/io/anuke/mindustry/core/Control.java @@ -379,17 +379,12 @@ public class Control extends Module{ state.set(state.is(State.playing) ? State.paused : State.playing); } - if(Inputs.keyTap("menu")){ - if(state.is(State.paused)){ - ui.paused.hide(); - state.set(State.playing); - }else if(!ui.restart.isShown()){ - if(ui.chatfrag.chatOpen()){ - ui.chatfrag.hide(); - }else{ - ui.paused.show(); - state.set(State.paused); - } + if(Inputs.keyTap("menu") && !ui.restart.isShown()){ + if(ui.chatfrag.chatOpen()){ + ui.chatfrag.hide(); + }else if(!ui.paused.isShown() && !ui.hasDialog()){ + ui.paused.show(); + state.set(State.paused); } } diff --git a/core/src/io/anuke/mindustry/core/Platform.java b/core/src/io/anuke/mindustry/core/Platform.java index 9f47a307c2..ec7e0308ca 100644 --- a/core/src/io/anuke/mindustry/core/Platform.java +++ b/core/src/io/anuke/mindustry/core/Platform.java @@ -6,18 +6,12 @@ import io.anuke.ucore.core.Settings; import io.anuke.ucore.function.Consumer; import io.anuke.ucore.scene.ui.TextField; -import java.util.Date; import java.util.Random; public abstract class Platform { /**Each separate game platform should set this instance to their own implementation.*/ public static Platform instance = new Platform() {}; - /**Format the date using the default date formatter.*/ - public String format(Date date){return "invalid";} - /**Format a number by adding in commas or periods where needed.*/ - public String format(int number){return "invalid";} - /**Add a text input dialog that should show up after the field is tapped.*/ public void addDialog(TextField field){ addDialog(field, 16); diff --git a/core/src/io/anuke/mindustry/core/UI.java b/core/src/io/anuke/mindustry/core/UI.java index e62742648b..4fa2d7f82c 100644 --- a/core/src/io/anuke/mindustry/core/UI.java +++ b/core/src/io/anuke/mindustry/core/UI.java @@ -87,22 +87,7 @@ public class UI extends SceneModule{ Dialog.closePadR = -1; Dialog.closePadT = 5; - Colors.put("description", Palette.description); - Colors.put("turretinfo", Palette.turretinfo); - Colors.put("iteminfo", Palette.iteminfo); - Colors.put("powerinfo", Palette.powerinfo); - Colors.put("liquidinfo", Palette.liquidinfo); - Colors.put("craftinfo", Palette.craftinfo); - Colors.put("missingitems", Palette.missingitems); - Colors.put("health", Palette.health); - Colors.put("healthstats", Palette.healthstats); - Colors.put("interact", Palette.interact); Colors.put("accent", Palette.accent); - Colors.put("place", Palette.place); - Colors.put("remove", Palette.remove); - Colors.put("placeRotate", Palette.placeRotate); - Colors.put("range", Palette.range); - Colors.put("power", Palette.power); } @Override diff --git a/core/src/io/anuke/mindustry/editor/MapEditorDialog.java b/core/src/io/anuke/mindustry/editor/MapEditorDialog.java index f54039e77f..b36f02f535 100644 --- a/core/src/io/anuke/mindustry/editor/MapEditorDialog.java +++ b/core/src/io/anuke/mindustry/editor/MapEditorDialog.java @@ -441,14 +441,6 @@ public class MapEditorDialog extends Dialog implements Disposable{ mid.table("button", t -> { Slider slider = new Slider(0, MapEditor.brushSizes.length - 1, 1, false); slider.moved(f -> editor.setBrushSize(MapEditor.brushSizes[(int) (float) f])); - slider.update(() -> { - for(int j = 0; j < MapEditor.brushSizes.length; j++){ - if(editor.getBrushSize() == j){ - slider.setValue(j); - return; - } - } - }); t.top(); t.add("$text.editor.brush"); diff --git a/core/src/io/anuke/mindustry/editor/MapView.java b/core/src/io/anuke/mindustry/editor/MapView.java index 7748c46ff1..59894bd016 100644 --- a/core/src/io/anuke/mindustry/editor/MapView.java +++ b/core/src/io/anuke/mindustry/editor/MapView.java @@ -9,7 +9,6 @@ import com.badlogic.gdx.math.Bresenham2; import com.badlogic.gdx.math.GridPoint2; import com.badlogic.gdx.math.Rectangle; import com.badlogic.gdx.math.Vector2; -import com.badlogic.gdx.scenes.scene2d.utils.ScissorStack; import com.badlogic.gdx.utils.Array; import io.anuke.mindustry.editor.DrawOperation.TileOperation; import io.anuke.mindustry.graphics.Palette; @@ -270,8 +269,7 @@ public class MapView extends Element implements GestureListener{ image.setImageSize(editor.getMap().width(), editor.getMap().height()); - batch.flush(); - boolean pop = ScissorStack.pushScissors(rect.set(x, y, width, height)); + Graphics.beginClip(x, y, width, height); Draw.color(Color.LIGHT_GRAY); Lines.stroke(-2f); @@ -327,9 +325,7 @@ public class MapView extends Element implements GestureListener{ } } - batch.flush(); - - if(pop) ScissorStack.popScissors(); + Graphics.endClip(); Draw.color(Palette.accent); Lines.stroke(Unit.dp.scl(3f)); diff --git a/core/src/io/anuke/mindustry/entities/effect/Fire.java b/core/src/io/anuke/mindustry/entities/effect/Fire.java index 3bf89c4fc5..e6581a41ed 100644 --- a/core/src/io/anuke/mindustry/entities/effect/Fire.java +++ b/core/src/io/anuke/mindustry/entities/effect/Fire.java @@ -33,8 +33,7 @@ import static io.anuke.mindustry.Vars.*; public class Fire extends TimedEntity implements SaveTrait, SyncTrait, Poolable{ private static final IntMap map = new IntMap<>(); - private static final float baseLifetime = 1000f; - private static final float spreadChance = 0.05f, fireballChance = 0.07f; + private static final float baseLifetime = 1000f, spreadChance = 0.05f, fireballChance = 0.07f; private int loadedPosition = -1; private Tile tile; @@ -42,15 +41,10 @@ public class Fire extends TimedEntity implements SaveTrait, SyncTrait, Poolable{ private float baseFlammability = -1, puddleFlammability; private float lifetime; - /** - * Deserialization use only! - */ - public Fire(){ - } + /**Deserialization use only!*/ + public Fire(){} - /** - * Start a fire on the tile. If there already is a file there, refreshes its lifetime. - */ + /**Start a fire on the tile. If there already is a file there, refreshes its lifetime.*/ public static void create(Tile tile){ if(Net.client() || tile == null) return; //not clientside. @@ -70,7 +64,11 @@ public class Fire extends TimedEntity implements SaveTrait, SyncTrait, Poolable{ } public static boolean has(int x, int y){ - return Structs.inBounds(x, y, world.width(), world.height()) && map.containsKey(x + y * world.width()); + if(!Structs.inBounds(x, y, world.width(), world.height()) || !map.containsKey(x + y * world.width())){ + return false; + } + Fire fire = map.get(x + y * world.width()); + return fire.isAdded() && fire.fin() < 1f && fire.tile != null && fire.tile.x == x && fire.tile.y == y; } /** diff --git a/core/src/io/anuke/mindustry/graphics/FogRenderer.java b/core/src/io/anuke/mindustry/graphics/FogRenderer.java index e974414838..dad721c5b7 100644 --- a/core/src/io/anuke/mindustry/graphics/FogRenderer.java +++ b/core/src/io/anuke/mindustry/graphics/FogRenderer.java @@ -20,7 +20,6 @@ import io.anuke.ucore.core.Graphics; import io.anuke.ucore.entities.EntityDraw; import io.anuke.ucore.graphics.Draw; import io.anuke.ucore.graphics.Fill; -import io.anuke.ucore.scene.utils.ScissorStack; import java.nio.ByteBuffer; @@ -140,9 +139,7 @@ public class FogRenderer implements Disposable{ buffer.begin(); - boolean pop = ScissorStack.pushScissors(rect.set((padding-shadowPadding), (padding-shadowPadding), - (world.width() + shadowPadding*2) , - (world.height() + shadowPadding*2))); + Graphics.beginClip((padding-shadowPadding), (padding-shadowPadding), (world.width() + shadowPadding*2), (world.height() + shadowPadding*2)); Graphics.begin(); EntityDraw.setClip(false); @@ -172,7 +169,7 @@ public class FogRenderer implements Disposable{ Graphics.end(); buffer.end(); - if(pop) ScissorStack.popScissors(); + Graphics.endClip(); region.setTexture(buffer.getColorBufferTexture()); region.setRegion(u, v2, u2, v); diff --git a/core/src/io/anuke/mindustry/graphics/MinimapRenderer.java b/core/src/io/anuke/mindustry/graphics/MinimapRenderer.java index 1e002fb5c7..dab7016c99 100644 --- a/core/src/io/anuke/mindustry/graphics/MinimapRenderer.java +++ b/core/src/io/anuke/mindustry/graphics/MinimapRenderer.java @@ -1,7 +1,6 @@ package io.anuke.mindustry.graphics; import com.badlogic.gdx.Gdx; -import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.Pixmap; import com.badlogic.gdx.graphics.Pixmap.Format; import com.badlogic.gdx.graphics.Texture; @@ -20,7 +19,6 @@ import io.anuke.ucore.core.Events; import io.anuke.ucore.core.Graphics; import io.anuke.ucore.graphics.Draw; import io.anuke.ucore.graphics.Pixmaps; -import io.anuke.ucore.scene.utils.ScissorStack; import io.anuke.ucore.util.Mathf; import io.anuke.ucore.util.ThreadArray; @@ -34,8 +32,6 @@ public class MinimapRenderer implements Disposable{ private Texture texture; private TextureRegion region; private Rectangle rect = new Rectangle(); - private Rectangle clipRect = new Rectangle(); - private Color tmpColor = new Color(); private int zoom = 4; public MinimapRenderer(){ @@ -80,9 +76,7 @@ public class MinimapRenderer implements Disposable{ synchronized(units){ rect.set((dx - sz) * tilesize, (dy - sz) * tilesize, sz * 2 * tilesize, sz * 2 * tilesize); - Graphics.flush(); - - boolean clip = ScissorStack.pushScissors(clipRect.set(x, y, w, h)); + Graphics.beginClip(x, y, w, h); for(Unit unit : units){ float rx = (unit.x - rect.x) / rect.width * w, ry = (unit.y - rect.y) / rect.width * h; @@ -92,8 +86,7 @@ public class MinimapRenderer implements Disposable{ Draw.color(); - Graphics.flush(); - if(clip) ScissorStack.popScissors(); + Graphics.endClip(); } } diff --git a/core/src/io/anuke/mindustry/graphics/Palette.java b/core/src/io/anuke/mindustry/graphics/Palette.java index e39d55d733..2c7874bfd8 100644 --- a/core/src/io/anuke/mindustry/graphics/Palette.java +++ b/core/src/io/anuke/mindustry/graphics/Palette.java @@ -41,24 +41,8 @@ public class Palette{ portal = Color.valueOf("6344d7"), portalDark = Color.valueOf("3f3dac"), - powerLaserFrom = Color.valueOf("e3e3e3"), - powerLaserTo = Color.valueOf("ffe7a8"), - heal = Color.valueOf("98ffa9"), - - description = Color.WHITE, - turretinfo = Color.ORANGE, - iteminfo = Color.LIGHT_GRAY, - powerinfo = Color.YELLOW, - liquidinfo = Color.ROYAL, - craftinfo = Color.LIGHT_GRAY, - - missingitems = Color.SCARLET, - health = Color.YELLOW, - ammo = Color.valueOf("32cf6d"), - healthstats = Color.SCARLET, bar = Color.SLATE, - interact = Color.ORANGE, accent = Color.valueOf("f4ba6e"), accentBack = Color.valueOf("d58c4b"), place = Color.valueOf("6335f8"), @@ -81,6 +65,5 @@ public class Palette{ redDust = Color.valueOf("ffa480"), redderDust = Color.valueOf("ff7b69"), - plasticSmoke = Color.valueOf("f1e479"), - plasticBurn = Color.valueOf("e9ead3"); + plasticSmoke = Color.valueOf("f1e479"); } diff --git a/core/src/io/anuke/mindustry/io/SaveMeta.java b/core/src/io/anuke/mindustry/io/SaveMeta.java index 0f527ace6a..1abe1816e6 100644 --- a/core/src/io/anuke/mindustry/io/SaveMeta.java +++ b/core/src/io/anuke/mindustry/io/SaveMeta.java @@ -1,10 +1,10 @@ package io.anuke.mindustry.io; -import io.anuke.mindustry.core.Platform; import io.anuke.mindustry.game.Difficulty; import io.anuke.mindustry.game.GameMode; import io.anuke.mindustry.maps.Map; +import java.text.SimpleDateFormat; import java.util.Date; import static io.anuke.mindustry.Vars.world; @@ -23,7 +23,7 @@ public class SaveMeta{ public SaveMeta(int version, long date, long timePlayed, int build, int sector, int mode, String map, int wave, Difficulty difficulty){ this.version = version; this.build = build; - this.date = Platform.instance.format(new Date(date)); + this.date = SimpleDateFormat.getDateTimeInstance().format(new Date(date)); this.timePlayed = timePlayed; this.sector = sector; this.mode = GameMode.values()[mode]; diff --git a/core/src/io/anuke/mindustry/maps/Sectors.java b/core/src/io/anuke/mindustry/maps/Sectors.java index 8f968ded65..6b63fbb3eb 100644 --- a/core/src/io/anuke/mindustry/maps/Sectors.java +++ b/core/src/io/anuke/mindustry/maps/Sectors.java @@ -1,10 +1,12 @@ package io.anuke.mindustry.maps; +import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.Pixmap; import com.badlogic.gdx.graphics.Pixmap.Format; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.math.GridPoint2; import com.badlogic.gdx.utils.Array; +import com.badlogic.gdx.utils.async.AsyncExecutor; import io.anuke.mindustry.content.Items; import io.anuke.mindustry.core.GameState.State; import io.anuke.mindustry.game.Difficulty; @@ -28,11 +30,12 @@ import io.anuke.ucore.util.*; import static io.anuke.mindustry.Vars.*; public class Sectors{ - private static final int sectorImageSize = 32; + public static final int sectorImageSize = 32; private final GridMap grid = new GridMap<>(); private final SectorPresets presets = new SectorPresets(); private final Array allOres = Item.getAllOres(); + private final AsyncExecutor executor = new AsyncExecutor(6); public void playSector(Sector sector){ if(sector.hasSave() && SaveIO.breakingVersions.contains(sector.getSave().getBuild())){ @@ -106,6 +109,7 @@ public class Sectors{ for(GridPoint2 g : Geometry.d4){ createSector(x + g.x, y + g.y); + Sector other = grid.get(x + g.x, y + g.y); } } @@ -125,6 +129,10 @@ public class Sectors{ if(sector.texture == null){ threads.runGraphics(() -> createTexture(sector)); } + + if(sector.missions.size == 0){ + completeSector(sector.x, sector.y); + } } public void abandonSector(Sector sector){ @@ -217,6 +225,10 @@ public class Sectors{ /**Generates a mission for a sector. This is deterministic and the same for each client.*/ private void generate(Sector sector){ + //empty sector + if(Mathf.randomSeed(sector.getSeed() + 213) < 0.2){ + return; + } //50% chance to get a wave mission if(Mathf.randomSeed(sector.getSeed() + 6) < 0.5){ @@ -228,11 +240,6 @@ public class Sectors{ sector.missions.add(new BattleMission()); } - //possibly another battle mission - if(Mathf.randomSeed(sector.getSeed() + 3) < 0.3){ - sector.missions.add(new BattleMission()); - } - //possibly add another recipe mission addRecipeMission(sector, 11); } @@ -264,24 +271,33 @@ public class Sectors{ sector.texture.dispose(); } - Pixmap pixmap = new Pixmap(sectorImageSize, sectorImageSize, Format.RGBA8888); - GenResult secResult = new GenResult(); + executor.submit(() -> { + Pixmap pixmap = new Pixmap(sectorImageSize, sectorImageSize, Format.RGBA8888); + GenResult result = new GenResult(); + GenResult secResult = new GenResult(); - for(int x = 0; x < pixmap.getWidth(); x++){ - for(int y = 0; y < pixmap.getHeight(); y++){ - int toX = x * sectorSize / sectorImageSize; - int toY = y * sectorSize / sectorImageSize; + for(int x = 0; x < pixmap.getWidth(); x++){ + for(int y = 0; y < pixmap.getHeight(); y++){ + int toX = x * sectorSize / sectorImageSize; + int toY = y * sectorSize / sectorImageSize; - GenResult result = world.generator.generateTile(sector.x, sector.y, toX, toY, false); - world.generator.generateTile(secResult, sector.x, sector.y, toX, ((y+1) * sectorSize / sectorImageSize), false, null, null); + world.generator.generateTile(result, sector.x, sector.y, toX, toY, false, null, null); + world.generator.generateTile(secResult, sector.x, sector.y, toX, ((y+1) * sectorSize / sectorImageSize), false, null, null); - int color = ColorMapper.colorFor(result.floor, result.wall, Team.none, result.elevation, secResult.elevation > result.elevation ? (byte)(1 << 6) : (byte)0); - pixmap.drawPixel(x, pixmap.getHeight() - 1 - y, color); + int color = ColorMapper.colorFor(result.floor, result.wall, Team.none, result.elevation, secResult.elevation > result.elevation ? (byte)(1 << 6) : (byte)0); + pixmap.drawPixel(x, pixmap.getHeight() - 1 - y, color); + } } - } - sector.texture = new Texture(pixmap); - pixmap.dispose(); + Gdx.app.postRunnable(() -> { + sector.texture = new Texture(pixmap); + pixmap.dispose(); + }); + + return null; + }); + + } diff --git a/core/src/io/anuke/mindustry/maps/missions/BattleMission.java b/core/src/io/anuke/mindustry/maps/missions/BattleMission.java index 8bbfb29622..4a49ae7bf3 100644 --- a/core/src/io/anuke/mindustry/maps/missions/BattleMission.java +++ b/core/src/io/anuke/mindustry/maps/missions/BattleMission.java @@ -13,6 +13,11 @@ import static io.anuke.mindustry.Vars.*; public class BattleMission extends Mission{ final int spacing = 30; + @Override + public String getIcon(){ + return "icon-mission-battle"; + } + @Override public GameMode getMode(){ return GameMode.noWaves; @@ -25,7 +30,7 @@ public class BattleMission extends Mission{ @Override public void generate(Generation gen){ - super.generate(gen); + generateCoreAt(gen, 50, 50, defaultTeam); if(state.teams.get(defaultTeam).cores.size == 0){ return; diff --git a/core/src/io/anuke/mindustry/maps/missions/Mission.java b/core/src/io/anuke/mindustry/maps/missions/Mission.java index bcf52e91bf..01d825836f 100644 --- a/core/src/io/anuke/mindustry/maps/missions/Mission.java +++ b/core/src/io/anuke/mindustry/maps/missions/Mission.java @@ -17,7 +17,7 @@ import static io.anuke.mindustry.Vars.*; public abstract class Mission{ private String extraMessage; - private boolean showComplete =true; + private boolean showComplete = true; public abstract boolean isComplete(); @@ -29,6 +29,10 @@ public abstract class Mission{ return displayString(); } + public String getIcon(){ + return "icon-mission-defense"; + } + public GameMode getMode(){ return GameMode.noWaves; } @@ -95,9 +99,7 @@ public abstract class Mission{ return Array.with(); } - public void generate(Generation gen){ - generateCoreAt(gen, 50, 50, defaultTeam); - } + public void generate(Generation gen){} public void generateCoreAt(Generation gen, int coreX, int coreY, Team team){ gen.tiles[coreX][coreY].setBlock(StorageBlocks.core); diff --git a/core/src/io/anuke/mindustry/ui/dialogs/FloatingDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/FloatingDialog.java index 0a0adb4a59..600c59c193 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/FloatingDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/FloatingDialog.java @@ -13,7 +13,6 @@ import io.anuke.ucore.scene.ui.Dialog; import io.anuke.ucore.scene.ui.ScrollPane; import static io.anuke.mindustry.Vars.state; -import static io.anuke.mindustry.Vars.ui; public class FloatingDialog extends Dialog{ private boolean wasPaused; @@ -29,19 +28,16 @@ public class FloatingDialog extends Dialog{ hidden(() -> { if(shouldPause && !state.is(State.menu)){ - if(!wasPaused || Net.active()) + if(!wasPaused || Net.active()){ state.set(State.playing); + } } }); shown(() -> { if(shouldPause && !state.is(State.menu)){ wasPaused = state.is(State.paused); - if(ui.paused.getScene() != null){ - wasPaused = ui.paused.wasPaused; - } - if(!Net.active()) state.set(State.paused); - ui.paused.hide(); + state.set(State.paused); } }); @@ -71,8 +67,9 @@ public class FloatingDialog extends Dialog{ buttons().addImageTextButton("$text.back", "icon-arrow-left", 30f, this::hide).size(230f, 64f); keyDown(key -> { - if(key == Keys.ESCAPE || key == Keys.BACK) - hide(); + if(key == Keys.ESCAPE || key == Keys.BACK) { + Gdx.app.postRunnable(this::hide); + } }); } } diff --git a/core/src/io/anuke/mindustry/ui/dialogs/JoinDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/JoinDialog.java index 9bcee6223a..d0ce1a574b 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/JoinDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/JoinDialog.java @@ -177,8 +177,6 @@ public class JoinDialog extends FloatingDialog{ t.add("[lightgray]" + Bundles.format("text.save.map", host.mapname) + " / " + Bundles.format("text.save.wave", host.wave)).left(); }).expand().left().bottom().padLeft(12f).padBottom(8); - //server.content.add(versionString).top().expandY().top().expandX(); - }, e -> { server.content.clear(); server.content.add("$text.host.invalid"); @@ -321,7 +319,6 @@ public class JoinDialog extends FloatingDialog{ public String ip; public int port; - transient Host host; transient Table content; void setIP(String ip){ diff --git a/core/src/io/anuke/mindustry/ui/dialogs/MapsDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/MapsDialog.java index dfc9ebb832..8308424f10 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/MapsDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/MapsDialog.java @@ -147,9 +147,14 @@ public class MapsDialog extends FloatingDialog{ table.row(); table.addImageTextButton("$text.editor.openin", "icon-load-map", "clear", 16 * 2, () -> { - Vars.ui.editor.beginEditMap(map.stream.get()); - dialog.hide(); - hide(); + try{ + Vars.ui.editor.beginEditMap(map.stream.get()); + dialog.hide(); + hide(); + }catch(Exception e){ + e.printStackTrace(); + ui.showError("$text.error.mapnotfound"); + } }).fillX().height(50f).marginLeft(6); table.addImageTextButton("$text.delete", "icon-trash-16", "clear", 16 * 2, () -> { diff --git a/core/src/io/anuke/mindustry/ui/dialogs/PausedDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/PausedDialog.java index 6aa1dfa80a..96ca6fbd19 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/PausedDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/PausedDialog.java @@ -1,5 +1,6 @@ package io.anuke.mindustry.ui.dialogs; +import com.badlogic.gdx.Input.Keys; import io.anuke.mindustry.core.GameState.State; import io.anuke.mindustry.net.Net; import io.anuke.ucore.scene.ui.layout.Table; @@ -8,16 +9,22 @@ import io.anuke.ucore.util.Bundles; import static io.anuke.mindustry.Vars.*; public class PausedDialog extends FloatingDialog{ - public boolean wasPaused = false; private SaveDialog save = new SaveDialog(); private LoadDialog load = new LoadDialog(); private Table missionTable; public PausedDialog(){ super("$text.menu"); + shouldPause = true; setup(); shown(this::rebuild); + + keyDown(key -> { + if(key == Keys.ESCAPE || key == Keys.BACK) { + hide(); + } + }); } void rebuild(){ @@ -40,11 +47,6 @@ public class PausedDialog extends FloatingDialog{ } }); - shown(() -> { - wasPaused = state.is(State.paused); - if(!Net.active()) state.set(State.paused); - }); - content().table(t -> missionTable = t).colspan(mobile ? 3 : 1); content().row(); @@ -53,8 +55,6 @@ public class PausedDialog extends FloatingDialog{ content().addButton("$text.back", () -> { hide(); - if((!wasPaused || Net.active()) && !state.is(State.menu)) - state.set(State.playing); }); content().row(); @@ -86,8 +86,6 @@ public class PausedDialog extends FloatingDialog{ content().addRowImageTextButton("$text.back", "icon-play-2", isize, () -> { hide(); - if(!wasPaused && !state.is(State.menu)) - state.set(State.playing); }); content().addRowImageTextButton("$text.settings", "icon-tools", isize, ui.settings::show); content().addRowImageTextButton("$text.save", "icon-save", isize, save::show).disabled(b -> world.getSector() != null); diff --git a/core/src/io/anuke/mindustry/ui/dialogs/SectorsDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/SectorsDialog.java index 0009263d47..cd56a28d0a 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/SectorsDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/SectorsDialog.java @@ -1,68 +1,119 @@ package io.anuke.mindustry.ui.dialogs; +import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.Color; -import com.badlogic.gdx.math.Rectangle; +import com.badlogic.gdx.math.GridPoint2; import com.badlogic.gdx.math.Vector2; +import com.badlogic.gdx.utils.Align; +import io.anuke.mindustry.Vars; import io.anuke.mindustry.graphics.Palette; +import io.anuke.mindustry.graphics.Shaders; import io.anuke.mindustry.maps.Sector; import io.anuke.ucore.core.Graphics; import io.anuke.ucore.graphics.Draw; -import io.anuke.ucore.graphics.Lines; import io.anuke.ucore.scene.Element; +import io.anuke.ucore.scene.Group; import io.anuke.ucore.scene.event.InputEvent; import io.anuke.ucore.scene.event.InputListener; +import io.anuke.ucore.scene.event.Touchable; +import io.anuke.ucore.scene.ui.layout.Table; import io.anuke.ucore.scene.ui.layout.Unit; import io.anuke.ucore.scene.utils.Cursors; -import io.anuke.ucore.scene.utils.ScissorStack; import io.anuke.ucore.util.Bundles; +import io.anuke.ucore.util.Geometry; +import io.anuke.ucore.util.Log; import io.anuke.ucore.util.Mathf; -import static io.anuke.mindustry.Vars.ui; import static io.anuke.mindustry.Vars.world; public class SectorsDialog extends FloatingDialog{ - private Rectangle clip = new Rectangle(); + private static final float sectorSize = Unit.dp.scl(32*5); private Sector selected; + private Table table; + private SectorView view; public SectorsDialog(){ - super("$text.sectors"); + super(""); + + table = new Table(){ + @Override + public float getPrefWidth(){ + return sectorSize*2f; + } + }; + table.visible(() -> selected != null); + table.update(() -> { + if(selected != null){ + + int offsetX = (int)(view.panX / sectorSize); + int offsetY = (int)(view.panY / sectorSize); + float drawX = x + width/2f+ selected.x * (sectorSize-2) - offsetX * sectorSize - view.panX % sectorSize + sectorSize/2f; + float drawY = y + height/2f + selected.y * (sectorSize-2) - offsetY * sectorSize - view.panY % sectorSize + sectorSize/2f; + + table.setPosition(drawX, drawY - sectorSize/2f + 1, Align.top); + } + }); + + Group container = new Group(); + container.setTouchable(Touchable.childrenOnly); + container.addChild(table); + + margin(0); + getTitleTable().clear(); + clear(); + stack(content(), buttons(), container).grow(); shown(this::setup); } void setup(){ selected = null; + + table.clear(); content().clear(); buttons().clear(); + buttons().bottom().margin(15); addCloseButton(); - - content().label(() -> Bundles.format("text.sector", selected == null ? Bundles.get("text.none") : - (selected.x + ", " + selected.y + (!selected.complete && selected.saveID != -1 ? " " + Bundles.get("text.sector.locked") : "")) - + (selected.saveID == -1 ? " " + Bundles.get("text.sector.unexplored") : - (selected.hasSave() ? " [accent]/[white] " + Bundles.format("text.sector.time", selected.getSave().getPlayTime()) : "")))); - content().row(); - content().label(() -> Bundles.format("text.mission.main", selected == null || selected.completedMissions >= selected.missions.size - ? Bundles.get("text.none") : selected.getDominantMission().menuDisplayString())); - content().row(); - content().add(new SectorView()).grow(); - content().row(); - - buttons().addImageTextButton("$text.sector.abandon", "icon-cancel", 16*2, () -> - ui.showConfirm("$text.confirm", "$text.sector.abandon.confirm", () -> world.sectors.abandonSector(selected))) - .size(200f, 64f).disabled(b -> selected == null || !selected.hasSave()); - - buttons().row(); - - buttons().addImageTextButton("$text.sector.deploy", "icon-play", 10*3, () -> { - hide(); - ui.loadLogic(() -> world.sectors.playSector(selected)); - }).disabled(b -> selected == null) - .fillX().height(64f).colspan(2).update(t -> t.setText(selected != null && selected.hasSave() ? "$text.sector.resume" : "$text.sector.deploy")); + content().add(view = new SectorView()).grow(); } void selectSector(Sector sector){ + Log.info((int)' '); selected = sector; + + table.clear(); + table.background("button").margin(5); + + table.defaults().pad(3); + table.add(Bundles.format("text.sector", sector.x + ", " + sector.y)); + table.row(); + + if(selected.completedMissions < selected.missions.size && !selected.complete){ + table.labelWrap(Bundles.format("text.mission", selected.getDominantMission().menuDisplayString())).growX(); + table.row(); + } + + if(selected.hasSave()){ + table.labelWrap(Bundles.format("text.sector.time", selected.getSave().getPlayTime())).growX(); + table.row(); + } + + table.table(t -> { + t.addImageTextButton(sector.hasSave() ? "$text.sector.resume" : "$text.sector.deploy", "icon-play", 10*3, () -> { + hide(); + Vars.ui.loadLogic(() -> world.sectors.playSector(selected)); + }).height(60f).growX(); + + if(selected.hasSave()){ + t.addImageTextButton("$text.sector.abandon", "icon-cancel", 16 * 2, () -> + Vars.ui.showConfirm("$text.confirm", "$text.sector.abandon.confirm", () -> world.sectors.abandonSector(selected)) + ).width(sectorSize).height(60f); + } + }).pad(-5).growX().padTop(0); + + table.pack(); + table.act(Gdx.graphics.getDeltaTime()); } public Sector getSelected(){ @@ -71,17 +122,15 @@ public class SectorsDialog extends FloatingDialog{ class SectorView extends Element{ float lastX, lastY; - float sectorSize = Unit.dp.scl(32*5); - float sectorPadding = Unit.dp.scl(14f); boolean clicked = false; - float panX = -sectorPadding/2f, panY = -sectorSize/2f; + float panX = 0, panY = -sectorSize/2f; SectorView(){ addListener(new InputListener(){ @Override public boolean touchDown(InputEvent event, float x, float y, int pointer, int button){ if(pointer != 0) return false; - Cursors.setHand(); + //Cursors.setHand(); lastX = x; lastY = y; return true; @@ -111,16 +160,11 @@ public class SectorsDialog extends FloatingDialog{ public void draw(){ Draw.alpha(alpha); - float padSectorSize = sectorSize + sectorPadding; + int shownSectorsX = (int)(width/sectorSize); + int shownSectorsY = (int)(height/sectorSize); - int shownSectorsX = (int)(width/padSectorSize); - int shownSectorsY = (int)(height/padSectorSize); - clip.setSize(width, height).setCenter(x + width/2f, y + height/2f); - Graphics.flush(); - boolean clipped = ScissorStack.pushScissors(clip); - - int offsetX = (int)(panX / padSectorSize); - int offsetY = (int)(panY / padSectorSize); + int offsetX = (int)(panX / sectorSize); + int offsetY = (int)(panY / sectorSize); Vector2 mouse = Graphics.mouse(); @@ -129,58 +173,77 @@ public class SectorsDialog extends FloatingDialog{ int sectorX = offsetX + x; int sectorY = offsetY + y; - float drawX = x + width/2f+ sectorX * padSectorSize - offsetX * padSectorSize - panX % padSectorSize; - float drawY = y + height/2f + sectorY * padSectorSize - offsetY * padSectorSize - panY % padSectorSize; + float drawX = x + width/2f+ sectorX * (sectorSize-2) - offsetX * sectorSize - panX % sectorSize + sectorSize/2f; + float drawY = y + height/2f + sectorY * (sectorSize-2) - offsetY * sectorSize - panY % sectorSize + sectorSize/2f; Sector sector = world.sectors.get(sectorX, sectorY); - int width = 1; - int height = 1; - float paddingx = (width-1) * sectorPadding; - float paddingy = (height-1) * sectorPadding; - if(sector != null && (sector.x != sectorX || sector.y != sectorY)){ + if(sector == null || sector.texture == null){ + Draw.reset(); + Draw.rect("empty-sector", drawX, drawY, sectorSize, sectorSize); + + int i = 0; + for(GridPoint2 point : Geometry.d4){ + Sector other = world.sectors.get(sectorX + point.x, sectorY + point.y); + if(other != null){ + Draw.rect("sector-edge", drawX, drawY, sectorSize, sectorSize, i*90); + } + + i ++; + } continue; } - drawX += (width-1)/2f*padSectorSize; - drawY += (height-1)/2f*padSectorSize; + Draw.colorl(!sector.complete ? 0.3f : 1f); + Draw.rect(sector.texture, drawX, drawY, sectorSize, sectorSize); - if(sector != null && sector.texture != null){ - Draw.colorl(!sector.complete ? 0.3f : 1f); - Draw.rect(sector.texture, drawX, drawY, sectorSize * width + paddingx, sectorSize * height + paddingy); + if(sector.missions.size == 0) continue; + + String region = sector.getDominantMission().getIcon(); + + if(sector.complete){ + region = "icon-mission-done"; } - float stroke = 4f; + Color iconColor = Color.WHITE; + Color backColor = Color.BLACK; + Color selectColor = Color.CLEAR; - if(sector == null){ - Draw.color(Color.DARK_GRAY); - }else if(sector == selected){ - Draw.color(Palette.place); - stroke = 6f; - }else if(Mathf.inRect(mouse.x, mouse.y, drawX - padSectorSize/2f * width, drawY - padSectorSize/2f * height, - drawX + padSectorSize/2f * width, drawY + padSectorSize/2f * height)){ + if(sector == selected){ + selectColor = Palette.accent; + }else if(Mathf.inRect(mouse.x, mouse.y, drawX - sectorSize / 2f, drawY - sectorSize / 2f, + drawX + sectorSize / 2f, drawY + sectorSize / 2f)){ if(clicked){ selectSector(sector); } - Draw.color(Palette.remove); - }else if (sector.complete){ - Draw.color(Palette.accent); + selectColor = Color.WHITE; }else{ - Draw.color(Color.LIGHT_GRAY); + iconColor = Color.GRAY; } - Lines.stroke(Unit.dp.scl(stroke)); - Lines.crect(drawX, drawY, sectorSize * width + paddingx, sectorSize * height + paddingy, (int)stroke); + if(sector.complete){ + iconColor = backColor = Color.CLEAR; + } + + Draw.color(selectColor); + Draw.rect("sector-select", drawX, drawY, sectorSize, sectorSize); + + Draw.color(backColor); + Draw.alpha(0.75f * backColor.a); + Draw.rect("icon-mission-background", drawX, drawY, Unit.dp.scl(18f * 5), Unit.dp.scl(18f * 5)); + + float size = Unit.dp.scl(10f * 5); + + Draw.color(iconColor); + Shaders.outline.color = Color.BLACK; + Shaders.outline.region = Draw.region(region); + //Graphics.shader(Shaders.outline); + Draw.rect(region, drawX, drawY, size, size); + //Graphics.shader(); } } - Draw.color(Palette.accent); - Lines.stroke(Unit.dp.scl(4f)); - Lines.crect(x + width/2f, y + height/2f, width, height); - Draw.reset(); - Graphics.flush(); - if(clipped) ScissorStack.popScissors(); clicked = false; } diff --git a/core/src/io/anuke/mindustry/ui/dialogs/SettingsMenuDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/SettingsMenuDialog.java index 69a7e9479a..79faa1a780 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/SettingsMenuDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/SettingsMenuDialog.java @@ -50,11 +50,7 @@ public class SettingsMenuDialog extends SettingsDialog{ shown(() -> { if(!state.is(State.menu)){ wasPaused = state.is(State.paused); - if(ui.paused.getScene() != null){ - wasPaused = ui.paused.wasPaused; - } - if(!Net.active()) state.set(State.paused); - ui.paused.hide(); + state.set(State.paused); } }); diff --git a/core/src/io/anuke/mindustry/ui/dialogs/UnlocksDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/UnlocksDialog.java index d8f39dc993..4d9411c4df 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/UnlocksDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/UnlocksDialog.java @@ -21,8 +21,8 @@ public class UnlocksDialog extends FloatingDialog{ public UnlocksDialog(){ super("$text.unlocks"); - addCloseButton(); shouldPause = true; + addCloseButton(); shown(this::rebuild); onResize(this::rebuild); } @@ -36,7 +36,7 @@ public class UnlocksDialog extends FloatingDialog{ Array[] allContent = content.getContentMap(); - for(int j =0; j< allContent.length; j ++){ + for(int j = 0; j < allContent.length; j ++){ ContentType type = ContentType.values()[j]; Array array = allContent[j]; diff --git a/core/src/io/anuke/mindustry/world/blocks/distribution/Junction.java b/core/src/io/anuke/mindustry/world/blocks/distribution/Junction.java index 6f790e7b15..9027fb632c 100644 --- a/core/src/io/anuke/mindustry/world/blocks/distribution/Junction.java +++ b/core/src/io/anuke/mindustry/world/blocks/distribution/Junction.java @@ -15,7 +15,7 @@ import static io.anuke.mindustry.Vars.*; public class Junction extends Block{ protected float speed = 26; //frames taken to go through this junction - protected int capacity = 32; + protected int capacity = 6; public Junction(String name){ super(name); diff --git a/core/src/io/anuke/mindustry/world/meta/values/NumberValue.java b/core/src/io/anuke/mindustry/world/meta/values/NumberValue.java index 0dd73ac91f..d72f69e877 100644 --- a/core/src/io/anuke/mindustry/world/meta/values/NumberValue.java +++ b/core/src/io/anuke/mindustry/world/meta/values/NumberValue.java @@ -17,7 +17,7 @@ public class NumberValue implements StatValue{ this.unit = unit; this.value = value; - if(unit.localized().contains("???")){ + if(unit != StatUnit.none && unit.localized().contains("???")){ throw new RuntimeException("No bundle definition found for unit: '" + unit + "'"); } } diff --git a/desktop/src/io/anuke/mindustry/desktop/DesktopPlatform.java b/desktop/src/io/anuke/mindustry/desktop/DesktopPlatform.java index 5dfbea48eb..1a353b0656 100644 --- a/desktop/src/io/anuke/mindustry/desktop/DesktopPlatform.java +++ b/desktop/src/io/anuke/mindustry/desktop/DesktopPlatform.java @@ -18,9 +18,7 @@ import io.anuke.ucore.util.Strings; import java.net.NetworkInterface; import java.text.DateFormat; -import java.text.NumberFormat; import java.text.SimpleDateFormat; -import java.util.Date; import java.util.Enumeration; import static io.anuke.mindustry.Vars.*; @@ -47,16 +45,6 @@ public class DesktopPlatform extends Platform{ new FileChooser(text, file -> file.extension().equalsIgnoreCase(filter), open, cons).show(); } - @Override - public String format(Date date){ - return format.format(date); - } - - @Override - public String format(int number){ - return NumberFormat.getIntegerInstance().format(number); - } - @Override public void updateRPC(){ diff --git a/ios/src/io/anuke/mindustry/IOSLauncher.java b/ios/src/io/anuke/mindustry/IOSLauncher.java index afbf7f29ae..e6bd6469ed 100644 --- a/ios/src/io/anuke/mindustry/IOSLauncher.java +++ b/ios/src/io/anuke/mindustry/IOSLauncher.java @@ -19,11 +19,7 @@ import org.robovm.apple.foundation.NSURL; import org.robovm.apple.uikit.*; import java.io.IOException; -import java.text.DateFormat; -import java.text.NumberFormat; -import java.text.SimpleDateFormat; import java.util.Collections; -import java.util.Date; import static io.anuke.mindustry.Vars.*; import static org.robovm.apple.foundation.NSPathUtilities.getDocumentsDirectory; @@ -43,17 +39,6 @@ public class IOSLauncher extends IOSApplication.Delegate { } Platform.instance = new Platform() { - DateFormat format = SimpleDateFormat.getDateTimeInstance(); - - @Override - public String format(Date date) { - return format.format(date); - } - - @Override - public String format(int number) { - return NumberFormat.getIntegerInstance().format(number); - } @Override public void addDialog(TextField field) { diff --git a/server/src/io/anuke/mindustry/server/ServerControl.java b/server/src/io/anuke/mindustry/server/ServerControl.java index 9ecc29d0d3..18260e3315 100644 --- a/server/src/io/anuke/mindustry/server/ServerControl.java +++ b/server/src/io/anuke/mindustry/server/ServerControl.java @@ -306,6 +306,7 @@ public class ServerControl extends Module{ } info(" &ly{0} FPS.", (int) (60f / Timers.delta())); + info(" &ly{0} MB used.", Gdx.app.getJavaHeap() / 1024 / 1024); if(playerGroup.size() > 0){ info(" &lyPlayers: {0}", playerGroup.size());