diff --git a/android/build.gradle b/android/build.gradle index 148adf6a3e..5c288d5e3a 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -8,7 +8,7 @@ buildscript{ } dependencies{ - classpath 'com.android.tools.build:gradle:3.4.0' + classpath 'com.android.tools.build:gradle:3.4.1' } } @@ -166,27 +166,4 @@ task run(type: Exec){ def adb = path + "/platform-tools/adb" commandLine "$adb", 'shell', 'am', 'start', '-n', 'io.anuke.mindustry/io.anuke.mindustry.AndroidLauncher' -} - -// sets up the Android Idea project, using the old Ant based build. -idea{ - module{ - sourceDirs += file("src") - scopes = [COMPILE: [plus: [project.configurations.compile]]] - - iml{ - withXml{ - def node = it.asNode() - def builder = NodeBuilder.newInstance() - builder.current = node - builder.component(name: "FacetManager"){ - facet(type: "android", name: "Android"){ - configuration{ - option(name: "UPDATE_PROPERTY_FILES", value: "true") - } - } - } - } - } - } -} +} \ No newline at end of file diff --git a/android/src/io/anuke/mindustry/AndroidLauncher.java b/android/src/io/anuke/mindustry/AndroidLauncher.java index 7571b3f746..3f75f746fe 100644 --- a/android/src/io/anuke/mindustry/AndroidLauncher.java +++ b/android/src/io/anuke/mindustry/AndroidLauncher.java @@ -15,16 +15,15 @@ import io.anuke.arc.backends.android.surfaceview.AndroidApplication; import io.anuke.arc.backends.android.surfaceview.AndroidApplicationConfiguration; import io.anuke.arc.files.FileHandle; import io.anuke.arc.function.Consumer; +import io.anuke.arc.function.Predicate; import io.anuke.arc.scene.ui.layout.Unit; import io.anuke.arc.util.Strings; import io.anuke.arc.util.serialization.Base64Coder; import io.anuke.mindustry.core.Platform; import io.anuke.mindustry.game.Saves.SaveSlot; import io.anuke.mindustry.io.SaveIO; -import io.anuke.mindustry.net.Net; +import io.anuke.mindustry.net.*; import io.anuke.mindustry.ui.dialogs.FileChooser; -import io.anuke.mindustry.net.ArcNetClient; -import io.anuke.mindustry.net.ArcNetServer; import java.io.*; import java.util.ArrayList; @@ -72,10 +71,10 @@ public class AndroidLauncher extends AndroidApplication{ } @Override - public void showFileChooser(String text, String content, Consumer cons, boolean open, String filetype){ - chooser = new FileChooser(text, file -> file.extension().equalsIgnoreCase(filetype), open, cons); + public void showFileChooser(String text, String content, Consumer cons, boolean open, Predicate filetype){ + chooser = new FileChooser(text, file -> filetype.test(file.extension().toLowerCase()), open, cons); if(Build.VERSION.SDK_INT < Build.VERSION_CODES.M || (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED && - checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED)){ + checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED)){ chooser.show(); chooser = null; }else{ @@ -157,7 +156,7 @@ public class AndroidLauncher extends AndroidApplication{ SaveSlot slot = control.saves.importSave(file); ui.load.runLoadSave(slot); }catch(IOException e){ - ui.showError(Core.bundle.format("save.import.fail", Strings.parseException(e, false))); + ui.showError(Core.bundle.format("save.import.fail", Strings.parseException(e, true))); } }else{ ui.showError("$save.import.invalid"); diff --git a/build.gradle b/build.gradle index bcf90a444b..15c9312444 100644 --- a/build.gradle +++ b/build.gradle @@ -15,8 +15,6 @@ buildscript{ } allprojects{ - apply plugin: "idea" - version = 'release' ext{ diff --git a/core/assets-raw/sprites/blocks/extra/spawn.png b/core/assets-raw/sprites/blocks/extra/spawn.png deleted file mode 100644 index fccd4354e9..0000000000 Binary files a/core/assets-raw/sprites/blocks/extra/spawn.png and /dev/null differ diff --git a/core/assets-raw/sprites_replacement/blocks/distribution/center.png b/core/assets-raw/sprites_replacement/blocks/distribution/center.png new file mode 100644 index 0000000000..ef9b77ae97 Binary files /dev/null and b/core/assets-raw/sprites_replacement/blocks/distribution/center.png differ diff --git a/core/assets-raw/sprites_replacement/blocks/distribution/sorter.png b/core/assets-raw/sprites_replacement/blocks/distribution/sorter.png new file mode 100644 index 0000000000..03876f3138 Binary files /dev/null and b/core/assets-raw/sprites_replacement/blocks/distribution/sorter.png differ diff --git a/core/assets-raw/sprites_replacement/blocks/environment/edge-stencil.png b/core/assets-raw/sprites_replacement/blocks/environment/edge-stencil.png index 7d7e1b2365..4d45e75fde 100644 Binary files a/core/assets-raw/sprites_replacement/blocks/environment/edge-stencil.png and b/core/assets-raw/sprites_replacement/blocks/environment/edge-stencil.png differ diff --git a/core/assets-raw/sprites_replacement/blocks/environment/edge.png b/core/assets-raw/sprites_replacement/blocks/environment/edge.png new file mode 100644 index 0000000000..566dd28288 Binary files /dev/null and b/core/assets-raw/sprites_replacement/blocks/environment/edge.png differ diff --git a/core/assets-raw/sprites_replacement/blocks/environment/edgier.png b/core/assets-raw/sprites_replacement/blocks/environment/edgier.png new file mode 100644 index 0000000000..98d675f453 Binary files /dev/null and b/core/assets-raw/sprites_replacement/blocks/environment/edgier.png differ diff --git a/core/assets-raw/sprites_replacement/blocks/environment/spawn.png b/core/assets-raw/sprites_replacement/blocks/environment/spawn.png new file mode 100644 index 0000000000..dc1a4c30a7 Binary files /dev/null and b/core/assets-raw/sprites_replacement/blocks/environment/spawn.png differ diff --git a/core/assets-raw/sprites_replacement/blocks/production/item-source.png b/core/assets-raw/sprites_replacement/blocks/production/item-source.png new file mode 100644 index 0000000000..b384226e5f Binary files /dev/null and b/core/assets-raw/sprites_replacement/blocks/production/item-source.png differ diff --git a/core/assets-raw/sprites_replacement/blocks/production/liquid-source.png b/core/assets-raw/sprites_replacement/blocks/production/liquid-source.png new file mode 100644 index 0000000000..2c493d30f5 Binary files /dev/null and b/core/assets-raw/sprites_replacement/blocks/production/liquid-source.png differ diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 305733dca0..1b1e986783 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -219,6 +219,9 @@ editor.teams = Teams editor.elevation = Elevation editor.errorload = Error loading file:\n[accent]{0} editor.errorsave = Error saving file:\n[accent]{0} +editor.errorimage = That's an image, not a map. Don't go around changing extensions expecting it to work.\n\nIf you want to import a legacy map, use the 'import legacy map' button in the editor. +editor.errorlegacy = This map is too old, and uses a legacy map format that is no longer supported. +editor.errorheader = This map file is either not valid or corrupt. editor.errorname = Map has no name defined. editor.update = Update editor.randomize = Randomize @@ -271,6 +274,8 @@ filter.option.wall = Wall filter.option.ore = Ore filter.option.floor2 = Secondary Floor filter.option.threshold2 = Secondary Threshold +filter.option.radius = Radius +filter.option.percentile = Percentile width = Width: height = Height: menu = Menu @@ -426,6 +431,7 @@ category.shooting = Shooting category.optional = Optional Enhancements setting.landscape.name = Lock Landscape setting.shadows.name = Shadows +setting.linear.name = Linear Filtering setting.animatedwater.name = Animated Water setting.animatedshields.name = Animated Shields setting.antialias.name = Antialias[LIGHT_GRAY] (requires restart)[] @@ -801,7 +807,7 @@ block.spectre.name = Spectre block.meltdown.name = Meltdown block.container.name = Container block.launch-pad.name = Launch Pad -block.launch-pad.description = Launches batches of items without any need for a core launch. Unfinished. +block.launch-pad.description = Launches batches of items without any need for a core launch. block.launch-pad-large.name = Large Launch Pad team.blue.name = blue team.red.name = red diff --git a/core/assets/maps/fortress.msav b/core/assets/maps/fortress.msav index 24caf622f6..5e1c0a367c 100644 Binary files a/core/assets/maps/fortress.msav and b/core/assets/maps/fortress.msav differ diff --git a/core/assets/maps/impact0078.msav b/core/assets/maps/impact0078.msav new file mode 100644 index 0000000000..92afbebb7b Binary files /dev/null and b/core/assets/maps/impact0078.msav differ diff --git a/core/assets/maps/islands.msav b/core/assets/maps/islands.msav new file mode 100644 index 0000000000..34b00910cf Binary files /dev/null and b/core/assets/maps/islands.msav differ diff --git a/core/assets/maps/labyrinth.msav b/core/assets/maps/labyrinth.msav new file mode 100644 index 0000000000..ab7bf64c9d Binary files /dev/null and b/core/assets/maps/labyrinth.msav differ diff --git a/core/assets/maps/map_9.msav b/core/assets/maps/map_9.msav deleted file mode 100644 index d45c5d618b..0000000000 Binary files a/core/assets/maps/map_9.msav and /dev/null differ diff --git a/core/assets/maps/maze.msav b/core/assets/maps/maze.msav new file mode 100644 index 0000000000..e35b7a4e4b Binary files /dev/null and b/core/assets/maps/maze.msav differ diff --git a/core/assets/maps/saltcrags.msav b/core/assets/maps/saltcrags.msav new file mode 100644 index 0000000000..406168ec90 Binary files /dev/null and b/core/assets/maps/saltcrags.msav differ diff --git a/core/assets/maps/shoreline.msav b/core/assets/maps/shoreline.msav new file mode 100644 index 0000000000..b0320b4350 Binary files /dev/null and b/core/assets/maps/shoreline.msav differ diff --git a/core/assets/sprites/block_colors.png b/core/assets/sprites/block_colors.png index ff20fd35b2..4f8434f343 100644 Binary files a/core/assets/sprites/block_colors.png and b/core/assets/sprites/block_colors.png differ diff --git a/core/assets/sprites/sprites.atlas b/core/assets/sprites/sprites.atlas index 4e03cb8190..fbbcbd8f71 100644 --- a/core/assets/sprites/sprites.atlas +++ b/core/assets/sprites/sprites.atlas @@ -34,14 +34,14 @@ mend-projector-top index: -1 mender rotate: false - xy: 1331, 141 + xy: 1331, 107 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 mender-top rotate: false - xy: 1331, 107 + xy: 1331, 73 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -62,7 +62,7 @@ overdrive-projector-top index: -1 shock-mine rotate: false - xy: 1719, 939 + xy: 1821, 1007 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -88,146 +88,153 @@ bridge-conveyor-end orig: 32, 32 offset: 0, 0 index: -1 -conveyor-0-0 +center rotate: false - xy: 1387, 872 + xy: 1493, 1211 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -conveyor-0-1 +conveyor-0-0 rotate: false xy: 1387, 838 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -conveyor-0-2 +conveyor-0-1 rotate: false xy: 1387, 804 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -conveyor-0-3 +conveyor-0-2 rotate: false xy: 1387, 770 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -conveyor-1-0 +conveyor-0-3 rotate: false xy: 1387, 736 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -conveyor-1-1 +conveyor-1-0 rotate: false xy: 1379, 702 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -conveyor-1-2 +conveyor-1-1 rotate: false xy: 1379, 668 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -conveyor-1-3 +conveyor-1-2 rotate: false xy: 1263, 465 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -conveyor-2-0 +conveyor-1-3 rotate: false xy: 1263, 431 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -conveyor-2-1 +conveyor-2-0 rotate: false xy: 1263, 397 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -conveyor-2-2 +conveyor-2-1 rotate: false xy: 1263, 363 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -conveyor-2-3 +conveyor-2-2 rotate: false xy: 1263, 329 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -conveyor-3-0 +conveyor-2-3 rotate: false xy: 1263, 295 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -conveyor-3-1 +conveyor-3-0 rotate: false xy: 1263, 261 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -conveyor-3-2 +conveyor-3-1 rotate: false xy: 1263, 227 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -conveyor-3-3 +conveyor-3-2 rotate: false xy: 1263, 193 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -conveyor-4-0 +conveyor-3-3 rotate: false xy: 1263, 159 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -conveyor-4-1 +conveyor-4-0 rotate: false xy: 1263, 125 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -conveyor-4-2 +conveyor-4-1 rotate: false xy: 1263, 91 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -conveyor-4-3 +conveyor-4-2 rotate: false xy: 1263, 57 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 +conveyor-4-3 + rotate: false + xy: 1425, 1182 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 titanium-conveyor-0-0 rotate: false xy: 1923, 1007 @@ -377,7 +384,7 @@ distributor index: -1 junction rotate: false - xy: 1263, 23 + xy: 1297, 5 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -391,49 +398,49 @@ mass-driver-base index: -1 overflow-gate rotate: false - xy: 1659, 1075 + xy: 1693, 1075 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conveyor rotate: false - xy: 1863, 1075 + xy: 1897, 1075 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conveyor-arrow rotate: false - xy: 1897, 1075 + xy: 1421, 1046 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conveyor-bridge rotate: false - xy: 1421, 1046 + xy: 1455, 1041 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conveyor-end rotate: false - xy: 1455, 1041 + xy: 1489, 1041 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 router rotate: false - xy: 1617, 1007 + xy: 1583, 973 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 sorter rotate: false - xy: 1855, 973 + xy: 1821, 939 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -622,7 +629,7 @@ block-select index: -1 conduit-liquid rotate: false - xy: 1345, 950 + xy: 1345, 916 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -690,13 +697,6 @@ rubble-4-1 orig: 128, 128 offset: 0, 0 index: -1 -spawn - rotate: false - xy: 1821, 939 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 bridge-conduit rotate: false xy: 1735, 1245 @@ -734,133 +734,133 @@ bridge-conduit-end index: -1 conduit-bottom rotate: false - xy: 1799, 1211 + xy: 1833, 1211 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-bottom-0 rotate: false - xy: 1833, 1211 + xy: 1867, 1211 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-bottom-1 rotate: false - xy: 1867, 1211 + xy: 1901, 1211 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-bottom-2 rotate: false - xy: 1901, 1211 + xy: 1387, 1144 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-bottom-3 rotate: false - xy: 1387, 1144 + xy: 1348, 1086 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-bottom-4 rotate: false - xy: 1348, 1086 + xy: 1345, 1052 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-bottom-5 rotate: false - xy: 1345, 1052 + xy: 1345, 1018 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-bottom-6 rotate: false - xy: 1345, 1018 + xy: 1345, 984 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-top-0 rotate: false - xy: 1345, 916 + xy: 1383, 1110 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-top-1 rotate: false - xy: 1383, 1110 + xy: 1382, 1076 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-top-2 rotate: false - xy: 1382, 1076 + xy: 1379, 1042 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-top-3 rotate: false - xy: 1379, 1042 + xy: 1379, 1008 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-top-4 rotate: false - xy: 1379, 1008 + xy: 1379, 974 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-top-5 rotate: false - xy: 1379, 974 + xy: 1379, 940 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-top-6 rotate: false - xy: 1379, 940 + xy: 1379, 906 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-junction rotate: false - xy: 1429, 634 + xy: 1429, 600 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-router-bottom rotate: false - xy: 1429, 566 + xy: 1395, 532 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-router-liquid rotate: false - xy: 1429, 532 + xy: 1391, 498 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-router-top rotate: false - xy: 1391, 498 + xy: 1425, 498 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -888,84 +888,84 @@ liquid-tank-top index: -1 mechanical-pump rotate: false - xy: 1331, 277 + xy: 1331, 243 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conduit rotate: false - xy: 1727, 1075 + xy: 1761, 1075 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conduit-arrow rotate: false - xy: 1761, 1075 + xy: 1795, 1075 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conduit-bridge rotate: false - xy: 1795, 1075 + xy: 1829, 1075 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conduit-end rotate: false - xy: 1829, 1075 + xy: 1863, 1075 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulse-conduit-top-0 rotate: false - xy: 1863, 1041 + xy: 1897, 1041 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulse-conduit-top-1 rotate: false - xy: 1897, 1041 + xy: 1413, 1012 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulse-conduit-top-2 rotate: false - xy: 1413, 1012 + xy: 1413, 978 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulse-conduit-top-3 rotate: false - xy: 1413, 978 + xy: 1413, 944 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulse-conduit-top-4 rotate: false - xy: 1413, 944 + xy: 1413, 910 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulse-conduit-top-5 rotate: false - xy: 1413, 910 + xy: 1447, 1007 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulse-conduit-top-6 rotate: false - xy: 1447, 1007 + xy: 1481, 1007 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -1049,14 +1049,14 @@ battery-large index: -1 combustion-generator rotate: false - xy: 1731, 1211 + xy: 1765, 1211 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 combustion-generator-top rotate: false - xy: 1765, 1211 + xy: 1799, 1211 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -1133,7 +1133,7 @@ impact-reactor-top index: -1 power-node rotate: false - xy: 1693, 1041 + xy: 1727, 1041 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -1147,14 +1147,14 @@ power-node-large index: -1 power-source rotate: false - xy: 1761, 1041 + xy: 1795, 1041 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 power-void rotate: false - xy: 1795, 1041 + xy: 1829, 1041 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -1168,14 +1168,14 @@ rtg-generator index: -1 rtg-generator-top rotate: false - xy: 1549, 939 + xy: 1651, 1007 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 solar-panel rotate: false - xy: 1821, 973 + xy: 1787, 939 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -1315,21 +1315,21 @@ graphite-press index: -1 incinerator rotate: false - xy: 1727, 1109 + xy: 1761, 1109 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-source rotate: false - xy: 1297, 243 + xy: 1297, 209 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-void rotate: false - xy: 1297, 73 + xy: 1297, 39 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -1357,14 +1357,14 @@ silicon-smelter-top index: -1 liquid-source rotate: false - xy: 1331, 447 + xy: 1331, 413 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 melter rotate: false - xy: 1331, 209 + xy: 1331, 175 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -1413,14 +1413,14 @@ plastanium-compressor-top index: -1 pulverizer rotate: false - xy: 1481, 1007 + xy: 1447, 973 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulverizer-rotator rotate: false - xy: 1515, 1007 + xy: 1481, 973 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -1455,7 +1455,7 @@ silicon-smelter index: -1 smelter rotate: false - xy: 1753, 939 + xy: 1855, 1007 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -1553,7 +1553,7 @@ launch-pad-large index: -1 sortedunloader rotate: false - xy: 1889, 1007 + xy: 1855, 973 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -1658,7 +1658,7 @@ salvo-panel-right index: -1 scorch-heat rotate: false - xy: 1685, 1007 + xy: 1651, 973 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -1805,7 +1805,7 @@ phantom-factory-top-open index: -1 repair-point-base rotate: false - xy: 1549, 1007 + xy: 1515, 973 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -1868,7 +1868,7 @@ wraith-factory-top-open index: -1 copper-wall rotate: false - xy: 1425, 1182 + xy: 1421, 1148 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -1882,7 +1882,7 @@ copper-wall-large index: -1 door rotate: false - xy: 1659, 1143 + xy: 1693, 1143 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -1903,14 +1903,14 @@ door-large-open index: -1 door-open rotate: false - xy: 1727, 1143 + xy: 1761, 1143 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-wall rotate: false - xy: 1489, 1041 + xy: 1523, 1041 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -1980,35 +1980,35 @@ scrap-wall-large4 index: -1 scrap-wall1 rotate: false - xy: 1617, 939 + xy: 1719, 1007 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scrap-wall2 rotate: false - xy: 1719, 1007 + xy: 1685, 973 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scrap-wall3 rotate: false - xy: 1685, 973 + xy: 1651, 939 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scrap-wall4 rotate: false - xy: 1651, 939 + xy: 1753, 1007 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scrap-wall5 rotate: false - xy: 1651, 939 + xy: 1753, 1007 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -2197,7 +2197,7 @@ shell-back index: -1 shot rotate: false - xy: 1821, 1007 + xy: 1787, 973 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -2421,7 +2421,7 @@ coal-centrifuge-icon-large index: -1 coal-centrifuge-icon-medium rotate: false - xy: 1697, 1211 + xy: 1731, 1211 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -2449,7 +2449,7 @@ combustion-generator-icon-small index: -1 conduit-icon-full rotate: false - xy: 1345, 984 + xy: 1345, 950 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -2477,7 +2477,7 @@ container-icon-large index: -1 container-icon-medium rotate: false - xy: 1379, 906 + xy: 1387, 872 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -2526,7 +2526,7 @@ copper-wall-large-icon-large index: -1 copper-wall-large-icon-medium rotate: false - xy: 1421, 1148 + xy: 1459, 1177 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -2547,7 +2547,7 @@ core-foundation-icon-large index: -1 core-foundation-icon-medium rotate: false - xy: 1459, 1177 + xy: 1493, 1177 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -2568,7 +2568,7 @@ core-nucleus-icon-large index: -1 core-nucleus-icon-medium rotate: false - xy: 1493, 1177 + xy: 1527, 1177 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -2589,7 +2589,7 @@ core-shard-icon-large index: -1 core-shard-icon-medium rotate: false - xy: 1527, 1177 + xy: 1561, 1177 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -2603,56 +2603,56 @@ core-shard-icon-small index: -1 cracks-1-0 rotate: false - xy: 1561, 1177 + xy: 1595, 1177 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cracks-1-1 rotate: false - xy: 1595, 1177 + xy: 1629, 1177 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cracks-1-2 rotate: false - xy: 1629, 1177 + xy: 1663, 1177 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cracks-1-3 rotate: false - xy: 1663, 1177 + xy: 1697, 1177 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cracks-1-4 rotate: false - xy: 1697, 1177 + xy: 1731, 1177 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cracks-1-5 rotate: false - xy: 1731, 1177 + xy: 1765, 1177 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cracks-1-6 rotate: false - xy: 1765, 1177 + xy: 1799, 1177 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cracks-1-7 rotate: false - xy: 1799, 1177 + xy: 1833, 1177 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -2911,7 +2911,7 @@ crawler-factory-icon-large index: -1 crawler-factory-icon-medium rotate: false - xy: 1833, 1177 + xy: 1867, 1177 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -2939,7 +2939,7 @@ cryofluidmixer-icon-large index: -1 cryofluidmixer-icon-medium rotate: false - xy: 1867, 1177 + xy: 1901, 1177 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -2967,7 +2967,7 @@ cultivator-icon-large index: -1 cultivator-icon-medium rotate: false - xy: 1901, 1177 + xy: 1455, 1143 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -3002,7 +3002,7 @@ cyclone-icon-large index: -1 cyclone-icon-medium rotate: false - xy: 1455, 1143 + xy: 1489, 1143 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -3030,7 +3030,7 @@ dagger-factory-icon-large index: -1 dagger-factory-icon-medium rotate: false - xy: 1489, 1143 + xy: 1523, 1143 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -3191,7 +3191,7 @@ dart-mech-pad-icon-large index: -1 dart-mech-pad-icon-medium rotate: false - xy: 1523, 1143 + xy: 1557, 1143 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -3226,7 +3226,7 @@ delta-mech-pad-icon-large index: -1 delta-mech-pad-icon-medium rotate: false - xy: 1557, 1143 + xy: 1591, 1143 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -3247,7 +3247,7 @@ differential-generator-icon-large index: -1 differential-generator-icon-medium rotate: false - xy: 1591, 1143 + xy: 1625, 1143 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -3268,7 +3268,7 @@ distributor-icon-large index: -1 distributor-icon-medium rotate: false - xy: 1625, 1143 + xy: 1659, 1143 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -3303,7 +3303,7 @@ door-large-icon-large index: -1 door-large-icon-medium rotate: false - xy: 1693, 1143 + xy: 1727, 1143 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -3331,14 +3331,14 @@ dunerocks-icon-small index: -1 duo rotate: false - xy: 1761, 1143 + xy: 1795, 1143 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 duo-icon-full rotate: false - xy: 1795, 1143 + xy: 1829, 1143 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -3366,7 +3366,7 @@ force-projector-icon-large index: -1 force-projector-icon-medium rotate: false - xy: 1863, 1143 + xy: 1897, 1143 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -3394,7 +3394,7 @@ fortress-factory-icon-large index: -1 fortress-factory-icon-medium rotate: false - xy: 1897, 1143 + xy: 1421, 1114 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -3429,7 +3429,7 @@ fuse-icon-large index: -1 fuse-icon-medium rotate: false - xy: 1421, 1114 + xy: 1455, 1109 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -3457,7 +3457,7 @@ ghoul-factory-icon-large index: -1 ghoul-factory-icon-medium rotate: false - xy: 1455, 1109 + xy: 1489, 1109 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -3478,7 +3478,7 @@ glaive-ship-pad-icon-large index: -1 glaive-ship-pad-icon-medium rotate: false - xy: 1489, 1109 + xy: 1523, 1109 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -3499,7 +3499,7 @@ graphite-press-icon-large index: -1 graphite-press-icon-medium rotate: false - xy: 1523, 1109 + xy: 1557, 1109 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -3527,14 +3527,14 @@ grass-icon-small index: -1 hail rotate: false - xy: 1557, 1109 + xy: 1591, 1109 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 hail-icon-full rotate: false - xy: 1591, 1109 + xy: 1625, 1109 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -3653,7 +3653,7 @@ impact-reactor-icon-large index: -1 impact-reactor-icon-medium rotate: false - xy: 1693, 1109 + xy: 1727, 1109 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -4052,7 +4052,7 @@ javelin-ship-pad-icon-large index: -1 javelin-ship-pad-icon-medium rotate: false - xy: 1297, 39 + xy: 1263, 23 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -4087,7 +4087,7 @@ kiln-icon-large index: -1 kiln-icon-medium rotate: false - xy: 1297, 5 + xy: 1413, 702 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -4122,7 +4122,7 @@ lancer-icon-large index: -1 lancer-icon-medium rotate: false - xy: 1413, 702 + xy: 1413, 668 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -4150,7 +4150,7 @@ laser-drill-icon-large index: -1 laser-drill-icon-medium rotate: false - xy: 1413, 668 + xy: 1395, 634 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -4171,7 +4171,7 @@ launch-pad-icon-large index: -1 launch-pad-icon-medium rotate: false - xy: 1395, 634 + xy: 1395, 600 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -4192,7 +4192,7 @@ launch-pad-large-icon-large index: -1 launch-pad-large-icon-medium rotate: false - xy: 1395, 600 + xy: 1395, 566 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -4220,7 +4220,7 @@ liquid-junction-icon-small index: -1 liquid-router-icon-full rotate: false - xy: 1395, 532 + xy: 1429, 532 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -4269,7 +4269,7 @@ liquid-tank-icon-large index: -1 liquid-tank-icon-medium rotate: false - xy: 1331, 413 + xy: 1331, 379 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -4318,7 +4318,7 @@ mass-driver-icon-large index: -1 mass-driver-icon-medium rotate: false - xy: 1331, 345 + xy: 1331, 311 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -4402,7 +4402,7 @@ mechanical-drill-icon-large index: -1 mechanical-drill-icon-medium rotate: false - xy: 1331, 311 + xy: 1331, 277 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -4451,7 +4451,7 @@ meltdown-icon-large index: -1 meltdown-icon-medium rotate: false - xy: 1331, 243 + xy: 1331, 209 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -4486,7 +4486,7 @@ mend-projector-icon-large index: -1 mend-projector-icon-medium rotate: false - xy: 1331, 175 + xy: 1331, 141 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -4605,7 +4605,7 @@ multi-press-icon-large index: -1 multi-press-icon-medium rotate: false - xy: 1331, 73 + xy: 1331, 39 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -4633,7 +4633,7 @@ oil-extractor-icon-large index: -1 oil-extractor-icon-medium rotate: false - xy: 1331, 39 + xy: 1331, 5 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -4654,7 +4654,7 @@ omega-mech-pad-icon-large index: -1 omega-mech-pad-icon-medium rotate: false - xy: 1331, 5 + xy: 1421, 1080 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -4668,14 +4668,14 @@ omega-mech-pad-icon-small index: -1 ore-coal-icon-full rotate: false - xy: 1421, 1080 + xy: 1455, 1075 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-coal-icon-medium rotate: false - xy: 1421, 1080 + xy: 1455, 1075 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -4696,14 +4696,14 @@ ore-coal-icon-small index: -1 ore-copper-icon-full rotate: false - xy: 1455, 1075 + xy: 1489, 1075 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-copper-icon-medium rotate: false - xy: 1455, 1075 + xy: 1489, 1075 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -4724,14 +4724,14 @@ ore-copper-icon-small index: -1 ore-lead-icon-full rotate: false - xy: 1489, 1075 + xy: 1523, 1075 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-lead-icon-medium rotate: false - xy: 1489, 1075 + xy: 1523, 1075 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -4752,14 +4752,14 @@ ore-lead-icon-small index: -1 ore-scrap-icon-full rotate: false - xy: 1523, 1075 + xy: 1557, 1075 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-scrap-icon-medium rotate: false - xy: 1523, 1075 + xy: 1557, 1075 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -4780,14 +4780,14 @@ ore-scrap-icon-small index: -1 ore-thorium-icon-full rotate: false - xy: 1557, 1075 + xy: 1591, 1075 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-thorium-icon-medium rotate: false - xy: 1557, 1075 + xy: 1591, 1075 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -4808,14 +4808,14 @@ ore-thorium-icon-small index: -1 ore-titanium-icon-full rotate: false - xy: 1591, 1075 + xy: 1625, 1075 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-titanium-icon-medium rotate: false - xy: 1591, 1075 + xy: 1625, 1075 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -4843,7 +4843,7 @@ overdrive-projector-icon-large index: -1 overdrive-projector-icon-medium rotate: false - xy: 1625, 1075 + xy: 1659, 1075 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -4899,7 +4899,7 @@ phantom-factory-icon-large index: -1 phantom-factory-icon-medium rotate: false - xy: 1693, 1075 + xy: 1727, 1075 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -4962,7 +4962,7 @@ phase-wall-large-icon-large index: -1 phase-wall-large-icon-medium rotate: false - xy: 1523, 1041 + xy: 1557, 1041 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -4990,7 +4990,7 @@ phase-weaver-icon-large index: -1 phase-weaver-icon-medium rotate: false - xy: 1557, 1041 + xy: 1591, 1041 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -5004,7 +5004,7 @@ phase-weaver-icon-small index: -1 pine-icon-medium rotate: false - xy: 1591, 1041 + xy: 1625, 1041 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -5025,7 +5025,7 @@ plastanium-compressor-icon-large index: -1 plastanium-compressor-icon-medium rotate: false - xy: 1625, 1041 + xy: 1659, 1041 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -5053,7 +5053,7 @@ pneumatic-drill-icon-large index: -1 pneumatic-drill-icon-medium rotate: false - xy: 1659, 1041 + xy: 1693, 1041 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -5088,7 +5088,7 @@ power-node-large-icon-large index: -1 power-node-large-icon-medium rotate: false - xy: 1727, 1041 + xy: 1761, 1041 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -5130,7 +5130,7 @@ power-void-icon-small index: -1 pulse-conduit-icon-full rotate: false - xy: 1829, 1041 + xy: 1863, 1041 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -5151,7 +5151,7 @@ pulse-conduit-icon-small index: -1 pulverizer-icon-full rotate: false - xy: 1447, 973 + xy: 1515, 1007 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -5179,7 +5179,7 @@ pyratite-mixer-icon-large index: -1 pyratite-mixer-icon-medium rotate: false - xy: 1481, 973 + xy: 1447, 939 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -5193,14 +5193,14 @@ pyratite-mixer-icon-small index: -1 repair-point rotate: false - xy: 1447, 939 + xy: 1549, 1007 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 repair-point-icon-full rotate: false - xy: 1515, 973 + xy: 1481, 939 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -5235,7 +5235,7 @@ revenant-factory-icon-large index: -1 revenant-factory-icon-medium rotate: false - xy: 1481, 939 + xy: 1583, 1007 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -5270,7 +5270,7 @@ ripple-icon-large index: -1 ripple-icon-medium rotate: false - xy: 1583, 1007 + xy: 1549, 973 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -5284,7 +5284,7 @@ ripple-icon-small index: -1 rock-icon-medium rotate: false - xy: 1549, 973 + xy: 1515, 939 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -5319,7 +5319,7 @@ rotary-pump-icon-large index: -1 rotary-pump-icon-medium rotate: false - xy: 1515, 939 + xy: 1617, 1007 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -5354,7 +5354,7 @@ rtg-generator-icon-large index: -1 rtg-generator-icon-medium rotate: false - xy: 1583, 973 + xy: 1549, 939 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -5417,7 +5417,7 @@ salvo-icon-large index: -1 salvo-icon-medium rotate: false - xy: 1651, 1007 + xy: 1617, 973 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -5494,7 +5494,7 @@ scatter-icon-large index: -1 scatter-icon-medium rotate: false - xy: 1617, 973 + xy: 1583, 939 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -5508,14 +5508,14 @@ scatter-icon-small index: -1 scorch rotate: false - xy: 1583, 939 + xy: 1685, 1007 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scorch-icon-full rotate: false - xy: 1651, 973 + xy: 1617, 939 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -5543,7 +5543,7 @@ scrap-wall-gigantic-icon-large index: -1 scrap-wall-gigantic-icon-medium rotate: false - xy: 1753, 1007 + xy: 1719, 973 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -5564,7 +5564,7 @@ scrap-wall-huge-icon-large index: -1 scrap-wall-huge-icon-medium rotate: false - xy: 1719, 973 + xy: 1685, 939 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -5599,7 +5599,7 @@ scrap-wall-large-icon-large index: -1 scrap-wall-large-icon-medium rotate: false - xy: 1685, 939 + xy: 1787, 1007 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -5620,7 +5620,7 @@ separator-icon-large index: -1 separator-icon-medium rotate: false - xy: 1753, 973 + xy: 1719, 939 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -5711,7 +5711,7 @@ silicon-smelter-icon-large index: -1 silicon-smelter-icon-medium rotate: false - xy: 1787, 973 + xy: 1753, 939 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -5739,7 +5739,7 @@ snow-icon-small index: -1 snowrock-icon-medium rotate: false - xy: 1855, 1007 + xy: 1821, 973 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -5788,7 +5788,7 @@ solar-panel-large-icon-large index: -1 solar-panel-large-icon-medium rotate: false - xy: 1787, 939 + xy: 1889, 1007 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -6621,147 +6621,147 @@ wraith-factory-icon-small index: -1 item-biomatter rotate: false - xy: 1761, 1109 + xy: 1795, 1109 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-blast-compound rotate: false - xy: 1795, 1109 + xy: 1829, 1109 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-coal rotate: false - xy: 1829, 1109 + xy: 1863, 1109 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-copper rotate: false - xy: 1863, 1109 + xy: 1897, 1109 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-graphite rotate: false - xy: 1897, 1109 + xy: 2014, 1819 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-lead rotate: false - xy: 2014, 1819 + xy: 1303, 481 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-metaglass rotate: false - xy: 1303, 481 + xy: 1297, 447 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-phase-fabric rotate: false - xy: 1297, 447 + xy: 1297, 413 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-plastanium rotate: false - xy: 1297, 413 + xy: 1297, 379 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-pyratite rotate: false - xy: 1297, 379 + xy: 1297, 345 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-sand rotate: false - xy: 1297, 345 + xy: 1297, 311 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-scrap rotate: false - xy: 1297, 311 + xy: 1297, 277 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-silicon rotate: false - xy: 1297, 277 + xy: 1297, 243 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-spore-pod rotate: false - xy: 1297, 209 + xy: 1297, 175 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-surge-alloy rotate: false - xy: 1297, 175 + xy: 1297, 141 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-thorium rotate: false - xy: 1297, 141 + xy: 1297, 107 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-titanium rotate: false - xy: 1297, 107 + xy: 1297, 73 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-cryofluid rotate: false - xy: 1395, 566 + xy: 1429, 634 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-oil rotate: false - xy: 1429, 600 + xy: 1429, 566 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-slag rotate: false - xy: 1425, 498 + xy: 1331, 447 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-water rotate: false - xy: 1331, 379 + xy: 1331, 345 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -7034,42 +7034,42 @@ button-select index: -1 check-disabled rotate: false - xy: 1493, 1211 + xy: 1527, 1211 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 check-off rotate: false - xy: 1527, 1211 + xy: 1561, 1211 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 check-on rotate: false - xy: 1561, 1211 + xy: 1595, 1211 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 check-on-disabled rotate: false - xy: 1595, 1211 + xy: 1629, 1211 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 check-on-over rotate: false - xy: 1629, 1211 + xy: 1663, 1211 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 check-over rotate: false - xy: 1663, 1211 + xy: 1697, 1211 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -7129,7 +7129,7 @@ discord-banner index: -1 empty-sector rotate: false - xy: 1829, 1143 + xy: 1863, 1143 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -7773,7 +7773,7 @@ icon-players index: -1 icon-power-requirement rotate: false - xy: 1625, 1109 + xy: 1659, 1109 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -7934,7 +7934,7 @@ icon-tree index: -1 icon-tree-locked rotate: false - xy: 1659, 1109 + xy: 1693, 1109 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -8081,7 +8081,7 @@ scroll-knob-vertical-black index: -1 sector-select rotate: false - xy: 1787, 1007 + xy: 1753, 973 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -9525,121 +9525,128 @@ editor-snow3 orig: 32, 32 offset: 0, 0 index: -1 +editor-spawn + rotate: false + xy: 635, 25 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 editor-spore-moss1 - rotate: false - xy: 635, 25 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -spore-moss-icon-editor - rotate: false - xy: 635, 25 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -editor-spore-moss2 rotate: false xy: 669, 59 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -editor-spore-moss3 +spore-moss-icon-editor + rotate: false + xy: 669, 59 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +editor-spore-moss2 rotate: false xy: 669, 25 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 +editor-spore-moss3 + rotate: false + xy: 703, 59 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 editor-stone1 - rotate: false - xy: 703, 59 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -stone-icon-editor - rotate: false - xy: 703, 59 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -editor-stone2 rotate: false xy: 703, 25 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -editor-stone3 +stone-icon-editor + rotate: false + xy: 703, 25 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +editor-stone2 rotate: false xy: 737, 59 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -editor-tainted-water +editor-stone3 rotate: false xy: 737, 25 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 +editor-tainted-water + rotate: false + xy: 771, 59 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 tainted-water-icon-editor rotate: false - xy: 737, 25 + xy: 771, 59 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-tar rotate: false - xy: 771, 59 + xy: 771, 25 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 tar-icon-editor rotate: false - xy: 771, 59 + xy: 771, 25 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-tendrils1 rotate: false - xy: 771, 25 + xy: 733, 827 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-tendrils2 rotate: false - xy: 733, 827 + xy: 767, 827 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-tendrils3 rotate: false - xy: 767, 827 + xy: 801, 827 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-water rotate: false - xy: 801, 827 + xy: 835, 827 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 water-icon-editor rotate: false - xy: 801, 827 + xy: 835, 827 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -9688,14 +9695,14 @@ graphite-press-icon-editor index: -1 hail-icon-editor rotate: false - xy: 835, 827 + xy: 869, 827 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 icerocks-icon-editor rotate: false - xy: 869, 827 + xy: 903, 827 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -9709,21 +9716,21 @@ impact-reactor-icon-editor index: -1 incinerator-icon-editor rotate: false - xy: 903, 827 + xy: 937, 827 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-source-icon-editor rotate: false - xy: 937, 827 + xy: 971, 827 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-void-icon-editor rotate: false - xy: 971, 827 + xy: 1005, 827 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -9737,7 +9744,7 @@ javelin-ship-pad-icon-editor index: -1 junction-icon-editor rotate: false - xy: 1005, 827 + xy: 1039, 827 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -9779,21 +9786,21 @@ launch-pad-large-icon-editor index: -1 liquid-junction-icon-editor rotate: false - xy: 1039, 827 + xy: 1073, 827 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-router-icon-editor rotate: false - xy: 1073, 827 + xy: 1107, 827 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-source-icon-editor rotate: false - xy: 1107, 827 + xy: 1141, 827 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -9821,7 +9828,7 @@ mechanical-drill-icon-editor index: -1 mechanical-pump-icon-editor rotate: false - xy: 1141, 827 + xy: 1175, 827 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -9835,7 +9842,7 @@ meltdown-icon-editor index: -1 melter-icon-editor rotate: false - xy: 1175, 827 + xy: 1209, 827 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -9849,7 +9856,7 @@ mend-projector-icon-editor index: -1 mender-icon-editor rotate: false - xy: 1209, 827 + xy: 1243, 827 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -9884,14 +9891,14 @@ overdrive-projector-icon-editor index: -1 overflow-gate-icon-editor rotate: false - xy: 1243, 827 + xy: 1277, 827 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pebbles-icon-editor rotate: false - xy: 1277, 827 + xy: 1311, 827 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -9905,21 +9912,21 @@ phantom-factory-icon-editor index: -1 phase-conduit-icon-editor rotate: false - xy: 1311, 827 + xy: 1345, 827 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conveyor-icon-editor rotate: false - xy: 1345, 827 + xy: 1379, 827 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-wall-icon-editor rotate: false - xy: 1379, 827 + xy: 1413, 827 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -9961,7 +9968,7 @@ pneumatic-drill-icon-editor index: -1 power-node-icon-editor rotate: false - xy: 1413, 827 + xy: 1447, 827 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -9975,28 +9982,28 @@ power-node-large-icon-editor index: -1 power-source-icon-editor rotate: false - xy: 1447, 827 + xy: 1481, 827 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 power-void-icon-editor rotate: false - xy: 1481, 827 + xy: 1515, 827 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulse-conduit-icon-editor rotate: false - xy: 1515, 827 + xy: 1549, 827 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulverizer-icon-editor rotate: false - xy: 1549, 827 + xy: 1583, 827 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -10010,7 +10017,7 @@ pyratite-mixer-icon-editor index: -1 repair-point-icon-editor rotate: false - xy: 1583, 827 + xy: 1617, 827 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -10038,7 +10045,7 @@ rock-icon-editor index: -1 rocks-icon-editor rotate: false - xy: 1617, 827 + xy: 1651, 827 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -10052,7 +10059,7 @@ rotary-pump-icon-editor index: -1 router-icon-editor rotate: false - xy: 1651, 827 + xy: 1685, 827 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -10066,7 +10073,7 @@ rtg-generator-icon-editor index: -1 saltrocks-icon-editor rotate: false - xy: 1685, 827 + xy: 1719, 827 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -10080,7 +10087,7 @@ salvo-icon-editor index: -1 sandrocks-icon-editor rotate: false - xy: 1719, 827 + xy: 1753, 827 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -10094,7 +10101,7 @@ scatter-icon-editor index: -1 scorch-icon-editor rotate: false - xy: 1753, 827 + xy: 1787, 827 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -10115,7 +10122,7 @@ scrap-wall-huge-icon-editor index: -1 scrap-wall-icon-editor rotate: false - xy: 1787, 827 + xy: 1821, 827 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -10136,28 +10143,28 @@ separator-icon-editor index: -1 shale-boulder-icon-editor rotate: false - xy: 1821, 827 + xy: 1855, 827 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shalerocks-icon-editor rotate: false - xy: 1855, 827 + xy: 1889, 827 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shock-mine-icon-editor rotate: false - xy: 1889, 827 + xy: 1923, 827 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shrubs-icon-editor rotate: false - xy: 1923, 827 + xy: 1957, 827 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -10178,14 +10185,14 @@ snowrock-icon-editor index: -1 snowrocks-icon-editor rotate: false - xy: 1957, 827 + xy: 717, 793 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 solar-panel-icon-editor rotate: false - xy: 717, 793 + xy: 717, 759 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -10199,14 +10206,14 @@ solar-panel-large-icon-editor index: -1 sorter-icon-editor rotate: false - xy: 717, 759 + xy: 751, 793 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 spawn-icon-editor rotate: false - xy: 751, 793 + xy: 717, 725 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -10248,7 +10255,7 @@ spore-press-icon-editor index: -1 sporerocks-icon-editor rotate: false - xy: 717, 725 + xy: 785, 793 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -10262,7 +10269,7 @@ surge-tower-icon-editor index: -1 surge-wall-icon-editor rotate: false - xy: 785, 793 + xy: 751, 759 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -10290,7 +10297,7 @@ tau-mech-pad-icon-editor index: -1 tendrils-icon-editor rotate: false - xy: 751, 759 + xy: 717, 691 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -10318,7 +10325,7 @@ thorium-reactor-icon-editor index: -1 thorium-wall-icon-editor rotate: false - xy: 717, 691 + xy: 819, 793 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -10346,14 +10353,14 @@ titan-factory-icon-editor index: -1 titanium-conveyor-icon-editor rotate: false - xy: 819, 793 + xy: 785, 759 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-wall-icon-editor rotate: false - xy: 785, 759 + xy: 751, 725 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -10381,7 +10388,7 @@ turbine-generator-icon-editor index: -1 unloader-icon-editor rotate: false - xy: 751, 725 + xy: 717, 657 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -10430,1364 +10437,1385 @@ wraith-factory-icon-editor index: -1 sprites3.png -size: 2048,1024 +size: 2048,512 format: RGBA8888 filter: Nearest,Nearest repeat: none char1 rotate: false - xy: 2015, 989 + xy: 449, 59 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 char2 rotate: false - xy: 2015, 955 + xy: 325, 9 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 char3 rotate: false - xy: 1201, 401 + xy: 483, 59 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cliffs1 rotate: false - xy: 1773, 597 + xy: 359, 9 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 coal1 rotate: false - xy: 1839, 837 + xy: 517, 59 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 coal2 rotate: false - xy: 1925, 923 + xy: 393, 9 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 coal3 rotate: false - xy: 1235, 401 + xy: 551, 59 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 copper1 rotate: false - xy: 1773, 563 + xy: 1527, 217 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 copper2 rotate: false - xy: 1839, 803 + xy: 1593, 283 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 copper3 rotate: false - xy: 1959, 923 + xy: 1691, 381 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 craters1 rotate: false - xy: 1269, 401 + xy: 601, 91 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 craters2 rotate: false - xy: 1773, 529 + xy: 1561, 217 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 craters3 rotate: false - xy: 1303, 401 + xy: 1691, 347 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 craters4 rotate: false - xy: 1773, 495 + xy: 635, 91 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 craters5 rotate: false - xy: 1337, 401 + xy: 427, 9 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 craters6 rotate: false - xy: 1773, 461 + xy: 461, 25 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 creeptree rotate: false - xy: 1773, 913 + xy: 1, 81 size: 108, 108 orig: 108, 108 offset: 0, 0 index: -1 dark-metal-large rotate: false - xy: 1, 19 + xy: 1, 15 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 dark-metal1 rotate: false - xy: 1371, 401 + xy: 495, 25 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 dark-metal2 rotate: false - xy: 1405, 401 + xy: 529, 25 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 dark-panel-1 rotate: false - xy: 1439, 401 + xy: 563, 25 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 dark-panel-1-edge rotate: false - xy: 323, 925 - size: 288, 96 - orig: 288, 96 + xy: 645, 415 + size: 96, 96 + orig: 96, 96 offset: 0, 0 index: -1 dark-panel-2 rotate: false - xy: 1473, 401 + xy: 1987, 429 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 dark-panel-2-edge rotate: false - xy: 1, 281 - size: 288, 96 - orig: 288, 96 + xy: 111, 93 + size: 96, 96 + orig: 96, 96 offset: 0, 0 index: -1 dark-panel-3 rotate: false - xy: 1507, 401 + xy: 667, 185 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 dark-panel-3-edge rotate: false - xy: 323, 827 - size: 288, 96 - orig: 288, 96 + xy: 645, 317 + size: 96, 96 + orig: 96, 96 offset: 0, 0 index: -1 dark-panel-4 rotate: false - xy: 1541, 401 + xy: 667, 151 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 dark-panel-4-edge rotate: false - xy: 613, 925 - size: 288, 96 - orig: 288, 96 + xy: 743, 415 + size: 96, 96 + orig: 96, 96 offset: 0, 0 index: -1 dark-panel-5 rotate: false - xy: 1575, 401 + xy: 701, 185 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 dark-panel-5-edge rotate: false - xy: 1, 183 - size: 288, 96 - orig: 288, 96 + xy: 209, 93 + size: 96, 96 + orig: 96, 96 offset: 0, 0 index: -1 dark-panel-6 rotate: false - xy: 1609, 401 + xy: 701, 151 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 dark-panel-6-edge rotate: false - xy: 323, 729 - size: 288, 96 - orig: 288, 96 + xy: 645, 219 + size: 96, 96 + orig: 96, 96 offset: 0, 0 index: -1 darksand-edge rotate: false - xy: 613, 827 - size: 288, 96 - orig: 288, 96 + xy: 743, 317 + size: 96, 96 + orig: 96, 96 offset: 0, 0 index: -1 darksand-tainted-water rotate: false - xy: 903, 335 + xy: 769, 151 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 darksand-tainted-water-edge rotate: false - xy: 903, 925 - size: 288, 96 - orig: 288, 96 + xy: 841, 415 + size: 96, 96 + orig: 96, 96 offset: 0, 0 index: -1 darksand-water rotate: false - xy: 937, 335 + xy: 803, 185 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 darksand-water-edge rotate: false - xy: 1, 85 - size: 288, 96 - orig: 288, 96 + xy: 307, 93 + size: 96, 96 + orig: 96, 96 offset: 0, 0 index: -1 darksand1 rotate: false - xy: 1643, 401 + xy: 735, 185 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 darksand2 rotate: false - xy: 1677, 401 + xy: 735, 151 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 darksand3 rotate: false - xy: 1711, 401 + xy: 769, 185 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 deepwater rotate: false - xy: 971, 335 + xy: 803, 151 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 deepwater-edge rotate: false - xy: 323, 631 - size: 288, 96 - orig: 288, 96 + xy: 743, 219 + size: 96, 96 + orig: 96, 96 offset: 0, 0 index: -1 dunerocks-large rotate: false - xy: 903, 369 + xy: 1527, 251 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 dunerocks1 rotate: false - xy: 1005, 335 + xy: 837, 185 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 dunerocks2 rotate: false - xy: 1039, 335 + xy: 837, 151 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +edge + rotate: false + xy: 871, 185 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 edge-stencil rotate: false - xy: 613, 729 - size: 288, 96 - orig: 288, 96 + xy: 841, 317 + size: 96, 96 + orig: 96, 96 + offset: 0, 0 + index: -1 +edgier + rotate: false + xy: 871, 151 + size: 32, 32 + orig: 32, 32 offset: 0, 0 index: -1 grass-edge rotate: false - xy: 903, 827 - size: 288, 96 - orig: 288, 96 + xy: 939, 415 + size: 96, 96 + orig: 96, 96 offset: 0, 0 index: -1 grass1 rotate: false - xy: 1745, 401 + xy: 905, 185 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 grass2 rotate: false - xy: 1073, 335 + xy: 905, 151 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 grass3 rotate: false - xy: 1839, 769 + xy: 939, 185 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 holostone-edge rotate: false - xy: 1193, 925 - size: 288, 96 - orig: 288, 96 + xy: 405, 93 + size: 96, 96 + orig: 96, 96 offset: 0, 0 index: -1 holostone1 rotate: false - xy: 1107, 351 + xy: 939, 151 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 holostone2 rotate: false - xy: 1141, 351 + xy: 973, 185 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 holostone3 rotate: false - xy: 1175, 351 + xy: 973, 151 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 hotrock1 rotate: false - xy: 1823, 735 + xy: 1007, 185 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 hotrock2 rotate: false - xy: 1823, 701 + xy: 1007, 151 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 hotrock3 rotate: false - xy: 1823, 667 + xy: 1041, 185 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ice-edge rotate: false - xy: 323, 533 - size: 288, 96 - orig: 288, 96 + xy: 841, 219 + size: 96, 96 + orig: 96, 96 offset: 0, 0 index: -1 ice-snow-edge rotate: false - xy: 613, 631 - size: 288, 96 - orig: 288, 96 + xy: 939, 317 + size: 96, 96 + orig: 96, 96 offset: 0, 0 index: -1 ice-snow1 rotate: false - xy: 1277, 367 + xy: 1109, 185 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ice-snow2 rotate: false - xy: 1311, 367 + xy: 1109, 151 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ice-snow3 rotate: false - xy: 1345, 367 + xy: 1143, 185 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ice1 rotate: false - xy: 1823, 633 + xy: 1041, 151 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ice2 rotate: false - xy: 1209, 367 + xy: 1075, 185 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ice3 rotate: false - xy: 1243, 367 + xy: 1075, 151 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 icerocks-large rotate: false - xy: 1773, 847 + xy: 1625, 349 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 icerocks1 rotate: false - xy: 1379, 367 + xy: 1143, 151 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 icerocks2 rotate: false - xy: 1413, 367 + xy: 1177, 185 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ignarock-edge rotate: false - xy: 903, 729 - size: 288, 96 - orig: 288, 96 + xy: 1037, 415 + size: 96, 96 + orig: 96, 96 offset: 0, 0 index: -1 ignarock1 rotate: false - xy: 1447, 367 + xy: 1177, 151 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ignarock2 rotate: false - xy: 1481, 367 + xy: 1211, 185 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ignarock3 rotate: false - xy: 1515, 367 + xy: 1211, 151 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 lead1 rotate: false - xy: 1549, 367 + xy: 1245, 185 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 lead2 rotate: false - xy: 1583, 367 + xy: 1245, 151 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 lead3 rotate: false - xy: 1617, 367 + xy: 1279, 185 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 magmarock1 rotate: false - xy: 1651, 367 + xy: 1279, 151 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 magmarock2 rotate: false - xy: 1685, 367 + xy: 1313, 185 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 magmarock3 rotate: false - xy: 1719, 367 + xy: 1313, 151 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor rotate: false - xy: 1753, 367 + xy: 1347, 185 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor-2 rotate: false - xy: 199, 1 + xy: 1347, 151 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor-2-edge rotate: false - xy: 1193, 827 - size: 288, 96 - orig: 288, 96 + xy: 503, 93 + size: 96, 96 + orig: 96, 96 offset: 0, 0 index: -1 metal-floor-3 rotate: false - xy: 1807, 597 + xy: 1381, 185 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor-3-edge rotate: false - xy: 1483, 925 - size: 288, 96 - orig: 288, 96 + xy: 939, 219 + size: 96, 96 + orig: 96, 96 offset: 0, 0 index: -1 metal-floor-5 rotate: false - xy: 1807, 563 + xy: 1381, 151 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor-5-edge rotate: false - xy: 323, 435 - size: 288, 96 - orig: 288, 96 + xy: 1037, 317 + size: 96, 96 + orig: 96, 96 offset: 0, 0 index: -1 metal-floor-damaged-edge rotate: false - xy: 613, 533 - size: 288, 96 - orig: 288, 96 + xy: 1135, 415 + size: 96, 96 + orig: 96, 96 offset: 0, 0 index: -1 metal-floor-damaged1 rotate: false - xy: 1807, 529 + xy: 1415, 185 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor-damaged2 rotate: false - xy: 1807, 495 + xy: 1415, 151 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor-damaged3 rotate: false - xy: 1807, 461 + xy: 1449, 185 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor-edge rotate: false - xy: 903, 631 - size: 288, 96 - orig: 288, 96 + xy: 1037, 219 + size: 96, 96 + orig: 96, 96 offset: 0, 0 index: -1 moss-edge rotate: false - xy: 1193, 729 - size: 288, 96 - orig: 288, 96 + xy: 1135, 317 + size: 96, 96 + orig: 96, 96 offset: 0, 0 index: -1 moss1 rotate: false - xy: 1107, 317 + xy: 1449, 151 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 moss2 rotate: false - xy: 1141, 317 + xy: 1483, 185 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 moss3 rotate: false - xy: 1175, 317 + xy: 1483, 151 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-coal1 rotate: false - xy: 1209, 333 + xy: 1517, 183 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-coal2 rotate: false - xy: 1243, 333 + xy: 1551, 183 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-coal3 rotate: false - xy: 1277, 333 + xy: 1517, 149 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-copper1 rotate: false - xy: 1311, 333 + xy: 1551, 149 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-copper2 rotate: false - xy: 1345, 333 + xy: 1585, 183 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-copper3 rotate: false - xy: 1379, 333 + xy: 1585, 149 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-lead1 rotate: false - xy: 1413, 333 + xy: 669, 117 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-lead2 rotate: false - xy: 1447, 333 + xy: 703, 117 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-lead3 rotate: false - xy: 1481, 333 + xy: 737, 117 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-scrap1 rotate: false - xy: 1515, 333 + xy: 771, 117 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-scrap2 rotate: false - xy: 1549, 333 + xy: 805, 117 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-scrap3 rotate: false - xy: 1583, 333 + xy: 839, 117 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-thorium1 rotate: false - xy: 1617, 333 + xy: 873, 117 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-thorium2 rotate: false - xy: 1651, 333 + xy: 907, 117 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-thorium3 rotate: false - xy: 1685, 333 + xy: 941, 117 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-titanium1 rotate: false - xy: 1719, 333 + xy: 975, 117 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-titanium2 rotate: false - xy: 1753, 333 + xy: 1009, 117 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-titanium3 rotate: false - xy: 1857, 735 + xy: 1043, 117 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pebbles-edge rotate: false - xy: 1483, 827 - size: 288, 96 - orig: 288, 96 + xy: 1233, 415 + size: 96, 96 + orig: 96, 96 offset: 0, 0 index: -1 pebbles1 rotate: false - xy: 1857, 701 + xy: 1077, 117 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pebbles2 rotate: false - xy: 1857, 667 + xy: 1111, 117 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pebbles3 rotate: false - xy: 1857, 633 + xy: 1145, 117 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pine rotate: false - xy: 1773, 731 + xy: 1987, 463 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 rock1 rotate: false - xy: 199, 35 + xy: 199, 43 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 rock2 rotate: false - xy: 1101, 385 + xy: 249, 43 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 rocks-large rotate: false - xy: 1883, 957 + xy: 1723, 447 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 rocks1 rotate: false - xy: 1841, 599 + xy: 1179, 117 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 rocks2 rotate: false - xy: 1841, 565 + xy: 1213, 117 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 salt rotate: false - xy: 1841, 531 + xy: 1247, 117 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 salt-edge rotate: false - xy: 613, 435 - size: 288, 96 - orig: 288, 96 + xy: 1135, 219 + size: 96, 96 + orig: 96, 96 offset: 0, 0 index: -1 saltrocks-large rotate: false - xy: 67, 19 + xy: 1789, 447 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 saltrocks1 rotate: false - xy: 1841, 497 + xy: 1281, 117 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 saltrocks2 rotate: false - xy: 1841, 463 + xy: 1315, 117 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 sand-edge rotate: false - xy: 903, 533 - size: 288, 96 - orig: 288, 96 + xy: 1233, 317 + size: 96, 96 + orig: 96, 96 offset: 0, 0 index: -1 sand-water rotate: false - xy: 1277, 299 + xy: 1451, 117 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 sand-water-edge rotate: false - xy: 1193, 631 - size: 288, 96 - orig: 288, 96 + xy: 1331, 415 + size: 96, 96 + orig: 96, 96 offset: 0, 0 index: -1 sand1 rotate: false - xy: 233, 1 + xy: 1349, 117 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 sand2 rotate: false - xy: 1209, 299 + xy: 1383, 117 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 sand3 rotate: false - xy: 1243, 299 + xy: 1417, 117 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 sandrocks-large rotate: false - xy: 969, 369 + xy: 1855, 447 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 sandrocks1 rotate: false - xy: 1311, 299 + xy: 669, 83 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 sandrocks2 rotate: false - xy: 1345, 299 + xy: 703, 83 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scrap1 rotate: false - xy: 1379, 299 + xy: 737, 83 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scrap2 rotate: false - xy: 1413, 299 + xy: 771, 83 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scrap3 rotate: false - xy: 1447, 299 + xy: 805, 83 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shale-boulder1 rotate: false - xy: 1583, 299 + xy: 941, 83 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shale-boulder2 rotate: false - xy: 1617, 299 + xy: 975, 83 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shale-edge rotate: false - xy: 1483, 729 - size: 288, 96 - orig: 288, 96 + xy: 1233, 219 + size: 96, 96 + orig: 96, 96 offset: 0, 0 index: -1 shale1 rotate: false - xy: 1481, 299 + xy: 839, 83 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shale2 rotate: false - xy: 1515, 299 + xy: 873, 83 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shale3 rotate: false - xy: 1549, 299 + xy: 907, 83 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shalerocks-large rotate: false - xy: 1773, 781 + xy: 1921, 447 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 shalerocks1 rotate: false - xy: 1651, 299 + xy: 1009, 83 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shalerocks2 rotate: false - xy: 1685, 299 + xy: 1043, 83 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shrubs-large rotate: false - xy: 1949, 957 + xy: 601, 125 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 shrubs1 rotate: false - xy: 1719, 299 + xy: 1077, 83 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shrubs2 rotate: false - xy: 1753, 299 + xy: 1111, 83 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 snow-edge rotate: false - xy: 903, 435 - size: 288, 96 - orig: 288, 96 + xy: 1331, 317 + size: 96, 96 + orig: 96, 96 offset: 0, 0 index: -1 snow1 rotate: false - xy: 1875, 599 + xy: 1145, 83 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 snow2 rotate: false - xy: 1875, 565 + xy: 1179, 83 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 snow3 rotate: false - xy: 1875, 531 + xy: 1213, 83 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 snowrock1 rotate: false - xy: 1773, 681 + xy: 299, 43 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 snowrock2 rotate: false - xy: 1151, 385 + xy: 349, 43 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 snowrocks-large rotate: false - xy: 133, 19 + xy: 67, 15 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 snowrocks1 rotate: false - xy: 1875, 497 + xy: 1247, 83 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 snowrocks2 rotate: false - xy: 1875, 463 + xy: 1281, 83 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +spawn + rotate: false + xy: 1315, 83 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 spawn-edge rotate: false - xy: 1193, 533 - size: 288, 96 - orig: 288, 96 + xy: 1429, 415 + size: 96, 96 + orig: 96, 96 offset: 0, 0 index: -1 spore-cluster1 rotate: false - xy: 1839, 871 + xy: 199, 1 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 spore-cluster2 rotate: false - xy: 1883, 915 + xy: 241, 1 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 spore-cluster3 rotate: false - xy: 249, 43 + xy: 283, 1 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 spore-moss-edge rotate: false - xy: 1483, 631 - size: 288, 96 - orig: 288, 96 + xy: 1331, 219 + size: 96, 96 + orig: 96, 96 offset: 0, 0 index: -1 spore-moss1 rotate: false - xy: 267, 9 + xy: 1349, 83 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 spore-moss2 rotate: false - xy: 1993, 921 + xy: 1383, 83 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 spore-moss3 rotate: false - xy: 1779, 427 + xy: 1417, 83 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 spore-pine rotate: false - xy: 1773, 631 + xy: 399, 43 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 sporerocks-large rotate: false - xy: 1035, 369 + xy: 133, 27 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 sporerocks1 rotate: false - xy: 1813, 427 + xy: 1451, 83 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 sporerocks2 rotate: false - xy: 1847, 429 + xy: 1627, 315 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 stone-edge rotate: false - xy: 1193, 435 - size: 288, 96 - orig: 288, 96 + xy: 1429, 317 + size: 96, 96 + orig: 96, 96 offset: 0, 0 index: -1 stone1 rotate: false - xy: 1881, 429 + xy: 1627, 281 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 stone2 rotate: false - xy: 1873, 837 + xy: 1661, 313 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 stone3 rotate: false - xy: 1873, 803 + xy: 1661, 279 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 tainted-water rotate: false - xy: 1873, 769 + xy: 1695, 313 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 tainted-water-edge rotate: false - xy: 1483, 533 - size: 288, 96 - orig: 288, 96 + xy: 1527, 415 + size: 96, 96 + orig: 96, 96 offset: 0, 0 index: -1 tar rotate: false - xy: 1891, 735 + xy: 1695, 279 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 tar-edge rotate: false - xy: 1483, 435 - size: 288, 96 - orig: 288, 96 + xy: 1429, 219 + size: 96, 96 + orig: 96, 96 offset: 0, 0 index: -1 tendrils-edge rotate: false - xy: 323, 337 - size: 288, 96 - orig: 288, 96 + xy: 1527, 317 + size: 96, 96 + orig: 96, 96 offset: 0, 0 index: -1 tendrils1 rotate: false - xy: 1891, 701 + xy: 1485, 115 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 tendrils2 rotate: false - xy: 1891, 667 + xy: 1519, 115 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 tendrils3 rotate: false - xy: 1891, 633 + xy: 1553, 115 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 thorium1 rotate: false - xy: 1909, 599 + xy: 1485, 81 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 thorium2 rotate: false - xy: 1909, 565 + xy: 1519, 81 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 thorium3 rotate: false - xy: 1909, 531 + xy: 1553, 81 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium1 rotate: false - xy: 1909, 497 + xy: 1587, 115 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium2 rotate: false - xy: 1909, 463 + xy: 1587, 81 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium3 rotate: false - xy: 1915, 429 + xy: 1725, 413 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 water rotate: false - xy: 1787, 393 + xy: 1725, 379 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 water-edge rotate: false - xy: 613, 337 - size: 288, 96 - orig: 288, 96 + xy: 1625, 415 + size: 96, 96 + orig: 96, 96 offset: 0, 0 index: -1 white-tree rotate: false - xy: 1, 701 + xy: 1, 191 size: 320, 320 orig: 320, 320 offset: 0, 0 index: -1 white-tree-dead rotate: false - xy: 1, 379 + xy: 323, 191 size: 320, 320 orig: 320, 320 offset: 0, 0 diff --git a/core/assets/sprites/sprites.png b/core/assets/sprites/sprites.png index 71da20b99c..d5a5124440 100644 Binary files a/core/assets/sprites/sprites.png and b/core/assets/sprites/sprites.png differ diff --git a/core/assets/sprites/sprites2.png b/core/assets/sprites/sprites2.png index a3ae8c4fee..4d039058cd 100644 Binary files a/core/assets/sprites/sprites2.png and b/core/assets/sprites/sprites2.png differ diff --git a/core/assets/sprites/sprites3.png b/core/assets/sprites/sprites3.png index 192d3985b9..172eff07e4 100644 Binary files a/core/assets/sprites/sprites3.png and b/core/assets/sprites/sprites3.png differ diff --git a/core/assets/sprites/sprites_fallback.atlas b/core/assets/sprites/sprites_fallback.atlas index 8f3916def5..a2cb0e2f03 100644 --- a/core/assets/sprites/sprites_fallback.atlas +++ b/core/assets/sprites/sprites_fallback.atlas @@ -2206,153 +2206,160 @@ bridge-conveyor-end orig: 32, 32 offset: 0, 0 index: -1 +center + rotate: false + xy: 733, 386 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 conveyor-0-0 - rotate: false - xy: 903, 305 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -conveyor-icon-editor - rotate: false - xy: 903, 305 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -conveyor-0-1 rotate: false xy: 860, 276 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -conveyor-0-2 +conveyor-icon-editor + rotate: false + xy: 860, 276 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +conveyor-0-1 rotate: false xy: 826, 266 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -conveyor-0-3 +conveyor-0-2 rotate: false xy: 777, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -conveyor-1-0 +conveyor-0-3 rotate: false xy: 971, 323 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -conveyor-1-1 +conveyor-1-0 rotate: false xy: 709, 216 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -conveyor-1-2 +conveyor-1-1 rotate: false xy: 675, 189 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -conveyor-1-3 +conveyor-1-2 rotate: false xy: 641, 173 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -conveyor-2-0 +conveyor-1-3 rotate: false xy: 743, 216 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -conveyor-2-1 +conveyor-2-0 rotate: false xy: 937, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -conveyor-2-2 +conveyor-2-1 rotate: false xy: 894, 271 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -conveyor-2-3 +conveyor-2-2 rotate: false xy: 860, 242 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -conveyor-3-0 +conveyor-2-3 rotate: false xy: 811, 232 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -conveyor-3-1 +conveyor-3-0 rotate: false xy: 777, 200 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -conveyor-3-2 +conveyor-3-1 rotate: false xy: 971, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -conveyor-3-3 +conveyor-3-2 rotate: false xy: 709, 182 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -conveyor-4-0 +conveyor-3-3 rotate: false xy: 675, 155 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -conveyor-4-1 +conveyor-4-0 rotate: false xy: 641, 139 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -conveyor-4-2 +conveyor-4-1 rotate: false xy: 743, 182 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -conveyor-4-3 +conveyor-4-2 rotate: false xy: 928, 255 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 +conveyor-4-3 + rotate: false + xy: 894, 237 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 water-extractor rotate: false xy: 793, 959 @@ -2418,7 +2425,7 @@ block-select index: -1 conduit-liquid rotate: false - xy: 869, 310 + xy: 826, 300 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -2467,105 +2474,105 @@ bridge-conduit-end index: -1 conduit-bottom rotate: false - xy: 690, 291 + xy: 758, 318 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-bottom-0 rotate: false - xy: 758, 318 + xy: 792, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-bottom-1 rotate: false - xy: 792, 302 + xy: 641, 275 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-bottom-2 rotate: false - xy: 641, 275 + xy: 724, 284 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-bottom-3 rotate: false - xy: 724, 284 + xy: 758, 284 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-bottom-4 rotate: false - xy: 758, 284 + xy: 675, 257 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-bottom-5 rotate: false - xy: 675, 257 + xy: 641, 241 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-bottom-6 rotate: false - xy: 641, 241 + xy: 945, 357 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-top-0 rotate: false - xy: 826, 300 + xy: 792, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-top-1 rotate: false - xy: 792, 268 + xy: 979, 357 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-top-2 rotate: false - xy: 979, 357 + xy: 709, 250 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-top-3 rotate: false - xy: 709, 250 + xy: 675, 223 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-top-4 rotate: false - xy: 675, 223 + xy: 641, 207 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-top-5 rotate: false - xy: 641, 207 + xy: 743, 250 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-top-6 rotate: false - xy: 743, 250 + xy: 937, 323 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -2607,21 +2614,21 @@ battery-icon-editor index: -1 combustion-generator rotate: false - xy: 690, 325 + xy: 724, 318 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 combustion-generator-icon-editor rotate: false - xy: 690, 325 + xy: 724, 318 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 combustion-generator-top rotate: false - xy: 724, 318 + xy: 690, 291 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -2761,35 +2768,35 @@ wraith-factory-top-open index: -1 copper-wall rotate: false - xy: 894, 237 + xy: 845, 208 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 copper-wall-icon-editor rotate: false - xy: 894, 237 + xy: 845, 208 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 door rotate: false - xy: 743, 46 + xy: 743, 12 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 door-icon-editor rotate: false - xy: 743, 46 + xy: 743, 12 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 door-open rotate: false - xy: 777, 64 + xy: 777, 30 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -2845,404 +2852,397 @@ arc-icon-editor index: -1 char-icon-editor rotate: false - xy: 733, 386 + xy: 767, 386 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-char1 rotate: false - xy: 733, 386 + xy: 767, 386 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cliffs-icon-editor rotate: false - xy: 801, 336 + xy: 835, 334 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-icon-editor rotate: false - xy: 945, 357 + xy: 903, 339 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 craters-icon-editor rotate: false - xy: 777, 132 + xy: 962, 221 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-craters1 rotate: false - xy: 777, 132 + xy: 962, 221 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 dark-metal-icon-editor rotate: false - xy: 641, 37 + xy: 641, 3 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 dark-panel-1-icon-editor rotate: false - xy: 641, 3 + xy: 675, 53 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-dark-panel-1 rotate: false - xy: 641, 3 + xy: 675, 53 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 dark-panel-2-icon-editor rotate: false - xy: 675, 53 + xy: 675, 19 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-dark-panel-2 rotate: false - xy: 675, 53 + xy: 675, 19 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 dark-panel-3-icon-editor rotate: false - xy: 675, 19 + xy: 913, 187 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-dark-panel-3 rotate: false - xy: 675, 19 + xy: 913, 187 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 dark-panel-4-icon-editor rotate: false - xy: 913, 187 + xy: 879, 169 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-dark-panel-4 rotate: false - xy: 913, 187 + xy: 879, 169 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 dark-panel-5-icon-editor rotate: false - xy: 879, 169 + xy: 845, 140 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-dark-panel-5 rotate: false - xy: 879, 169 + xy: 845, 140 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 dark-panel-6-icon-editor rotate: false - xy: 845, 140 + xy: 811, 130 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-dark-panel-6 rotate: false - xy: 845, 140 + xy: 811, 130 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 darksand-icon-editor rotate: false - xy: 811, 130 + xy: 777, 98 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-darksand1 rotate: false - xy: 811, 130 + xy: 777, 98 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 darksand-tainted-water-icon-editor rotate: false - xy: 777, 98 + xy: 709, 80 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-darksand-tainted-water rotate: false - xy: 777, 98 + xy: 709, 80 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 darksand-water-icon-editor rotate: false - xy: 709, 80 + xy: 743, 80 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-darksand-water rotate: false - xy: 709, 80 + xy: 743, 80 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 deepwater-icon-editor rotate: false - xy: 947, 187 + xy: 981, 187 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-deepwater rotate: false - xy: 947, 187 + xy: 981, 187 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 dunerocks-icon-editor rotate: false - xy: 777, 30 + xy: 913, 153 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 duo-icon-editor rotate: false - xy: 879, 135 + xy: 845, 106 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-char2 rotate: false - xy: 811, 96 + xy: 947, 153 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-char3 rotate: false - xy: 947, 153 + xy: 981, 153 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-craters2 rotate: false - xy: 981, 153 + xy: 811, 62 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-craters3 rotate: false - xy: 811, 62 + xy: 811, 28 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-darksand2 rotate: false - xy: 811, 28 + xy: 845, 72 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-darksand3 rotate: false - xy: 845, 72 + xy: 845, 38 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-grass1 rotate: false - xy: 845, 38 + xy: 845, 4 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 grass-icon-editor rotate: false - xy: 845, 38 + xy: 845, 4 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-grass2 rotate: false - xy: 845, 4 + xy: 913, 119 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-grass3 rotate: false - xy: 913, 119 + xy: 879, 101 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-holostone1 rotate: false - xy: 879, 101 + xy: 947, 119 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 holostone-icon-editor rotate: false - xy: 879, 101 + xy: 947, 119 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-holostone2 rotate: false - xy: 947, 119 + xy: 981, 119 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-holostone3 rotate: false - xy: 981, 119 + xy: 879, 67 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-hotrock1 rotate: false - xy: 879, 67 + xy: 879, 33 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 hotrock-icon-editor rotate: false - xy: 879, 67 + xy: 879, 33 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-hotrock2 rotate: false - xy: 879, 33 + xy: 913, 85 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-hotrock3 rotate: false - xy: 913, 85 + xy: 947, 85 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ice-snow1 rotate: false - xy: 913, 17 + xy: 947, 51 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ice-snow-icon-editor rotate: false - xy: 913, 17 + xy: 947, 51 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ice-snow2 rotate: false - xy: 947, 51 + xy: 981, 51 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ice-snow3 rotate: false - xy: 981, 51 + xy: 947, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ice1 rotate: false - xy: 947, 85 + xy: 981, 85 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ice-icon-editor rotate: false - xy: 947, 85 + xy: 981, 85 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ice2 rotate: false - xy: 981, 85 + xy: 913, 51 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ice3 rotate: false - xy: 913, 51 + xy: 913, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ignarock1 rotate: false - xy: 947, 17 + xy: 981, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ignarock-icon-editor - rotate: false - xy: 947, 17 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -editor-ignarock2 rotate: false xy: 981, 17 size: 32, 32 @@ -3496,7 +3496,7 @@ coal-centrifuge-icon-large index: -1 coal-centrifuge-icon-medium rotate: false - xy: 835, 334 + xy: 690, 325 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -3510,7 +3510,7 @@ combustion-generator-icon-large index: -1 conduit-icon-full rotate: false - xy: 903, 339 + xy: 869, 310 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -3531,7 +3531,7 @@ container-icon-large index: -1 container-icon-medium rotate: false - xy: 937, 323 + xy: 903, 305 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -3559,7 +3559,7 @@ copper-wall-large-icon-large index: -1 copper-wall-large-icon-medium rotate: false - xy: 845, 208 + xy: 811, 198 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -3573,7 +3573,7 @@ core-foundation-icon-large index: -1 core-foundation-icon-medium rotate: false - xy: 811, 198 + xy: 777, 166 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -3587,7 +3587,7 @@ core-nucleus-icon-large index: -1 core-nucleus-icon-medium rotate: false - xy: 777, 166 + xy: 962, 255 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -3601,63 +3601,63 @@ core-shard-icon-large index: -1 core-shard-icon-medium rotate: false - xy: 962, 255 + xy: 709, 148 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cracks-1-0 rotate: false - xy: 709, 148 + xy: 675, 121 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cracks-1-1 rotate: false - xy: 675, 121 + xy: 641, 105 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cracks-1-2 rotate: false - xy: 641, 105 + xy: 743, 148 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cracks-1-3 rotate: false - xy: 743, 148 + xy: 928, 221 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cracks-1-4 rotate: false - xy: 928, 221 + xy: 879, 203 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cracks-1-5 rotate: false - xy: 879, 203 + xy: 845, 174 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cracks-1-6 rotate: false - xy: 845, 174 + xy: 811, 164 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cracks-1-7 rotate: false - xy: 811, 164 + xy: 777, 132 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -3678,7 +3678,7 @@ crawler-factory-icon-large index: -1 crawler-factory-icon-medium rotate: false - xy: 962, 221 + xy: 709, 114 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -3692,7 +3692,7 @@ cryofluidmixer-icon-large index: -1 cryofluidmixer-icon-medium rotate: false - xy: 709, 114 + xy: 675, 87 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -3706,7 +3706,7 @@ cultivator-icon-large index: -1 cultivator-icon-medium rotate: false - xy: 675, 87 + xy: 641, 71 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -3720,7 +3720,7 @@ cyclone-icon-large index: -1 cyclone-icon-medium rotate: false - xy: 641, 71 + xy: 743, 114 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -3734,7 +3734,7 @@ dagger-factory-icon-large index: -1 dagger-factory-icon-medium rotate: false - xy: 743, 114 + xy: 641, 37 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -3818,7 +3818,7 @@ dart-mech-pad-icon-large index: -1 dart-mech-pad-icon-medium rotate: false - xy: 743, 80 + xy: 947, 187 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -3839,7 +3839,7 @@ delta-mech-pad-icon-large index: -1 delta-mech-pad-icon-medium rotate: false - xy: 981, 187 + xy: 709, 46 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -3853,7 +3853,7 @@ differential-generator-icon-large index: -1 differential-generator-icon-medium rotate: false - xy: 709, 46 + xy: 709, 12 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -3867,7 +3867,7 @@ distributor-icon-large index: -1 distributor-icon-medium rotate: false - xy: 709, 12 + xy: 743, 46 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -3888,7 +3888,7 @@ door-large-icon-large index: -1 door-large-icon-medium rotate: false - xy: 743, 12 + xy: 777, 64 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -3902,14 +3902,14 @@ dunerocks-icon-large index: -1 duo rotate: false - xy: 913, 153 + xy: 879, 135 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 duo-icon-full rotate: false - xy: 845, 106 + xy: 811, 96 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -5348,42 +5348,42 @@ button-right-over index: -1 check-disabled rotate: false - xy: 767, 386 + xy: 801, 370 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 check-off rotate: false - xy: 801, 370 + xy: 835, 368 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 check-on rotate: false - xy: 835, 368 + xy: 869, 344 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 check-on-disabled rotate: false - xy: 869, 344 + xy: 733, 352 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 check-on-over rotate: false - xy: 733, 352 + xy: 767, 352 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 check-over rotate: false - xy: 767, 352 + xy: 801, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -5695,3759 +5695,3766 @@ filter: Nearest,Nearest repeat: none mender rotate: false - xy: 443, 445 + xy: 35, 3 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 mender-icon-editor rotate: false - xy: 443, 445 + xy: 35, 3 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 mender-top rotate: false - xy: 477, 479 + xy: 69, 37 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shock-mine rotate: false - xy: 307, 105 + xy: 375, 173 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-0-0 rotate: false - xy: 477, 207 + xy: 511, 241 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-icon-editor rotate: false - xy: 477, 207 + xy: 511, 241 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-0-1 rotate: false - xy: 511, 241 + xy: 545, 275 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-0-2 rotate: false - xy: 545, 275 + xy: 579, 309 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-0-3 rotate: false - xy: 579, 309 + xy: 613, 343 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-1-0 rotate: false - xy: 613, 343 + xy: 647, 377 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-1-1 rotate: false - xy: 647, 377 + xy: 681, 411 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-1-2 rotate: false - xy: 681, 411 + xy: 715, 445 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-1-3 rotate: false - xy: 715, 445 + xy: 749, 479 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-2-0 rotate: false - xy: 749, 479 + xy: 307, 3 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-2-1 rotate: false - xy: 307, 3 + xy: 341, 37 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-2-2 rotate: false - xy: 341, 37 + xy: 375, 71 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-2-3 rotate: false - xy: 375, 71 + xy: 409, 105 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-3-0 rotate: false - xy: 409, 105 + xy: 443, 139 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-3-1 rotate: false - xy: 443, 139 + xy: 477, 173 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-3-2 rotate: false - xy: 477, 173 + xy: 511, 207 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-3-3 rotate: false - xy: 511, 207 + xy: 545, 241 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-4-0 rotate: false - xy: 545, 241 + xy: 579, 275 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-4-1 rotate: false - xy: 579, 275 + xy: 613, 309 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-4-2 rotate: false - xy: 613, 309 + xy: 647, 343 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-4-3 rotate: false - xy: 647, 343 + xy: 681, 377 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 junction rotate: false - xy: 69, 105 + xy: 137, 173 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 junction-icon-editor rotate: false - xy: 69, 105 + xy: 137, 173 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 overflow-gate rotate: false - xy: 375, 343 + xy: 443, 411 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 overflow-gate-icon-editor rotate: false - xy: 375, 343 + xy: 443, 411 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conveyor rotate: false - xy: 137, 71 + xy: 205, 139 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conveyor-icon-editor rotate: false - xy: 137, 71 + xy: 205, 139 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conveyor-arrow rotate: false - xy: 171, 105 + xy: 239, 173 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conveyor-bridge rotate: false - xy: 205, 139 + xy: 273, 207 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conveyor-end rotate: false - xy: 239, 173 + xy: 307, 241 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 router rotate: false - xy: 477, 343 + xy: 545, 411 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 router-icon-editor rotate: false - xy: 477, 343 + xy: 545, 411 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 sorter rotate: false - xy: 681, 479 + xy: 273, 37 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 sorter-icon-editor rotate: false - xy: 681, 479 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -spawn - rotate: false - xy: 239, 3 + xy: 273, 37 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-junction rotate: false - xy: 307, 343 + xy: 375, 411 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-junction-icon-editor rotate: false - xy: 307, 343 + xy: 375, 411 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-router-bottom rotate: false - xy: 375, 411 + xy: 443, 479 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-router-liquid rotate: false - xy: 1, 3 + xy: 69, 71 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-router-top rotate: false - xy: 35, 37 + xy: 103, 105 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 mechanical-pump rotate: false - xy: 273, 275 + xy: 341, 343 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conduit rotate: false - xy: 477, 445 + xy: 69, 3 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conduit-icon-editor rotate: false - xy: 477, 445 + xy: 69, 3 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conduit-arrow rotate: false - xy: 511, 479 + xy: 103, 37 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conduit-bridge rotate: false - xy: 69, 3 + xy: 137, 71 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conduit-end rotate: false - xy: 103, 37 + xy: 171, 105 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulse-conduit-top-0 rotate: false - xy: 239, 139 + xy: 307, 207 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulse-conduit-top-1 rotate: false - xy: 273, 173 + xy: 341, 241 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulse-conduit-top-2 rotate: false - xy: 307, 207 + xy: 375, 275 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulse-conduit-top-3 rotate: false - xy: 341, 241 + xy: 409, 309 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulse-conduit-top-4 rotate: false - xy: 375, 275 + xy: 443, 343 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulse-conduit-top-5 rotate: false - xy: 409, 309 + xy: 477, 377 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulse-conduit-top-6 rotate: false - xy: 443, 343 + xy: 511, 411 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 power-node rotate: false - xy: 477, 411 + xy: 545, 479 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 power-node-icon-editor rotate: false - xy: 477, 411 + xy: 545, 479 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 power-source rotate: false - xy: 545, 479 + xy: 137, 37 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 power-void rotate: false - xy: 137, 37 + xy: 205, 105 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 power-void-icon-editor rotate: false - xy: 137, 37 + xy: 205, 105 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 rtg-generator-top rotate: false - xy: 545, 411 + xy: 613, 479 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 solar-panel rotate: false - xy: 579, 377 + xy: 647, 445 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 solar-panel-icon-editor rotate: false - xy: 579, 377 + xy: 647, 445 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 incinerator rotate: false - xy: 205, 309 + xy: 273, 377 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 incinerator-icon-editor rotate: false - xy: 205, 309 + xy: 273, 377 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-source rotate: false - xy: 273, 343 + xy: 341, 411 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-source-icon-editor rotate: false - xy: 273, 343 + xy: 341, 411 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-void rotate: false - xy: 1, 37 + xy: 69, 105 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-void-icon-editor rotate: false - xy: 1, 37 + xy: 69, 105 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-source rotate: false - xy: 103, 105 + xy: 171, 173 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-source-icon-editor rotate: false - xy: 103, 105 + xy: 171, 173 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 melter rotate: false - xy: 375, 377 + xy: 443, 445 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 melter-icon-editor rotate: false - xy: 375, 377 + xy: 443, 445 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulverizer rotate: false - xy: 477, 377 + xy: 545, 445 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulverizer-rotator rotate: false - xy: 579, 479 + xy: 171, 37 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 smelter rotate: false - xy: 477, 275 + xy: 545, 343 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 sortedunloader rotate: false - xy: 647, 445 + xy: 239, 3 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 unloader rotate: false - xy: 375, 37 + xy: 409, 71 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 unloader-icon-editor rotate: false - xy: 375, 37 + xy: 409, 71 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scorch-heat rotate: false - xy: 273, 105 + xy: 341, 173 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 repair-point-base rotate: false - xy: 205, 71 + xy: 273, 139 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-wall rotate: false - xy: 273, 207 + xy: 341, 275 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-wall-icon-editor rotate: false - xy: 273, 207 + xy: 341, 275 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scrap-wall1 rotate: false - xy: 375, 207 + xy: 443, 275 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scrap-wall2 rotate: false - xy: 409, 241 + xy: 477, 309 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scrap-wall3 rotate: false - xy: 443, 275 + xy: 511, 343 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scrap-wall4 rotate: false - xy: 477, 309 + xy: 545, 377 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scrap-wall5 rotate: false - xy: 477, 309 + xy: 545, 377 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 surge-wall rotate: false - xy: 545, 309 + xy: 579, 343 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 surge-wall-icon-editor rotate: false - xy: 545, 309 + xy: 579, 343 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 thorium-wall rotate: false - xy: 341, 71 + xy: 375, 105 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 thorium-wall-icon-editor rotate: false - xy: 341, 71 + xy: 375, 105 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-wall rotate: false - xy: 681, 377 + xy: 715, 411 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-wall-icon-editor rotate: false - xy: 681, 377 + xy: 715, 411 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -editor-ignarock3 +editor-ignarock2 rotate: false xy: 1, 479 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 +editor-ignarock3 + rotate: false + xy: 1, 445 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 editor-magmarock1 - rotate: false - xy: 1, 445 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -magmarock-icon-editor - rotate: false - xy: 1, 445 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -editor-magmarock2 rotate: false xy: 35, 479 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -editor-magmarock3 +magmarock-icon-editor + rotate: false + xy: 35, 479 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +editor-magmarock2 rotate: false xy: 1, 411 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -editor-metal-floor +editor-magmarock3 rotate: false xy: 35, 445 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 +editor-metal-floor + rotate: false + xy: 69, 479 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 metal-floor-icon-editor rotate: false - xy: 35, 445 + xy: 69, 479 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-metal-floor-2 rotate: false - xy: 69, 479 + xy: 1, 377 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor-2-icon-editor rotate: false - xy: 69, 479 + xy: 1, 377 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-metal-floor-3 rotate: false - xy: 1, 377 + xy: 35, 411 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor-3-icon-editor rotate: false - xy: 1, 377 + xy: 35, 411 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-metal-floor-5 rotate: false - xy: 35, 411 + xy: 69, 445 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor-5-icon-editor rotate: false - xy: 35, 411 + xy: 69, 445 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-metal-floor-damaged1 rotate: false - xy: 69, 445 + xy: 103, 479 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor-damaged-icon-editor rotate: false - xy: 69, 445 + xy: 103, 479 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-metal-floor-damaged2 rotate: false - xy: 103, 479 + xy: 1, 343 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-metal-floor-damaged3 rotate: false - xy: 1, 343 + xy: 35, 377 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-moss1 rotate: false - xy: 35, 377 + xy: 69, 411 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 moss-icon-editor rotate: false - xy: 35, 377 + xy: 69, 411 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-moss2 rotate: false - xy: 69, 411 + xy: 103, 445 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-moss3 rotate: false - xy: 103, 445 + xy: 137, 479 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-coal1 rotate: false - xy: 137, 479 + xy: 1, 309 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-coal2 rotate: false - xy: 1, 309 + xy: 35, 343 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-coal3 rotate: false - xy: 35, 343 + xy: 69, 377 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-copper1 rotate: false - xy: 69, 377 + xy: 103, 411 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-copper2 rotate: false - xy: 103, 411 + xy: 137, 445 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-copper3 rotate: false - xy: 137, 445 + xy: 171, 479 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-lead1 rotate: false - xy: 171, 479 + xy: 1, 275 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-lead2 rotate: false - xy: 1, 275 + xy: 35, 309 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-lead3 rotate: false - xy: 35, 309 + xy: 69, 343 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-scrap1 rotate: false - xy: 69, 343 + xy: 103, 377 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-scrap2 rotate: false - xy: 103, 377 + xy: 137, 411 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-scrap3 rotate: false - xy: 137, 411 + xy: 171, 445 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-thorium1 rotate: false - xy: 171, 445 + xy: 205, 479 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-thorium2 rotate: false - xy: 205, 479 + xy: 1, 241 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-thorium3 rotate: false - xy: 1, 241 + xy: 35, 275 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-titanium1 rotate: false - xy: 35, 275 + xy: 69, 309 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-titanium2 rotate: false - xy: 69, 309 + xy: 103, 343 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-titanium3 rotate: false - xy: 103, 343 + xy: 137, 377 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-pebbles1 rotate: false - xy: 137, 377 + xy: 171, 411 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-pebbles2 rotate: false - xy: 171, 411 + xy: 205, 445 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-pebbles3 rotate: false - xy: 205, 445 + xy: 239, 479 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-salt rotate: false - xy: 239, 479 + xy: 1, 207 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 salt-icon-editor rotate: false - xy: 239, 479 + xy: 1, 207 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-sand-water rotate: false - xy: 103, 309 + xy: 137, 343 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 sand-water-icon-editor rotate: false - xy: 103, 309 + xy: 137, 343 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-sand1 rotate: false - xy: 1, 207 + xy: 35, 241 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 sand-icon-editor rotate: false - xy: 1, 207 + xy: 35, 241 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-sand2 rotate: false - xy: 35, 241 + xy: 69, 275 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-sand3 rotate: false - xy: 69, 275 + xy: 103, 309 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-shale1 rotate: false - xy: 137, 343 + xy: 171, 377 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shale-icon-editor rotate: false - xy: 137, 343 + xy: 171, 377 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-shale2 rotate: false - xy: 171, 377 + xy: 205, 411 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-shale3 rotate: false - xy: 205, 411 + xy: 239, 445 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-snow1 rotate: false - xy: 239, 445 + xy: 273, 479 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 snow-icon-editor rotate: false - xy: 239, 445 + xy: 273, 479 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-snow2 rotate: false - xy: 273, 479 + xy: 1, 173 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-snow3 - rotate: false - xy: 1, 173 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -editor-spore-moss1 rotate: false xy: 35, 207 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -spore-moss-icon-editor - rotate: false - xy: 35, 207 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -editor-spore-moss2 +editor-spawn rotate: false xy: 69, 241 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -editor-spore-moss3 +editor-spore-moss1 rotate: false xy: 103, 275 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -editor-stone1 +spore-moss-icon-editor + rotate: false + xy: 103, 275 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +editor-spore-moss2 rotate: false xy: 137, 309 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -stone-icon-editor - rotate: false - xy: 137, 309 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -editor-stone2 +editor-spore-moss3 rotate: false xy: 171, 343 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -editor-stone3 +editor-stone1 rotate: false xy: 205, 377 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 +stone-icon-editor + rotate: false + xy: 205, 377 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +editor-stone2 + rotate: false + xy: 239, 411 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +editor-stone3 + rotate: false + xy: 273, 445 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 editor-tainted-water - rotate: false - xy: 239, 411 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -tainted-water-icon-editor - rotate: false - xy: 239, 411 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -editor-tar - rotate: false - xy: 273, 445 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -tar-icon-editor - rotate: false - xy: 273, 445 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -editor-tendrils1 rotate: false xy: 307, 479 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -editor-tendrils2 +tainted-water-icon-editor + rotate: false + xy: 307, 479 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +editor-tar rotate: false xy: 1, 139 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -editor-tendrils3 +tar-icon-editor + rotate: false + xy: 1, 139 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +editor-tendrils1 rotate: false xy: 35, 173 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 +editor-tendrils2 + rotate: false + xy: 69, 207 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +editor-tendrils3 + rotate: false + xy: 103, 241 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 editor-water - rotate: false - xy: 69, 207 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -water-icon-editor - rotate: false - xy: 69, 207 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -hail-icon-editor - rotate: false - xy: 1, 105 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -icerocks-icon-editor - rotate: false - xy: 69, 173 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -liquid-router-icon-editor - rotate: false - xy: 409, 445 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -mechanical-pump-icon-editor - rotate: false - xy: 307, 309 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -pebbles-icon-editor - rotate: false - xy: 409, 377 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -power-source-icon-editor - rotate: false - xy: 103, 3 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -pulse-conduit-icon-editor - rotate: false - xy: 171, 71 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -pulverizer-icon-editor - rotate: false - xy: 511, 411 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -repair-point-icon-editor - rotate: false - xy: 239, 105 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -rocks-icon-editor - rotate: false - xy: 409, 275 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -saltrocks-icon-editor - rotate: false - xy: 579, 445 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -sandrocks-icon-editor - rotate: false - xy: 171, 3 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -scorch-icon-editor - rotate: false - xy: 307, 139 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -scrap-wall-icon-editor - rotate: false - xy: 579, 411 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -shale-boulder-icon-editor - rotate: false - xy: 239, 37 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -shalerocks-icon-editor - rotate: false - xy: 273, 71 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -shock-mine-icon-editor - rotate: false - xy: 341, 139 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -shrubs-icon-editor - rotate: false - xy: 409, 207 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -snowrocks-icon-editor - rotate: false - xy: 545, 343 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -spawn-icon-editor - rotate: false - xy: 273, 37 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -sporerocks-icon-editor - rotate: false - xy: 477, 241 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -tendrils-icon-editor - rotate: false - xy: 681, 445 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -casing - rotate: false - xy: 860, 51 - size: 8, 16 - orig: 8, 16 - offset: 0, 0 - index: -1 -laser - rotate: false - xy: 870, 19 - size: 4, 48 - orig: 4, 48 - offset: 0, 0 - index: -1 -minelaser - rotate: false - xy: 876, 19 - size: 4, 48 - orig: 4, 48 - offset: 0, 0 - index: -1 -scale_marker - rotate: false - xy: 787, 233 - size: 4, 4 - orig: 4, 4 - offset: 0, 0 - index: -1 -scorch1 - rotate: false - xy: 681, 275 - size: 28, 100 - orig: 28, 100 - offset: 0, 0 - index: -1 -scorch2 - rotate: false - xy: 711, 275 - size: 28, 100 - orig: 28, 100 - offset: 0, 0 - index: -1 -scorch3 - rotate: false - xy: 741, 309 - size: 28, 100 - orig: 28, 100 - offset: 0, 0 - index: -1 -scorch4 - rotate: false - xy: 771, 343 - size: 28, 100 - orig: 28, 100 - offset: 0, 0 - index: -1 -scorch5 - rotate: false - xy: 801, 377 - size: 28, 100 - orig: 28, 100 - offset: 0, 0 - index: -1 -shot - rotate: false - xy: 375, 173 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -transfer - rotate: false - xy: 882, 19 - size: 4, 48 - orig: 4, 48 - offset: 0, 0 - index: -1 -transfer-arrow - rotate: false - xy: 749, 445 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -alloy-smelter-icon-small - rotate: false - xy: 715, 385 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -arc-icon-small - rotate: false - xy: 511, 147 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -battery-icon-small - rotate: false - xy: 545, 181 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -battery-large-icon-small - rotate: false - xy: 579, 215 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -blast-drill-icon-small - rotate: false - xy: 613, 243 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -blast-mixer-icon-small - rotate: false - xy: 741, 283 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -bridge-conduit-icon-small - rotate: false - xy: 771, 317 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -bridge-conveyor-icon-small - rotate: false - xy: 817, 487 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -char-icon-small - rotate: false - xy: 375, 11 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -cliffs-icon-small - rotate: false - xy: 843, 487 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -coal-centrifuge-icon-small - rotate: false - xy: 869, 487 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -combustion-generator-icon-small - rotate: false - xy: 895, 487 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -conduit-icon-small - rotate: false - xy: 921, 487 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -container-icon-small - rotate: false - xy: 947, 487 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -conveyor-icon-small - rotate: false - xy: 973, 487 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -copper-wall-icon-small - rotate: false - xy: 999, 487 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -copper-wall-large-icon-small - rotate: false - xy: 644, 277 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -core-foundation-icon-small - rotate: false - xy: 438, 41 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -core-nucleus-icon-small - rotate: false - xy: 831, 461 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -core-shard-icon-small - rotate: false - xy: 831, 435 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -craters-icon-small - rotate: false - xy: 857, 461 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -crawler-factory-icon-small - rotate: false - xy: 831, 409 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -cryofluidmixer-icon-small - rotate: false - xy: 857, 435 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -cultivator-icon-small - rotate: false - xy: 883, 461 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -cyclone-icon-small - rotate: false - xy: 831, 383 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -dagger-factory-icon-small - rotate: false - xy: 857, 409 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -dark-metal-icon-small - rotate: false - xy: 883, 435 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -dark-panel-1-icon-small - rotate: false - xy: 909, 461 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -dark-panel-2-icon-small - rotate: false - xy: 857, 383 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -dark-panel-3-icon-small - rotate: false - xy: 883, 409 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -dark-panel-4-icon-small - rotate: false - xy: 909, 435 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -dark-panel-5-icon-small - rotate: false - xy: 935, 461 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -dark-panel-6-icon-small - rotate: false - xy: 883, 383 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -darksand-icon-small - rotate: false - xy: 909, 409 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -darksand-tainted-water-icon-small - rotate: false - xy: 935, 435 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -darksand-water-icon-small - rotate: false - xy: 961, 461 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -dart-mech-pad-icon-small - rotate: false - xy: 909, 383 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -deepwater-icon-small - rotate: false - xy: 935, 409 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -delta-mech-pad-icon-small - rotate: false - xy: 961, 435 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -differential-generator-icon-small - rotate: false - xy: 987, 461 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -distributor-icon-small - rotate: false - xy: 935, 383 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -door-icon-small - rotate: false - xy: 961, 409 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -door-large-icon-small - rotate: false - xy: 987, 435 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -dunerocks-icon-small - rotate: false - xy: 961, 383 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -duo-icon-small - rotate: false - xy: 987, 409 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -force-projector-icon-medium rotate: false xy: 137, 275 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -force-projector-icon-small +water-icon-editor rotate: false - xy: 987, 383 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -fortress-factory-icon-medium - rotate: false - xy: 171, 309 + xy: 137, 275 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -fortress-factory-icon-small +hail-icon-editor rotate: false - xy: 401, 7 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -fuse-icon-medium - rotate: false - xy: 205, 343 + xy: 69, 173 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -fuse-icon-small +icerocks-icon-editor rotate: false - xy: 427, 7 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -ghoul-factory-icon-medium - rotate: false - xy: 239, 377 + xy: 137, 241 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -ghoul-factory-icon-small +liquid-router-icon-editor rotate: false - xy: 511, 121 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -glaive-ship-pad-icon-medium - rotate: false - xy: 273, 411 + xy: 1, 3 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -glaive-ship-pad-icon-small +mechanical-pump-icon-editor rotate: false - xy: 506, 95 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -graphite-press-icon-medium - rotate: false - xy: 307, 445 + xy: 375, 377 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -graphite-press-icon-small +pebbles-icon-editor rotate: false - xy: 506, 69 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -grass-icon-small - rotate: false - xy: 537, 147 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -hail - rotate: false - xy: 341, 479 + xy: 477, 445 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -hail-icon-full +power-source-icon-editor rotate: false - xy: 35, 139 + xy: 171, 71 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -hail-icon-small +pulse-conduit-icon-editor rotate: false - xy: 537, 121 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -holostone-icon-small - rotate: false - xy: 532, 95 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -hotrock-icon-small - rotate: false - xy: 532, 69 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -ice-icon-small - rotate: false - xy: 571, 181 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -ice-snow-icon-small - rotate: false - xy: 563, 155 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -icerocks-icon-small - rotate: false - xy: 563, 129 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -ignarock-icon-small - rotate: false - xy: 771, 291 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -impact-reactor-icon-medium - rotate: false - xy: 171, 275 + xy: 239, 139 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -impact-reactor-icon-small +pulverizer-icon-editor rotate: false - xy: 767, 265 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -incinerator-icon-small - rotate: false - xy: 801, 325 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-blast-compound-medium - rotate: false - xy: 793, 257 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-blast-compound-small - rotate: false - xy: 995, 69 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -item-coal-medium - rotate: false - xy: 767, 239 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-coal-small - rotate: false - xy: 698, 83 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -item-copper-medium - rotate: false - xy: 793, 231 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-copper-small - rotate: false - xy: 698, 65 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -item-graphite-medium - rotate: false - xy: 644, 251 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-graphite-small - rotate: false - xy: 716, 83 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -item-lead-medium - rotate: false - xy: 670, 249 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-lead-small - rotate: false - xy: 716, 65 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -item-metaglass-medium - rotate: false - xy: 696, 249 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-metaglass-small - rotate: false - xy: 713, 47 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -item-phase-fabric-medium - rotate: false - xy: 464, 41 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-phase-fabric-small - rotate: false - xy: 713, 29 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -item-plastanium-medium - rotate: false - xy: 453, 15 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-plastanium-small - rotate: false - xy: 713, 11 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -item-pyratite-medium - rotate: false - xy: 479, 15 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-pyratite-small - rotate: false - xy: 731, 47 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -item-sand-medium - rotate: false - xy: 589, 155 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-sand-small - rotate: false - xy: 731, 29 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -item-scrap-medium - rotate: false - xy: 589, 129 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-scrap-small - rotate: false - xy: 731, 11 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -item-silicon-medium - rotate: false - xy: 563, 103 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-silicon-small - rotate: false - xy: 749, 91 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -item-source-icon-small - rotate: false - xy: 589, 103 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-spore-pod-medium - rotate: false - xy: 558, 77 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-spore-pod-small - rotate: false - xy: 767, 83 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -item-surge-alloy-medium - rotate: false - xy: 584, 77 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-surge-alloy-small - rotate: false - xy: 734, 65 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -item-thorium-medium - rotate: false - xy: 623, 189 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-thorium-small - rotate: false - xy: 749, 47 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -item-titanium-medium - rotate: false - xy: 615, 163 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-titanium-small - rotate: false - xy: 749, 29 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -item-void-icon-small - rotate: false - xy: 615, 137 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -javelin-ship-pad-icon-medium - rotate: false - xy: 35, 71 + xy: 579, 479 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -javelin-ship-pad-icon-small - rotate: false - xy: 615, 111 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -junction-icon-small - rotate: false - xy: 490, 43 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -kiln-icon-medium - rotate: false - xy: 103, 139 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -kiln-icon-small - rotate: false - xy: 516, 43 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -lancer-icon-medium - rotate: false - xy: 137, 173 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -lancer-icon-small - rotate: false - xy: 505, 17 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -laser-drill-icon-medium - rotate: false - xy: 171, 207 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -laser-drill-icon-small - rotate: false - xy: 542, 43 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -launch-pad-icon-medium - rotate: false - xy: 205, 241 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -launch-pad-icon-small - rotate: false - xy: 531, 17 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -launch-pad-large-icon-medium - rotate: false - xy: 239, 275 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -launch-pad-large-icon-small - rotate: false - xy: 568, 51 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -liquid-junction-icon-small - rotate: false - xy: 594, 51 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -liquid-router-icon-full - rotate: false - xy: 443, 479 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -liquid-router-icon-small - rotate: false - xy: 610, 77 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -liquid-source-icon-small - rotate: false - xy: 620, 51 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -liquid-tank-icon-medium - rotate: false - xy: 137, 139 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -liquid-tank-icon-small - rotate: false - xy: 557, 17 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -magmarock-icon-small - rotate: false - xy: 583, 25 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -mass-driver-icon-medium - rotate: false - xy: 205, 207 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -mass-driver-icon-small - rotate: false - xy: 609, 25 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -mechanical-drill-icon-medium - rotate: false - xy: 239, 241 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -mechanical-drill-icon-small - rotate: false - xy: 635, 25 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -mechanical-pump-icon-small - rotate: false - xy: 641, 163 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -meltdown-icon-medium - rotate: false - xy: 341, 343 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -meltdown-icon-small - rotate: false - xy: 641, 137 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -melter-icon-small - rotate: false - xy: 641, 111 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -mend-projector-icon-medium - rotate: false - xy: 409, 411 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -mend-projector-icon-small - rotate: false - xy: 636, 85 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -mender-icon-small - rotate: false - xy: 646, 59 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -metal-floor-2-icon-small - rotate: false - xy: 662, 85 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -metal-floor-3-icon-small - rotate: false - xy: 672, 59 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -metal-floor-5-icon-small - rotate: false - xy: 661, 33 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -metal-floor-damaged-icon-small - rotate: false - xy: 687, 33 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -metal-floor-icon-small - rotate: false - xy: 661, 7 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -moss-icon-small - rotate: false - xy: 687, 7 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -multi-press-icon-medium - rotate: false - xy: 35, 3 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -multi-press-icon-small - rotate: false - xy: 831, 357 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -oil-extractor-icon-medium - rotate: false - xy: 69, 37 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -oil-extractor-icon-small - rotate: false - xy: 857, 357 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -omega-mech-pad-icon-medium - rotate: false - xy: 103, 71 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -omega-mech-pad-icon-small - rotate: false - xy: 883, 357 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -ore-coal-icon-full - rotate: false - xy: 137, 105 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -ore-coal-icon-medium - rotate: false - xy: 137, 105 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -ore-coal-icon-small - rotate: false - xy: 909, 357 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -ore-copper-icon-full - rotate: false - xy: 171, 139 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -ore-copper-icon-medium - rotate: false - xy: 171, 139 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -ore-copper-icon-small - rotate: false - xy: 935, 357 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -ore-lead-icon-full - rotate: false - xy: 205, 173 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -ore-lead-icon-medium - rotate: false - xy: 205, 173 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -ore-lead-icon-small - rotate: false - xy: 961, 357 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -ore-scrap-icon-full - rotate: false - xy: 239, 207 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -ore-scrap-icon-medium - rotate: false - xy: 239, 207 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -ore-scrap-icon-small - rotate: false - xy: 987, 357 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -ore-thorium-icon-full - rotate: false - xy: 273, 241 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -ore-thorium-icon-medium - rotate: false - xy: 273, 241 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -ore-thorium-icon-small - rotate: false - xy: 827, 331 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -ore-titanium-icon-full - rotate: false - xy: 307, 275 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -ore-titanium-icon-medium - rotate: false - xy: 307, 275 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -ore-titanium-icon-small - rotate: false - xy: 853, 331 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -overdrive-projector-icon-medium - rotate: false - xy: 341, 309 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -overdrive-projector-icon-small - rotate: false - xy: 879, 331 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -overflow-gate-icon-small - rotate: false - xy: 905, 331 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -pebbles-icon-small - rotate: false - xy: 931, 331 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -phantom-factory-icon-medium - rotate: false - xy: 443, 411 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -phantom-factory-icon-small - rotate: false - xy: 957, 331 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -phase-conduit-icon-small - rotate: false - xy: 983, 331 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -phase-conveyor-icon-small - rotate: false - xy: 631, 217 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -phase-wall-icon-small - rotate: false - xy: 657, 223 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -phase-wall-large-icon-medium - rotate: false - xy: 307, 241 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -phase-wall-large-icon-small - rotate: false - xy: 683, 223 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -phase-weaver-icon-medium - rotate: false - xy: 341, 275 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -phase-weaver-icon-small - rotate: false - xy: 709, 223 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -pine-icon-medium - rotate: false - xy: 375, 309 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -pine-icon-small - rotate: false - xy: 735, 231 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -plastanium-compressor-icon-medium - rotate: false - xy: 409, 343 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -plastanium-compressor-icon-small - rotate: false - xy: 735, 205 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -pneumatic-drill-icon-medium - rotate: false - xy: 443, 377 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -pneumatic-drill-icon-small - rotate: false - xy: 761, 213 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -power-node-icon-small - rotate: false - xy: 787, 205 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -power-node-large-icon-medium - rotate: false - xy: 511, 445 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -power-node-large-icon-small - rotate: false - xy: 761, 187 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -power-source-icon-small - rotate: false - xy: 787, 179 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -power-void-icon-small - rotate: false - xy: 827, 305 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -pulse-conduit-icon-full - rotate: false - xy: 205, 105 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -pulse-conduit-icon-small - rotate: false - xy: 853, 305 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -pulverizer-icon-full - rotate: false - xy: 545, 445 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -pulverizer-icon-small - rotate: false - xy: 879, 305 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -pyratite-mixer-icon-medium - rotate: false - xy: 137, 3 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -pyratite-mixer-icon-small - rotate: false - xy: 905, 305 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -repair-point - rotate: false - xy: 171, 37 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -repair-point-icon-full - rotate: false - xy: 273, 139 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -repair-point-icon-small - rotate: false - xy: 931, 305 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -revenant-factory-icon-medium +repair-point-icon-editor rotate: false xy: 307, 173 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -revenant-factory-icon-small +rocks-icon-editor rotate: false - xy: 957, 305 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -ripple-icon-medium - rotate: false - xy: 341, 207 + xy: 477, 343 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -ripple-icon-small +saltrocks-icon-editor rotate: false - xy: 983, 305 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -rock-icon-medium - rotate: false - xy: 375, 241 + xy: 171, 3 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -rock-icon-small - rotate: false - xy: 823, 279 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -rocks-icon-small - rotate: false - xy: 849, 279 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -rotary-pump-icon-medium - rotate: false - xy: 443, 309 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -rotary-pump-icon-small - rotate: false - xy: 875, 279 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -router-icon-small - rotate: false - xy: 901, 279 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -rtg-generator-icon-medium - rotate: false - xy: 511, 377 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -rtg-generator-icon-small - rotate: false - xy: 927, 279 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -salt-icon-small - rotate: false - xy: 953, 279 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -saltrocks-icon-small - rotate: false - xy: 979, 279 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -salvo-icon-medium - rotate: false - xy: 613, 479 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -salvo-icon-small - rotate: false - xy: 819, 253 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -sand-icon-small - rotate: false - xy: 845, 253 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -sand-water-icon-small - rotate: false - xy: 871, 253 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -sandrocks-icon-small - rotate: false - xy: 897, 253 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -scatter-icon-medium - rotate: false - xy: 205, 37 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -scatter-icon-small - rotate: false - xy: 923, 253 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -scorch +sandrocks-icon-editor rotate: false xy: 239, 71 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -scorch-icon-full +scorch-icon-editor rotate: false - xy: 341, 173 + xy: 375, 207 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -scorch-icon-small +scrap-wall-icon-editor rotate: false - xy: 949, 253 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -scrap-wall-gigantic-icon-medium - rotate: false - xy: 511, 343 + xy: 647, 479 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -scrap-wall-gigantic-icon-small +shale-boulder-icon-editor rotate: false - xy: 975, 253 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -scrap-wall-huge-icon-medium - rotate: false - xy: 545, 377 + xy: 307, 105 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -scrap-wall-huge-icon-small +shalerocks-icon-editor rotate: false - xy: 819, 227 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -scrap-wall-icon-small - rotate: false - xy: 845, 227 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -scrap-wall-large-icon-medium - rotate: false - xy: 613, 445 + xy: 341, 139 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -scrap-wall-large-icon-small +shock-mine-icon-editor rotate: false - xy: 871, 227 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -separator-icon-medium - rotate: false - xy: 205, 3 + xy: 409, 207 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -separator-icon-small +shrubs-icon-editor rotate: false - xy: 897, 227 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -shale-boulder-icon-small - rotate: false - xy: 865, 201 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -shale-icon-small - rotate: false - xy: 923, 227 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -shalerocks-icon-small - rotate: false - xy: 891, 201 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -shock-mine-icon-small - rotate: false - xy: 949, 227 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -shrubs-icon-small - rotate: false - xy: 917, 201 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -silicon-smelter-icon-medium - rotate: false - xy: 443, 241 + xy: 477, 275 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -silicon-smelter-icon-small - rotate: false - xy: 975, 227 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -snow-icon-small - rotate: false - xy: 943, 201 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -snowrock-icon-medium - rotate: false - xy: 511, 309 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -snowrock-icon-small - rotate: false - xy: 969, 201 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -snowrocks-icon-small - rotate: false - xy: 865, 175 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -solar-panel-icon-small - rotate: false - xy: 891, 175 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -solar-panel-large-icon-medium +snowrocks-icon-editor rotate: false xy: 613, 411 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -solar-panel-large-icon-small - rotate: false - xy: 917, 175 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -sorter-icon-small - rotate: false - xy: 943, 175 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -spawn-icon-small - rotate: false - xy: 969, 175 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -spectre-icon-medium +spawn-icon-editor rotate: false xy: 307, 71 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -spectre-icon-small - rotate: false - xy: 839, 164 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -spirit-factory-icon-medium - rotate: false - xy: 341, 105 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -spirit-factory-icon-small - rotate: false - xy: 813, 159 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -spore-cluster-icon-medium - rotate: false - xy: 375, 139 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -spore-cluster-icon-small - rotate: false - xy: 865, 149 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -spore-moss-icon-small - rotate: false - xy: 891, 149 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -spore-pine-icon-medium - rotate: false - xy: 409, 173 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -spore-pine-icon-small - rotate: false - xy: 917, 149 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -spore-press-icon-medium - rotate: false - xy: 443, 207 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -spore-press-icon-small - rotate: false - xy: 943, 149 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -sporerocks-icon-small - rotate: false - xy: 969, 149 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -stone-icon-small - rotate: false - xy: 839, 138 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -surge-tower-icon-medium +sporerocks-icon-editor rotate: false xy: 511, 275 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -surge-tower-icon-small - rotate: false - xy: 865, 123 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -surge-wall-icon-small - rotate: false - xy: 891, 123 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -surge-wall-large-icon-medium - rotate: false - xy: 579, 343 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -surge-wall-large-icon-small - rotate: false - xy: 917, 123 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -swarmer-icon-medium - rotate: false - xy: 613, 377 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -swarmer-icon-small - rotate: false - xy: 943, 123 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -tainted-water-icon-small - rotate: false - xy: 969, 123 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -tar-icon-small - rotate: false - xy: 649, 191 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -tau-mech-pad-icon-medium - rotate: false - xy: 647, 411 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -tau-mech-pad-icon-small - rotate: false - xy: 675, 197 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -tendrils-icon-small - rotate: false - xy: 701, 197 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -thermal-generator-icon-medium +tendrils-icon-editor rotate: false xy: 715, 479 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -thermal-generator-icon-small +casing rotate: false - xy: 995, 201 - size: 24, 24 - orig: 24, 24 + xy: 704, 319 + size: 8, 16 + orig: 8, 16 offset: 0, 0 index: -1 -thermal-pump-icon-medium +laser rotate: false - xy: 273, 3 + xy: 1019, 463 + size: 4, 48 + orig: 4, 48 + offset: 0, 0 + index: -1 +minelaser + rotate: false + xy: 961, 13 + size: 4, 48 + orig: 4, 48 + offset: 0, 0 + index: -1 +scale_marker + rotate: false + xy: 821, 267 + size: 4, 4 + orig: 4, 4 + offset: 0, 0 + index: -1 +scorch1 + rotate: false + xy: 715, 309 + size: 28, 100 + orig: 28, 100 + offset: 0, 0 + index: -1 +scorch2 + rotate: false + xy: 745, 309 + size: 28, 100 + orig: 28, 100 + offset: 0, 0 + index: -1 +scorch3 + rotate: false + xy: 775, 343 + size: 28, 100 + orig: 28, 100 + offset: 0, 0 + index: -1 +scorch4 + rotate: false + xy: 805, 377 + size: 28, 100 + orig: 28, 100 + offset: 0, 0 + index: -1 +scorch5 + rotate: false + xy: 835, 411 + size: 28, 100 + orig: 28, 100 + offset: 0, 0 + index: -1 +shot + rotate: false + xy: 443, 241 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -thermal-pump-icon-small +transfer rotate: false - xy: 995, 175 - size: 24, 24 - orig: 24, 24 + xy: 969, 57 + size: 4, 48 + orig: 4, 48 offset: 0, 0 index: -1 -thorium-reactor-icon-medium - rotate: false - xy: 307, 37 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -thorium-reactor-icon-small - rotate: false - xy: 995, 149 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -thorium-wall-icon-small - rotate: false - xy: 995, 123 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -thorium-wall-large-icon-medium - rotate: false - xy: 375, 105 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -thorium-wall-large-icon-small - rotate: false - xy: 667, 165 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -thruster-icon-medium - rotate: false - xy: 409, 139 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -thruster-icon-small - rotate: false - xy: 667, 139 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -titan-factory-icon-medium - rotate: false - xy: 443, 173 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -titan-factory-icon-small - rotate: false - xy: 667, 113 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -titanium-conveyor-icon-small - rotate: false - xy: 693, 171 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -titanium-wall-icon-small - rotate: false - xy: 693, 145 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -titanium-wall-large-icon-medium - rotate: false - xy: 715, 411 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -titanium-wall-large-icon-small - rotate: false - xy: 693, 119 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -trident-ship-pad-icon-medium +transfer-arrow rotate: false xy: 783, 479 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -trident-ship-pad-icon-small +alloy-smelter-icon-small rotate: false - xy: 719, 171 + xy: 749, 419 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -turbine-generator-icon-medium +arc-icon-small rotate: false - xy: 341, 3 + xy: 375, 11 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +battery-icon-small + rotate: false + xy: 409, 45 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +battery-large-icon-small + rotate: false + xy: 443, 79 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +blast-drill-icon-small + rotate: false + xy: 477, 113 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +blast-mixer-icon-small + rotate: false + xy: 511, 147 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +bridge-conduit-icon-small + rotate: false + xy: 545, 181 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +bridge-conveyor-icon-small + rotate: false + xy: 579, 215 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +char-icon-small + rotate: false + xy: 647, 277 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +cliffs-icon-small + rotate: false + xy: 775, 317 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +coal-centrifuge-icon-small + rotate: false + xy: 805, 351 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +combustion-generator-icon-small + rotate: false + xy: 835, 385 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +conduit-icon-small + rotate: false + xy: 865, 411 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +container-icon-small + rotate: false + xy: 923, 487 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +conveyor-icon-small + rotate: false + xy: 861, 385 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +copper-wall-icon-small + rotate: false + xy: 923, 461 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +copper-wall-large-icon-small + rotate: false + xy: 949, 487 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +core-foundation-icon-small + rotate: false + xy: 949, 461 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +core-nucleus-icon-small + rotate: false + xy: 975, 487 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +core-shard-icon-small + rotate: false + xy: 975, 461 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +craters-icon-small + rotate: false + xy: 678, 311 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +crawler-factory-icon-small + rotate: false + xy: 894, 424 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +cryofluidmixer-icon-small + rotate: false + xy: 923, 435 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +cultivator-icon-small + rotate: false + xy: 949, 435 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +cyclone-icon-small + rotate: false + xy: 975, 435 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +dagger-factory-icon-small + rotate: false + xy: 891, 398 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +dark-metal-icon-small + rotate: false + xy: 887, 372 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +dark-panel-1-icon-small + rotate: false + xy: 401, 11 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +dark-panel-2-icon-small + rotate: false + xy: 435, 45 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +dark-panel-3-icon-small + rotate: false + xy: 427, 19 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +dark-panel-4-icon-small + rotate: false + xy: 469, 79 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +dark-panel-5-icon-small + rotate: false + xy: 461, 53 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +dark-panel-6-icon-small + rotate: false + xy: 503, 113 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +darksand-icon-small + rotate: false + xy: 495, 87 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +darksand-tainted-water-icon-small + rotate: false + xy: 537, 147 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +darksand-water-icon-small + rotate: false + xy: 529, 121 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +dart-mech-pad-icon-small + rotate: false + xy: 571, 181 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +deepwater-icon-small + rotate: false + xy: 563, 155 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +delta-mech-pad-icon-small + rotate: false + xy: 605, 215 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +differential-generator-icon-small + rotate: false + xy: 597, 189 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +distributor-icon-small + rotate: false + xy: 639, 249 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +door-icon-small + rotate: false + xy: 631, 223 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +door-large-icon-small + rotate: false + xy: 775, 291 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +dunerocks-icon-small + rotate: false + xy: 805, 325 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +duo-icon-small + rotate: false + xy: 801, 299 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +force-projector-icon-medium + rotate: false + xy: 205, 343 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -turbine-generator-icon-small +force-projector-icon-small rotate: false - xy: 719, 145 + xy: 678, 285 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -unloader-icon-small +fortress-factory-icon-medium rotate: false - xy: 719, 119 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -vault-icon-medium - rotate: false - xy: 409, 71 + xy: 239, 377 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -vault-icon-small +fortress-factory-icon-small rotate: false - xy: 745, 161 + xy: 704, 283 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -water-extractor-icon-medium +fuse-icon-medium rotate: false - xy: 443, 105 + xy: 273, 411 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -water-extractor-icon-small +fuse-icon-small rotate: false - xy: 745, 135 + xy: 730, 283 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -water-icon-small +ghoul-factory-icon-medium rotate: false - xy: 745, 109 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -wave-icon-medium - rotate: false - xy: 477, 139 + xy: 307, 445 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -wave-icon-small +ghoul-factory-icon-small rotate: false - xy: 771, 153 + xy: 920, 409 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -white-tree-dead-icon-medium +glaive-ship-pad-icon-medium rotate: false - xy: 511, 173 + xy: 341, 479 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -white-tree-dead-icon-small +glaive-ship-pad-icon-small rotate: false - xy: 771, 127 + xy: 946, 409 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -white-tree-icon-medium +graphite-press-icon-medium rotate: false - xy: 545, 207 + xy: 1, 105 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -white-tree-icon-small +graphite-press-icon-small rotate: false - xy: 771, 101 + xy: 972, 409 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -wraith-factory-icon-medium +grass-icon-small rotate: false - xy: 579, 241 + xy: 835, 359 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +hail + rotate: false + xy: 35, 139 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -wraith-factory-icon-small +hail-icon-full rotate: false - xy: 797, 133 + xy: 103, 207 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +hail-icon-small + rotate: false + xy: 861, 359 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -item-biomatter +holostone-icon-small + rotate: false + xy: 831, 333 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +hotrock-icon-small + rotate: false + xy: 857, 333 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +ice-icon-small + rotate: false + xy: 887, 346 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +ice-snow-icon-small + rotate: false + xy: 883, 320 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +icerocks-icon-small + rotate: false + xy: 453, 19 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +ignarock-icon-small + rotate: false + xy: 521, 87 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +impact-reactor-icon-medium rotate: false xy: 239, 343 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -item-blast-compound +impact-reactor-icon-small rotate: false - xy: 273, 377 + xy: 513, 61 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +incinerator-icon-small + rotate: false + xy: 555, 121 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-blast-compound-medium + rotate: false + xy: 539, 53 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-blast-compound-small + rotate: false + xy: 941, 157 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +item-coal-medium + rotate: false + xy: 513, 35 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-coal-small + rotate: false + xy: 959, 157 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +item-copper-medium + rotate: false + xy: 505, 9 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-copper-small + rotate: false + xy: 887, 103 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +item-graphite-medium + rotate: false + xy: 539, 27 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-graphite-small + rotate: false + xy: 905, 121 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +item-lead-medium + rotate: false + xy: 531, 1 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-lead-small + rotate: false + xy: 923, 139 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +item-metaglass-medium + rotate: false + xy: 557, 1 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-metaglass-small + rotate: false + xy: 887, 85 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +item-phase-fabric-medium + rotate: false + xy: 589, 155 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-phase-fabric-small + rotate: false + xy: 905, 103 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +item-plastanium-medium + rotate: false + xy: 581, 129 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-plastanium-small + rotate: false + xy: 923, 121 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +item-pyratite-medium + rotate: false + xy: 623, 189 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-pyratite-small + rotate: false + xy: 941, 139 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +item-sand-medium + rotate: false + xy: 615, 163 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-sand-small + rotate: false + xy: 887, 67 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +item-scrap-medium + rotate: false + xy: 657, 223 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-scrap-small + rotate: false + xy: 905, 85 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +item-silicon-medium + rotate: false + xy: 649, 197 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-silicon-small + rotate: false + xy: 923, 103 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +item-source-icon-small + rotate: false + xy: 801, 273 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-spore-pod-medium + rotate: false + xy: 917, 383 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-spore-pod-small + rotate: false + xy: 941, 121 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +item-surge-alloy-medium + rotate: false + xy: 943, 383 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-surge-alloy-small + rotate: false + xy: 959, 139 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +item-thorium-medium + rotate: false + xy: 969, 383 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-thorium-small + rotate: false + xy: 977, 146 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +item-titanium-medium + rotate: false + xy: 913, 357 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-titanium-small + rotate: false + xy: 887, 49 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +item-void-icon-small + rotate: false + xy: 939, 357 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +javelin-ship-pad-icon-medium + rotate: false + xy: 103, 139 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -item-coal +javelin-ship-pad-icon-small rotate: false - xy: 307, 411 + xy: 965, 357 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +junction-icon-small + rotate: false + xy: 913, 331 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +kiln-icon-medium + rotate: false + xy: 171, 207 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -item-copper +kiln-icon-small rotate: false - xy: 341, 445 + xy: 939, 331 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +lancer-icon-medium + rotate: false + xy: 205, 241 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -item-graphite +lancer-icon-small rotate: false - xy: 375, 479 + xy: 965, 331 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +laser-drill-icon-medium + rotate: false + xy: 239, 275 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -item-lead +laser-drill-icon-small rotate: false - xy: 1, 71 - size: 32, 32 - orig: 32, 32 + xy: 831, 307 + size: 24, 24 + orig: 24, 24 offset: 0, 0 index: -1 -item-metaglass - rotate: false - xy: 35, 105 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -item-phase-fabric - rotate: false - xy: 69, 139 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -item-plastanium - rotate: false - xy: 103, 173 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -item-pyratite - rotate: false - xy: 137, 207 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -item-sand - rotate: false - xy: 171, 241 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -item-scrap - rotate: false - xy: 205, 275 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -item-silicon - rotate: false - xy: 239, 309 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -item-spore-pod - rotate: false - xy: 307, 377 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -item-surge-alloy - rotate: false - xy: 341, 411 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -item-thorium - rotate: false - xy: 375, 445 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -item-titanium - rotate: false - xy: 409, 479 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -liquid-cryofluid +launch-pad-icon-medium rotate: false xy: 273, 309 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -liquid-oil +launch-pad-icon-small + rotate: false + xy: 857, 307 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +launch-pad-large-icon-medium + rotate: false + xy: 307, 343 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +launch-pad-large-icon-small + rotate: false + xy: 827, 281 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +liquid-junction-icon-small + rotate: false + xy: 853, 281 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +liquid-router-icon-full + rotate: false + xy: 35, 37 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +liquid-router-icon-small + rotate: false + xy: 883, 294 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +liquid-source-icon-small + rotate: false + xy: 909, 305 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +liquid-tank-icon-medium + rotate: false + xy: 205, 207 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +liquid-tank-icon-small + rotate: false + xy: 935, 305 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +magmarock-icon-small + rotate: false + xy: 961, 305 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +mass-driver-icon-medium + rotate: false + xy: 273, 275 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +mass-driver-icon-small + rotate: false + xy: 909, 279 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +mechanical-drill-icon-medium + rotate: false + xy: 307, 309 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +mechanical-drill-icon-small + rotate: false + xy: 935, 279 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +mechanical-pump-icon-small + rotate: false + xy: 961, 279 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +meltdown-icon-medium + rotate: false + xy: 409, 411 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +meltdown-icon-small + rotate: false + xy: 879, 268 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +melter-icon-small + rotate: false + xy: 573, 95 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +mend-projector-icon-medium + rotate: false + xy: 477, 479 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +mend-projector-icon-small + rotate: false + xy: 573, 69 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +mender-icon-small + rotate: false + xy: 565, 43 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +metal-floor-2-icon-small + rotate: false + xy: 607, 129 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +metal-floor-3-icon-small + rotate: false + xy: 599, 103 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +metal-floor-5-icon-small + rotate: false + xy: 599, 77 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +metal-floor-damaged-icon-small + rotate: false + xy: 641, 163 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +metal-floor-icon-small + rotate: false + xy: 633, 137 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +moss-icon-small + rotate: false + xy: 675, 197 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +multi-press-icon-medium + rotate: false + xy: 103, 71 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +multi-press-icon-small + rotate: false + xy: 667, 171 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +oil-extractor-icon-medium + rotate: false + xy: 137, 105 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +oil-extractor-icon-small + rotate: false + xy: 827, 255 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +omega-mech-pad-icon-medium + rotate: false + xy: 171, 139 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +omega-mech-pad-icon-small + rotate: false + xy: 853, 255 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +ore-coal-icon-full + rotate: false + xy: 205, 173 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +ore-coal-icon-medium + rotate: false + xy: 205, 173 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +ore-coal-icon-small + rotate: false + xy: 879, 242 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +ore-copper-icon-full + rotate: false + xy: 239, 207 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +ore-copper-icon-medium + rotate: false + xy: 239, 207 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +ore-copper-icon-small + rotate: false + xy: 905, 253 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +ore-lead-icon-full + rotate: false + xy: 273, 241 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +ore-lead-icon-medium + rotate: false + xy: 273, 241 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +ore-lead-icon-small + rotate: false + xy: 931, 253 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +ore-scrap-icon-full + rotate: false + xy: 307, 275 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +ore-scrap-icon-medium + rotate: false + xy: 307, 275 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +ore-scrap-icon-small + rotate: false + xy: 957, 253 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +ore-thorium-icon-full + rotate: false + xy: 341, 309 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +ore-thorium-icon-medium + rotate: false + xy: 341, 309 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +ore-thorium-icon-small + rotate: false + xy: 905, 227 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +ore-titanium-icon-full + rotate: false + xy: 375, 343 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +ore-titanium-icon-medium + rotate: false + xy: 375, 343 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +ore-titanium-icon-small + rotate: false + xy: 931, 227 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +overdrive-projector-icon-medium + rotate: false + xy: 409, 377 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +overdrive-projector-icon-small + rotate: false + xy: 957, 227 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +overflow-gate-icon-small + rotate: false + xy: 591, 43 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +pebbles-icon-small + rotate: false + xy: 583, 17 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +phantom-factory-icon-medium + rotate: false + xy: 511, 479 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +phantom-factory-icon-small + rotate: false + xy: 625, 103 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +phase-conduit-icon-small + rotate: false + xy: 625, 77 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +phase-conveyor-icon-small + rotate: false + xy: 617, 51 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +phase-wall-icon-small + rotate: false + xy: 659, 137 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +phase-wall-large-icon-medium + rotate: false + xy: 375, 309 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +phase-wall-large-icon-small + rotate: false + xy: 651, 111 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +phase-weaver-icon-medium + rotate: false + xy: 409, 343 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +phase-weaver-icon-small + rotate: false + xy: 651, 85 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +pine-icon-medium + rotate: false + xy: 443, 377 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +pine-icon-small + rotate: false + xy: 693, 171 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +plastanium-compressor-icon-medium + rotate: false + xy: 477, 411 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +plastanium-compressor-icon-small + rotate: false + xy: 685, 145 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +pneumatic-drill-icon-medium + rotate: false + xy: 511, 445 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +pneumatic-drill-icon-small + rotate: false + xy: 609, 17 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +power-node-icon-small + rotate: false + xy: 643, 51 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +power-node-large-icon-medium + rotate: false + xy: 103, 3 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +power-node-large-icon-small + rotate: false + xy: 635, 25 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +power-source-icon-small + rotate: false + xy: 677, 111 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +power-void-icon-small + rotate: false + xy: 677, 85 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +pulse-conduit-icon-full + rotate: false + xy: 273, 173 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +pulse-conduit-icon-small + rotate: false + xy: 669, 59 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +pulverizer-icon-full + rotate: false + xy: 137, 3 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +pulverizer-icon-small + rotate: false + xy: 711, 145 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +pyratite-mixer-icon-medium + rotate: false + xy: 205, 71 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +pyratite-mixer-icon-small + rotate: false + xy: 703, 119 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +repair-point + rotate: false + xy: 239, 105 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +repair-point-icon-full + rotate: false + xy: 341, 207 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +repair-point-icon-small + rotate: false + xy: 703, 93 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +revenant-factory-icon-medium + rotate: false + xy: 375, 241 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +revenant-factory-icon-small + rotate: false + xy: 661, 25 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +ripple-icon-medium + rotate: false + xy: 409, 275 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +ripple-icon-small + rotate: false + xy: 695, 59 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +rock-icon-medium + rotate: false + xy: 443, 309 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +rock-icon-small + rotate: false + xy: 687, 33 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +rocks-icon-small + rotate: false + xy: 729, 119 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +rotary-pump-icon-medium + rotate: false + xy: 511, 377 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +rotary-pump-icon-small + rotate: false + xy: 729, 93 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +router-icon-small + rotate: false + xy: 721, 67 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +rtg-generator-icon-medium + rotate: false + xy: 579, 445 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +rtg-generator-icon-small + rotate: false + xy: 687, 7 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +salt-icon-small + rotate: false + xy: 713, 33 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +saltrocks-icon-small + rotate: false + xy: 713, 7 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +salvo-icon-medium + rotate: false + xy: 205, 37 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +salvo-icon-small + rotate: false + xy: 747, 67 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +sand-icon-small + rotate: false + xy: 739, 41 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +sand-water-icon-small + rotate: false + xy: 739, 15 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +sandrocks-icon-small + rotate: false + xy: 765, 41 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +scatter-icon-medium + rotate: false + xy: 273, 105 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +scatter-icon-small + rotate: false + xy: 765, 15 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +scorch + rotate: false + xy: 307, 139 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +scorch-icon-full + rotate: false + xy: 409, 241 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +scorch-icon-small + rotate: false + xy: 665, 251 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +scrap-wall-gigantic-icon-medium + rotate: false + xy: 579, 411 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +scrap-wall-gigantic-icon-small + rotate: false + xy: 691, 257 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +scrap-wall-huge-icon-medium + rotate: false + xy: 613, 445 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +scrap-wall-huge-icon-small + rotate: false + xy: 717, 257 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +scrap-wall-icon-small + rotate: false + xy: 743, 257 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +scrap-wall-large-icon-medium + rotate: false + xy: 205, 3 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +scrap-wall-large-icon-small + rotate: false + xy: 769, 265 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +separator-icon-medium + rotate: false + xy: 273, 71 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +separator-icon-small + rotate: false + xy: 995, 383 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +shale-boulder-icon-small + rotate: false + xy: 998, 409 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +shale-icon-small + rotate: false + xy: 987, 268 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +shalerocks-icon-small + rotate: false + xy: 983, 242 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +shock-mine-icon-small + rotate: false + xy: 983, 216 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +shrubs-icon-small + rotate: false + xy: 769, 239 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +silicon-smelter-icon-medium + rotate: false + xy: 511, 309 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +silicon-smelter-icon-small + rotate: false + xy: 795, 247 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +snow-icon-small + rotate: false + xy: 795, 221 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +snowrock-icon-medium + rotate: false + xy: 579, 377 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +snowrock-icon-small + rotate: false + xy: 821, 229 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +snowrocks-icon-small + rotate: false + xy: 847, 229 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +solar-panel-icon-small + rotate: false + xy: 821, 203 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +solar-panel-large-icon-medium + rotate: false + xy: 681, 479 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +solar-panel-large-icon-small + rotate: false + xy: 847, 203 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +sorter-icon-small + rotate: false + xy: 873, 216 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +spawn-icon-small + rotate: false + xy: 873, 190 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +spectre-icon-medium + rotate: false + xy: 341, 105 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +spectre-icon-small + rotate: false + xy: 899, 201 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +spirit-factory-icon-medium + rotate: false + xy: 375, 139 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +spirit-factory-icon-small + rotate: false + xy: 925, 201 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +spore-cluster-icon-medium + rotate: false + xy: 409, 173 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +spore-cluster-icon-small + rotate: false + xy: 951, 201 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +spore-moss-icon-small + rotate: false + xy: 899, 175 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +spore-pine-icon-medium + rotate: false + xy: 443, 207 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +spore-pine-icon-small + rotate: false + xy: 925, 175 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +spore-press-icon-medium + rotate: false + xy: 477, 241 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +spore-press-icon-small + rotate: false + xy: 951, 175 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +sporerocks-icon-small + rotate: false + xy: 977, 190 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +stone-icon-small + rotate: false + xy: 977, 164 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +surge-tower-icon-medium + rotate: false + xy: 545, 309 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +surge-tower-icon-small + rotate: false + xy: 683, 225 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +surge-wall-icon-small + rotate: false + xy: 709, 231 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +surge-wall-large-icon-medium + rotate: false + xy: 613, 377 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +surge-wall-large-icon-small + rotate: false + xy: 735, 231 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +swarmer-icon-medium + rotate: false + xy: 647, 411 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +swarmer-icon-small + rotate: false + xy: 701, 199 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +tainted-water-icon-small + rotate: false + xy: 727, 205 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +tar-icon-small + rotate: false + xy: 753, 205 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +tau-mech-pad-icon-medium + rotate: false + xy: 681, 445 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +tau-mech-pad-icon-small + rotate: false + xy: 719, 173 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +tendrils-icon-small + rotate: false + xy: 745, 179 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +thermal-generator-icon-medium + rotate: false + xy: 273, 3 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +thermal-generator-icon-small + rotate: false + xy: 771, 179 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +thermal-pump-icon-medium + rotate: false + xy: 307, 37 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +thermal-pump-icon-small + rotate: false + xy: 737, 147 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +thorium-reactor-icon-medium + rotate: false + xy: 341, 71 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +thorium-reactor-icon-small + rotate: false + xy: 763, 153 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +thorium-wall-icon-small + rotate: false + xy: 789, 153 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +thorium-wall-large-icon-medium + rotate: false + xy: 409, 139 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +thorium-wall-large-icon-small + rotate: false + xy: 755, 121 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +thruster-icon-medium + rotate: false + xy: 443, 173 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +thruster-icon-small + rotate: false + xy: 755, 95 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +titan-factory-icon-medium + rotate: false + xy: 477, 207 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +titan-factory-icon-small + rotate: false + xy: 781, 127 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +titanium-conveyor-icon-small + rotate: false + xy: 781, 101 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +titanium-wall-icon-small + rotate: false + xy: 807, 127 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +titanium-wall-large-icon-medium + rotate: false + xy: 749, 445 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +titanium-wall-large-icon-small + rotate: false + xy: 807, 101 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +trident-ship-pad-icon-medium + rotate: false + xy: 341, 3 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +trident-ship-pad-icon-small + rotate: false + xy: 773, 69 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +turbine-generator-icon-medium + rotate: false + xy: 375, 37 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +turbine-generator-icon-small + rotate: false + xy: 799, 75 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unloader-icon-small + rotate: false + xy: 825, 75 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +vault-icon-medium + rotate: false + xy: 443, 105 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +vault-icon-small + rotate: false + xy: 791, 43 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +water-extractor-icon-medium + rotate: false + xy: 477, 139 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +water-extractor-icon-small + rotate: false + xy: 791, 17 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +water-icon-small + rotate: false + xy: 817, 49 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +wave-icon-medium + rotate: false + xy: 511, 173 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +wave-icon-small + rotate: false + xy: 817, 23 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +white-tree-dead-icon-medium + rotate: false + xy: 545, 207 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +white-tree-dead-icon-small + rotate: false + xy: 843, 49 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +white-tree-icon-medium + rotate: false + xy: 579, 241 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +white-tree-icon-small + rotate: false + xy: 843, 23 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +wraith-factory-icon-medium + rotate: false + xy: 613, 275 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +wraith-factory-icon-small + rotate: false + xy: 833, 177 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-biomatter + rotate: false + xy: 307, 411 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +item-blast-compound + rotate: false + xy: 341, 445 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +item-coal + rotate: false + xy: 375, 479 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +item-copper + rotate: false + xy: 1, 71 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +item-graphite + rotate: false + xy: 35, 105 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +item-lead + rotate: false + xy: 69, 139 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +item-metaglass + rotate: false + xy: 103, 173 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +item-phase-fabric + rotate: false + xy: 137, 207 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +item-plastanium + rotate: false + xy: 171, 241 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +item-pyratite + rotate: false + xy: 205, 275 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +item-sand + rotate: false + xy: 239, 309 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +item-scrap + rotate: false + xy: 273, 343 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +item-silicon + rotate: false + xy: 307, 377 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +item-spore-pod + rotate: false + xy: 375, 445 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +item-surge-alloy + rotate: false + xy: 409, 479 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +item-thorium + rotate: false + xy: 1, 37 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +item-titanium + rotate: false + xy: 35, 71 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +liquid-cryofluid rotate: false xy: 341, 377 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 +liquid-oil + rotate: false + xy: 409, 445 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 liquid-slag rotate: false - xy: 69, 71 + xy: 137, 139 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-water rotate: false - xy: 171, 173 + xy: 239, 241 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 blank rotate: false - xy: 644, 306 + xy: 678, 340 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 clear rotate: false - xy: 644, 303 + xy: 678, 337 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 clear-editor rotate: false - xy: 644, 303 + xy: 678, 337 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 bar rotate: false - xy: 443, 67 + xy: 865, 437 size: 27, 36 split: 9, 9, 9, 9 orig: 27, 36 @@ -9455,7 +9462,7 @@ bar index: -1 bar-top rotate: false - xy: 409, 33 + xy: 865, 475 size: 27, 36 split: 9, 10, 9, 10 orig: 27, 36 @@ -9463,7 +9470,7 @@ bar-top index: -1 button-select rotate: false - xy: 801, 351 + xy: 613, 249 size: 24, 24 split: 4, 4, 4, 4 orig: 24, 24 @@ -9471,56 +9478,56 @@ button-select index: -1 clear rotate: false - xy: 1013, 475 + xy: 851, 75 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 editor-clear rotate: false - xy: 1013, 475 + xy: 851, 75 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 cursor rotate: false - xy: 761, 251 + xy: 795, 285 size: 4, 4 orig: 4, 4 offset: 0, 0 index: -1 empty-sector rotate: false - xy: 103, 241 + xy: 171, 309 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 icon-crafting rotate: false - xy: 619, 7 + xy: 1001, 441 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-defense rotate: false - xy: 637, 7 + xy: 815, 185 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-distribution rotate: false - xy: 815, 97 + xy: 833, 159 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-effect rotate: false - xy: 833, 120 + xy: 833, 141 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -9534,406 +9541,406 @@ icon-liquid index: -1 icon-power rotate: false - xy: 941, 105 + xy: 869, 172 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-production rotate: false - xy: 941, 87 + xy: 869, 154 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-turret rotate: false - xy: 887, 69 + xy: 887, 157 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-units rotate: false - xy: 923, 69 + xy: 887, 139 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-upgrade rotate: false - xy: 959, 69 + xy: 887, 121 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 controller-cursor rotate: false - xy: 783, 461 + xy: 817, 495 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-about rotate: false - xy: 797, 163 + xy: 565, 27 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-add rotate: false - xy: 783, 445 + xy: 817, 479 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-admin rotate: false - xy: 749, 411 + xy: 463, 3 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-admin-small rotate: false - xy: 715, 377 + xy: 539, 79 size: 6, 6 orig: 6, 6 offset: 0, 0 index: -1 icon-areaDelete rotate: false - xy: 1013, 463 + xy: 887, 178 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-arrow rotate: false - xy: 722, 257 + xy: 427, 1 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-arrow-16 rotate: false - xy: 722, 257 + xy: 427, 1 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-arrow-down rotate: false - xy: 1013, 451 + xy: 783, 447 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-arrow-left rotate: false - xy: 1013, 439 + xy: 815, 155 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-arrow-right rotate: false - xy: 1013, 427 + xy: 859, 191 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-arrow-up rotate: false - xy: 1013, 415 + xy: 937, 43 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-back rotate: false - xy: 749, 427 + xy: 445, 1 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-ban rotate: false - xy: 823, 143 + xy: 583, 1 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-break rotate: false - xy: 797, 115 + xy: 756, 291 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-cancel rotate: false - xy: 797, 97 + xy: 1001, 495 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-cancel-2 rotate: false - xy: 605, 215 + xy: 487, 53 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 icon-chat rotate: false - xy: 1013, 403 + xy: 937, 31 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-check rotate: false - xy: 583, 7 + xy: 1001, 477 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-check-2 rotate: false - xy: 597, 189 + xy: 479, 27 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 icon-copy rotate: false - xy: 601, 7 + xy: 1001, 459 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-cursor rotate: false - xy: 1013, 391 + xy: 937, 19 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-database rotate: false - xy: 729, 103 + xy: 671, 9 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-database-small rotate: false - xy: 1013, 379 + xy: 937, 7 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-dev-builds rotate: false - xy: 745, 189 + xy: 599, 1 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-diagonal rotate: false - xy: 815, 115 + xy: 815, 167 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-discord rotate: false - xy: 1009, 341 + xy: 615, 1 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-donate rotate: false - xy: 1009, 325 + xy: 779, 223 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-dots rotate: false - xy: 1009, 309 + xy: 1009, 252 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-editor rotate: false - xy: 505, 1 + xy: 1009, 236 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-egg rotate: false - xy: 521, 1 + xy: 1009, 220 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-elevation rotate: false - xy: 833, 102 + xy: 833, 123 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-eraser rotate: false - xy: 693, 101 + xy: 833, 105 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-exit rotate: false - xy: 537, 1 + xy: 791, 1 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-file rotate: false - xy: 711, 101 + xy: 635, 7 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-file-image rotate: false - xy: 1005, 267 + xy: 653, 7 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-file-text rotate: false - xy: 553, 1 + xy: 779, 207 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-fill rotate: false - xy: 1001, 249 + xy: 851, 159 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-floppy rotate: false - xy: 749, 13 + xy: 905, 69 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-floppy-16 rotate: false - xy: 1001, 231 + xy: 851, 141 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-folder rotate: false - xy: 785, 81 + xy: 923, 87 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-folder-parent rotate: false - xy: 801, 81 + xy: 941, 105 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-github rotate: false - xy: 817, 81 + xy: 959, 123 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-google-play rotate: false - xy: 752, 65 + xy: 887, 33 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-grid rotate: false - xy: 833, 84 + xy: 851, 123 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-hold rotate: false - xy: 1013, 367 + xy: 1011, 150 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-holdDelete rotate: false - xy: 1013, 111 + xy: 739, 3 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-home rotate: false - xy: 768, 67 + xy: 905, 53 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-host rotate: false - xy: 784, 65 + xy: 889, 17 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-info rotate: false - xy: 800, 65 + xy: 889, 1 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-itch.io rotate: false - xy: 816, 65 + xy: 995, 146 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-item rotate: false - xy: 1013, 99 + xy: 751, 3 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-items-none rotate: false - xy: 823, 133 + xy: 807, 7 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -9947,420 +9954,420 @@ icon-line index: -1 icon-link rotate: false - xy: 768, 51 + xy: 977, 130 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-liquid-small rotate: false - xy: 1013, 87 + xy: 763, 3 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-load rotate: false - xy: 767, 35 + xy: 993, 130 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-load-image rotate: false - xy: 869, 105 + xy: 1003, 198 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-load-map rotate: false - xy: 869, 87 + xy: 1003, 180 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-loading rotate: false - xy: 887, 105 + xy: 1003, 162 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-locked rotate: false - xy: 887, 87 + xy: 817, 5 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-logic rotate: false - xy: 1013, 75 + xy: 775, 3 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-map rotate: false - xy: 784, 49 + xy: 1009, 130 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-menu rotate: false - xy: 1013, 63 + xy: 1013, 329 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-menu-large rotate: false - xy: 905, 105 + xy: 835, 5 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-missing rotate: false - xy: 749, 1 + xy: 1013, 317 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-mission-background rotate: false - xy: 1005, 285 + xy: 783, 459 size: 18, 18 orig: 18, 18 offset: 0, 0 index: -1 icon-mission-battle rotate: false - xy: 851, 126 + xy: 1013, 305 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-mission-defense rotate: false - xy: 569, 5 + xy: 1013, 293 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-mission-done rotate: false - xy: 734, 91 + xy: 1013, 281 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-none rotate: false - xy: 453, 3 + xy: 1013, 269 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-paste rotate: false - xy: 905, 87 + xy: 853, 5 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-pause rotate: false - xy: 465, 3 + xy: 949, 43 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-pencil rotate: false - xy: 923, 105 + xy: 797, 203 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-pencil-small rotate: false - xy: 800, 49 + xy: 975, 114 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-pick rotate: false - xy: 923, 87 + xy: 797, 185 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-play rotate: false - xy: 477, 3 + xy: 949, 31 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-play-2 rotate: false - xy: 816, 49 + xy: 991, 114 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-play-custom rotate: false - xy: 783, 33 + xy: 1007, 114 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-players rotate: false - xy: 489, 3 + xy: 949, 19 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-power-requirement rotate: false - xy: 103, 207 + xy: 171, 275 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 icon-power-small rotate: false - xy: 847, 24 + xy: 949, 7 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-quit rotate: false - xy: 799, 33 + xy: 959, 107 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-redo rotate: false - xy: 959, 105 + xy: 869, 136 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-refresh rotate: false - xy: 815, 33 + xy: 975, 98 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-rename rotate: false - xy: 767, 19 + xy: 991, 98 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-resize rotate: false - xy: 959, 87 + xy: 869, 118 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-rotate rotate: false - xy: 783, 17 + xy: 1007, 98 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-rotate-arrow rotate: false - xy: 799, 17 + xy: 905, 37 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-rotate-left rotate: false - xy: 815, 17 + xy: 905, 21 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-rotate-right rotate: false - xy: 765, 1 + xy: 905, 5 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-save rotate: false - xy: 781, 1 + xy: 921, 69 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-save-image rotate: false - xy: 977, 105 + xy: 869, 100 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-save-map rotate: false - xy: 977, 87 + xy: 869, 82 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-settings rotate: false - xy: 847, 12 + xy: 953, 75 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-spray rotate: false - xy: 995, 105 + xy: 869, 64 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-terrain rotate: false - xy: 995, 87 + xy: 869, 46 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-tools rotate: false - xy: 797, 1 + xy: 921, 53 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-touch rotate: false - xy: 848, 56 + xy: 953, 63 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-touchDelete rotate: false - xy: 848, 44 + xy: 957, 95 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-trash rotate: false - xy: 813, 1 + xy: 921, 37 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-trash-16 rotate: false - xy: 851, 69 + xy: 869, 28 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-tree rotate: false - xy: 869, 69 + xy: 871, 10 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-tree-locked rotate: false - xy: 137, 241 + xy: 205, 309 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 icon-trello rotate: false - xy: 829, 1 + xy: 921, 21 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-tutorial rotate: false - xy: 833, 68 + xy: 921, 5 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-undo rotate: false - xy: 905, 69 + xy: 905, 157 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-unlocked rotate: false - xy: 941, 69 + xy: 923, 157 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-unlocks rotate: false - xy: 832, 52 + xy: 939, 87 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-wiki rotate: false - xy: 832, 36 + xy: 937, 71 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-zone rotate: false - xy: 741, 257 + xy: 479, 1 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 icon-zoom rotate: false - xy: 977, 69 + xy: 905, 139 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-zoom-small rotate: false - xy: 831, 20 + xy: 937, 55 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 inventory rotate: false - xy: 797, 283 + xy: 547, 79 size: 24, 40 split: 10, 10, 10, 14 orig: 24, 40 @@ -10368,7 +10375,7 @@ inventory index: -1 scroll rotate: false - xy: 839, 190 + xy: 987, 294 size: 24, 35 split: 10, 10, 6, 5 orig: 24, 35 @@ -10376,7 +10383,7 @@ scroll index: -1 scroll-knob-vertical-black rotate: false - xy: 813, 185 + xy: 991, 341 size: 24, 40 split: 10, 10, 6, 10 orig: 24, 40 @@ -10384,63 +10391,63 @@ scroll-knob-vertical-black index: -1 sector-select rotate: false - xy: 647, 479 + xy: 239, 37 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 selection rotate: false - xy: 678, 340 + xy: 891, 434 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 slider rotate: false - xy: 678, 330 + xy: 891, 424 size: 1, 8 orig: 1, 8 offset: 0, 0 index: -1 slider-knob rotate: false - xy: 613, 269 + xy: 647, 303 size: 29, 38 orig: 29, 38 offset: 0, 0 index: -1 slider-knob-down rotate: false - xy: 647, 303 + xy: 681, 337 size: 29, 38 orig: 29, 38 offset: 0, 0 index: -1 slider-knob-over rotate: false - xy: 647, 303 + xy: 681, 337 size: 29, 38 orig: 29, 38 offset: 0, 0 index: -1 slider-vertical rotate: false - xy: 851, 123 + xy: 887, 175 size: 8, 1 orig: 8, 1 offset: 0, 0 index: -1 white rotate: false - xy: 506, 134 + xy: 673, 298 size: 3, 3 orig: 3, 3 offset: 0, 0 index: -1 window-empty rotate: false - xy: 477, 76 + xy: 894, 450 size: 27, 61 split: 8, 8, 44, 11 orig: 27, 61 @@ -10452,1367 +10459,1382 @@ size: 1024,1024 format: RGBA8888 filter: Nearest,Nearest repeat: none -dark-panel-1-edge - rotate: false - xy: 645, 911 - size: 288, 96 - orig: 288, 96 - offset: 0, 0 - index: -1 -dark-panel-2-edge - rotate: false - xy: 645, 813 - size: 288, 96 - orig: 288, 96 - offset: 0, 0 - index: -1 -dark-panel-3-edge - rotate: false - xy: 645, 715 - size: 288, 96 - orig: 288, 96 - offset: 0, 0 - index: -1 -dark-panel-4-edge - rotate: false - xy: 645, 617 - size: 288, 96 - orig: 288, 96 - offset: 0, 0 - index: -1 -dark-panel-5-edge - rotate: false - xy: 1, 589 - size: 288, 96 - orig: 288, 96 - offset: 0, 0 - index: -1 -dark-panel-6-edge - rotate: false - xy: 291, 589 - size: 288, 96 - orig: 288, 96 - offset: 0, 0 - index: -1 -darksand-edge - rotate: false - xy: 581, 519 - size: 288, 96 - orig: 288, 96 - offset: 0, 0 - index: -1 -darksand-tainted-water-edge - rotate: false - xy: 1, 491 - size: 288, 96 - orig: 288, 96 - offset: 0, 0 - index: -1 -darksand-water-edge - rotate: false - xy: 291, 491 - size: 288, 96 - orig: 288, 96 - offset: 0, 0 - index: -1 -deepwater-edge - rotate: false - xy: 581, 421 - size: 288, 96 - orig: 288, 96 - offset: 0, 0 - index: -1 -edge-stencil - rotate: false - xy: 1, 393 - size: 288, 96 - orig: 288, 96 - offset: 0, 0 - index: -1 -grass-edge - rotate: false - xy: 291, 393 - size: 288, 96 - orig: 288, 96 - offset: 0, 0 - index: -1 -holostone-edge - rotate: false - xy: 581, 323 - size: 288, 96 - orig: 288, 96 - offset: 0, 0 - index: -1 -ice-edge - rotate: false - xy: 1, 295 - size: 288, 96 - orig: 288, 96 - offset: 0, 0 - index: -1 -ice-snow-edge - rotate: false - xy: 291, 295 - size: 288, 96 - orig: 288, 96 - offset: 0, 0 - index: -1 -ignarock-edge - rotate: false - xy: 581, 225 - size: 288, 96 - orig: 288, 96 - offset: 0, 0 - index: -1 -metal-floor-2-edge - rotate: false - xy: 1, 197 - size: 288, 96 - orig: 288, 96 - offset: 0, 0 - index: -1 -metal-floor-3-edge - rotate: false - xy: 291, 197 - size: 288, 96 - orig: 288, 96 - offset: 0, 0 - index: -1 -metal-floor-5-edge - rotate: false - xy: 581, 127 - size: 288, 96 - orig: 288, 96 - offset: 0, 0 - index: -1 -metal-floor-damaged-edge - rotate: false - xy: 1, 99 - size: 288, 96 - orig: 288, 96 - offset: 0, 0 - index: -1 -metal-floor-edge - rotate: false - xy: 291, 99 - size: 288, 96 - orig: 288, 96 - offset: 0, 0 - index: -1 -moss-edge - rotate: false - xy: 581, 29 - size: 288, 96 - orig: 288, 96 - offset: 0, 0 - index: -1 -pebbles-edge - rotate: false - xy: 1, 1 - size: 288, 96 - orig: 288, 96 - offset: 0, 0 - index: -1 -salt-edge - rotate: false - xy: 291, 1 - size: 288, 96 - orig: 288, 96 - offset: 0, 0 - index: -1 -white-tree - rotate: false - xy: 1, 687 - size: 320, 320 - orig: 320, 320 - offset: 0, 0 - index: -1 -white-tree-dead - rotate: false - xy: 323, 687 - size: 320, 320 - orig: 320, 320 - offset: 0, 0 - index: -1 - -sprites_fallback7.png -size: 1024,1024 -format: RGBA8888 -filter: Nearest,Nearest -repeat: none char1 rotate: false - xy: 713, 735 + xy: 519, 471 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 char2 rotate: false - xy: 763, 785 + xy: 907, 891 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 char3 rotate: false - xy: 1, 309 + xy: 519, 437 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cliffs1 rotate: false - xy: 183, 491 + xy: 941, 891 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 coal1 rotate: false - xy: 473, 589 + xy: 519, 403 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 coal2 rotate: false - xy: 981, 939 + xy: 975, 891 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 coal3 rotate: false - xy: 673, 653 + xy: 519, 369 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 copper1 rotate: false - xy: 713, 701 + xy: 519, 335 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 copper2 rotate: false - xy: 797, 785 + xy: 585, 695 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 copper3 rotate: false - xy: 1, 275 + xy: 585, 661 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 craters1 rotate: false - xy: 217, 491 + xy: 585, 627 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 craters2 rotate: false - xy: 507, 589 + xy: 717, 759 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 craters3 rotate: false - xy: 981, 905 + xy: 585, 593 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 craters4 rotate: false - xy: 979, 871 + xy: 491, 291 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 craters5 rotate: false - xy: 831, 785 + xy: 491, 257 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 craters6 rotate: false - xy: 1, 241 + xy: 491, 223 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 creeptree rotate: false - xy: 871, 905 + xy: 323, 913 size: 108, 108 orig: 108, 108 offset: 0, 0 index: -1 dark-metal-large rotate: false - xy: 581, 753 + xy: 1, 19 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 dark-metal1 rotate: false - xy: 251, 491 + xy: 491, 189 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 dark-metal2 rotate: false - xy: 541, 589 + xy: 491, 155 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 dark-panel-1 rotate: false - xy: 1, 207 + xy: 491, 121 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 +dark-panel-1-edge + rotate: false + xy: 1, 281 + size: 96, 96 + orig: 96, 96 + offset: 0, 0 + index: -1 dark-panel-2 rotate: false - xy: 1, 173 + xy: 491, 87 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 +dark-panel-2-edge + rotate: false + xy: 323, 815 + size: 96, 96 + orig: 96, 96 + offset: 0, 0 + index: -1 dark-panel-3 rotate: false - xy: 1, 139 + xy: 491, 53 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 +dark-panel-3-edge + rotate: false + xy: 433, 925 + size: 96, 96 + orig: 96, 96 + offset: 0, 0 + index: -1 dark-panel-4 rotate: false - xy: 1, 105 + xy: 491, 19 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 +dark-panel-4-edge + rotate: false + xy: 1, 183 + size: 96, 96 + orig: 96, 96 + offset: 0, 0 + index: -1 dark-panel-5 rotate: false - xy: 1, 71 + xy: 619, 709 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 +dark-panel-5-edge + rotate: false + xy: 99, 281 + size: 96, 96 + orig: 96, 96 + offset: 0, 0 + index: -1 dark-panel-6 rotate: false - xy: 1, 37 + xy: 619, 675 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 +dark-panel-6-edge + rotate: false + xy: 323, 717 + size: 96, 96 + orig: 96, 96 + offset: 0, 0 + index: -1 +darksand-edge + rotate: false + xy: 531, 925 + size: 96, 96 + orig: 96, 96 + offset: 0, 0 + index: -1 darksand-tainted-water rotate: false - xy: 359, 523 + xy: 619, 607 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 +darksand-tainted-water-edge + rotate: false + xy: 1, 85 + size: 96, 96 + orig: 96, 96 + offset: 0, 0 + index: -1 darksand-water rotate: false - xy: 393, 523 + xy: 653, 641 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 +darksand-water-edge + rotate: false + xy: 99, 183 + size: 96, 96 + orig: 96, 96 + offset: 0, 0 + index: -1 darksand1 rotate: false - xy: 1, 3 + xy: 653, 709 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 darksand2 rotate: false - xy: 291, 523 + xy: 619, 641 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 darksand3 rotate: false - xy: 325, 523 + xy: 653, 675 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 deepwater rotate: false - xy: 285, 489 + xy: 653, 607 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 +deepwater-edge + rotate: false + xy: 197, 281 + size: 96, 96 + orig: 96, 96 + offset: 0, 0 + index: -1 dunerocks-large rotate: false - xy: 1, 459 + xy: 617, 859 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 dunerocks1 rotate: false - xy: 319, 489 + xy: 687, 709 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 dunerocks2 rotate: false - xy: 353, 489 + xy: 687, 675 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 +edge + rotate: false + xy: 687, 641 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +edge-stencil + rotate: false + xy: 323, 619 + size: 96, 96 + orig: 96, 96 + offset: 0, 0 + index: -1 +edgier + rotate: false + xy: 687, 607 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +grass-edge + rotate: false + xy: 629, 925 + size: 96, 96 + orig: 96, 96 + offset: 0, 0 + index: -1 grass1 rotate: false - xy: 387, 489 + xy: 751, 775 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 grass2 rotate: false - xy: 937, 829 + xy: 569, 559 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 grass3 rotate: false - xy: 871, 805 + xy: 525, 301 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 +holostone-edge + rotate: false + xy: 99, 85 + size: 96, 96 + orig: 96, 96 + offset: 0, 0 + index: -1 holostone1 rotate: false - xy: 427, 539 + xy: 525, 267 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 holostone2 rotate: false - xy: 51, 359 + xy: 525, 233 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 holostone3 rotate: false - xy: 117, 425 + xy: 525, 199 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 hotrock1 rotate: false - xy: 747, 735 + xy: 525, 165 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 hotrock2 rotate: false - xy: 747, 701 + xy: 525, 131 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 hotrock3 rotate: false - xy: 781, 751 + xy: 525, 97 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 +ice-edge + rotate: false + xy: 197, 183 + size: 96, 96 + orig: 96, 96 + offset: 0, 0 + index: -1 +ice-snow-edge + rotate: false + xy: 323, 521 + size: 96, 96 + orig: 96, 96 + offset: 0, 0 + index: -1 ice-snow1 rotate: false - xy: 35, 309 + xy: 799, 825 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ice-snow2 rotate: false - xy: 35, 275 + xy: 751, 741 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ice-snow3 rotate: false - xy: 35, 241 + xy: 603, 559 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ice1 rotate: false - xy: 781, 717 + xy: 525, 63 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ice2 rotate: false - xy: 815, 751 + xy: 525, 29 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ice3 rotate: false - xy: 815, 717 + xy: 199, 1 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 icerocks-large rotate: false - xy: 291, 557 + xy: 519, 663 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 icerocks1 rotate: false - xy: 35, 207 + xy: 637, 573 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 icerocks2 rotate: false - xy: 35, 173 + xy: 671, 573 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 +ignarock-edge + rotate: false + xy: 727, 925 + size: 96, 96 + orig: 96, 96 + offset: 0, 0 + index: -1 ignarock1 rotate: false - xy: 35, 139 + xy: 233, 1 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ignarock2 rotate: false - xy: 35, 105 + xy: 799, 791 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ignarock3 rotate: false - xy: 35, 71 + xy: 785, 757 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 lead1 rotate: false - xy: 35, 37 + xy: 833, 841 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 lead2 rotate: false - xy: 35, 3 + xy: 833, 807 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 lead3 rotate: false - xy: 473, 555 + xy: 867, 849 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 magmarock1 rotate: false - xy: 507, 555 + xy: 867, 815 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 magmarock2 rotate: false - xy: 541, 555 + xy: 705, 573 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 magmarock3 rotate: false - xy: 183, 457 + xy: 785, 723 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor rotate: false - xy: 217, 457 + xy: 833, 773 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor-2 rotate: false - xy: 251, 457 + xy: 867, 781 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 +metal-floor-2-edge + rotate: false + xy: 197, 85 + size: 96, 96 + orig: 96, 96 + offset: 0, 0 + index: -1 metal-floor-3 rotate: false - xy: 285, 455 + xy: 819, 739 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 +metal-floor-3-edge + rotate: false + xy: 323, 423 + size: 96, 96 + orig: 96, 96 + offset: 0, 0 + index: -1 metal-floor-5 rotate: false - xy: 319, 455 + xy: 819, 705 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 +metal-floor-5-edge + rotate: false + xy: 825, 925 + size: 96, 96 + orig: 96, 96 + offset: 0, 0 + index: -1 +metal-floor-damaged-edge + rotate: false + xy: 923, 925 + size: 96, 96 + orig: 96, 96 + offset: 0, 0 + index: -1 metal-floor-damaged1 rotate: false - xy: 353, 455 + xy: 637, 539 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor-damaged2 rotate: false - xy: 387, 455 + xy: 671, 539 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor-damaged3 rotate: false - xy: 427, 505 + xy: 705, 539 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 +metal-floor-edge + rotate: false + xy: 323, 325 + size: 96, 96 + orig: 96, 96 + offset: 0, 0 + index: -1 +moss-edge + rotate: false + xy: 295, 227 + size: 96, 96 + orig: 96, 96 + offset: 0, 0 + index: -1 moss1 rotate: false - xy: 421, 471 + xy: 853, 739 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 moss2 rotate: false - xy: 461, 521 + xy: 853, 705 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 moss3 rotate: false - xy: 495, 521 + xy: 569, 525 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-coal1 rotate: false - xy: 529, 521 + xy: 603, 525 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-coal2 rotate: false - xy: 85, 375 + xy: 637, 505 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-coal3 rotate: false - xy: 781, 683 + xy: 671, 505 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-copper1 rotate: false - xy: 815, 683 + xy: 705, 505 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-copper2 rotate: false - xy: 849, 751 + xy: 561, 491 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-copper3 rotate: false - xy: 849, 717 + xy: 595, 491 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-lead1 rotate: false - xy: 849, 683 + xy: 553, 457 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-lead2 rotate: false - xy: 421, 437 + xy: 553, 423 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-lead3 rotate: false - xy: 461, 487 + xy: 587, 457 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-scrap1 rotate: false - xy: 495, 487 + xy: 553, 389 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-scrap2 rotate: false - xy: 529, 487 + xy: 587, 423 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-scrap3 rotate: false - xy: 455, 453 + xy: 553, 355 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-thorium1 rotate: false - xy: 489, 453 + xy: 587, 389 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-thorium2 rotate: false - xy: 523, 453 + xy: 587, 355 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-thorium3 rotate: false - xy: 85, 341 + xy: 559, 321 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-titanium1 rotate: false - xy: 69, 307 + xy: 559, 287 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-titanium2 rotate: false - xy: 69, 273 + xy: 559, 253 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-titanium3 rotate: false - xy: 69, 239 + xy: 559, 219 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 +pebbles-edge + rotate: false + xy: 295, 129 + size: 96, 96 + orig: 96, 96 + offset: 0, 0 + index: -1 pebbles1 rotate: false - xy: 69, 205 + xy: 559, 185 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pebbles2 rotate: false - xy: 69, 171 + xy: 559, 151 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pebbles3 rotate: false - xy: 69, 137 + xy: 559, 117 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pine rotate: false - xy: 581, 637 + xy: 617, 743 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 rock1 rotate: false - xy: 713, 769 + xy: 519, 547 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 rock2 rotate: false - xy: 1, 343 + xy: 199, 35 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 rocks-large rotate: false - xy: 871, 839 + xy: 67, 19 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 rocks1 rotate: false - xy: 69, 103 + xy: 559, 83 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 rocks2 rotate: false - xy: 69, 69 + xy: 559, 49 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 salt rotate: false - xy: 69, 35 + xy: 593, 321 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 +salt-edge + rotate: false + xy: 295, 31 + size: 96, 96 + orig: 96, 96 + offset: 0, 0 + index: -1 saltrocks-large rotate: false - xy: 581, 687 + xy: 617, 793 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 saltrocks1 rotate: false - xy: 69, 1 + xy: 593, 287 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 saltrocks2 rotate: false - xy: 119, 391 + xy: 593, 253 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 sand-edge rotate: false - xy: 1, 917 - size: 288, 96 - orig: 288, 96 + xy: 393, 227 + size: 96, 96 + orig: 96, 96 offset: 0, 0 index: -1 sand-water rotate: false - xy: 523, 419 + xy: 593, 117 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 sand-water-edge rotate: false - xy: 1, 819 - size: 288, 96 - orig: 288, 96 + xy: 393, 129 + size: 96, 96 + orig: 96, 96 offset: 0, 0 index: -1 sand1 rotate: false - xy: 119, 357 + xy: 593, 219 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 sand2 rotate: false - xy: 455, 419 + xy: 593, 185 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 sand3 rotate: false - xy: 489, 419 + xy: 593, 151 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 sandrocks-large rotate: false - xy: 647, 753 + xy: 683, 859 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 sandrocks1 rotate: false - xy: 103, 307 + xy: 593, 83 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 sandrocks2 rotate: false - xy: 103, 273 + xy: 593, 49 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scrap1 rotate: false - xy: 103, 239 + xy: 559, 15 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scrap2 rotate: false - xy: 103, 205 + xy: 593, 15 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scrap3 rotate: false - xy: 103, 171 + xy: 907, 857 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shale-boulder1 rotate: false - xy: 103, 35 + xy: 901, 789 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shale-boulder2 rotate: false - xy: 103, 1 + xy: 935, 823 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shale-edge rotate: false - xy: 291, 917 - size: 288, 96 - orig: 288, 96 + xy: 393, 31 + size: 96, 96 + orig: 96, 96 offset: 0, 0 index: -1 shale1 rotate: false - xy: 103, 137 + xy: 941, 857 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shale2 rotate: false - xy: 103, 103 + xy: 975, 857 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shale3 rotate: false - xy: 103, 69 + xy: 901, 823 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shalerocks-large rotate: false - xy: 1, 393 + xy: 519, 597 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 shalerocks1 rotate: false - xy: 581, 603 + xy: 935, 789 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shalerocks2 rotate: false - xy: 575, 569 + xy: 969, 823 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shrubs-large rotate: false - xy: 67, 459 + xy: 133, 19 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 shrubs1 rotate: false - xy: 615, 603 + xy: 969, 789 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shrubs2 rotate: false - xy: 609, 569 + xy: 621, 457 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 snow-edge rotate: false - xy: 1, 721 - size: 288, 96 - orig: 288, 96 + xy: 421, 815 + size: 96, 96 + orig: 96, 96 offset: 0, 0 index: -1 snow1 rotate: false - xy: 649, 611 + xy: 621, 423 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 snow2 rotate: false - xy: 683, 619 + xy: 621, 389 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 snow3 rotate: false - xy: 707, 653 + xy: 621, 355 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 snowrock1 rotate: false - xy: 67, 409 + xy: 749, 809 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 snowrock2 rotate: false - xy: 133, 475 + xy: 815, 875 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 snowrocks-large rotate: false - xy: 357, 557 + xy: 683, 793 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 snowrocks1 rotate: false - xy: 717, 619 + xy: 627, 321 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 snowrocks2 rotate: false - xy: 741, 667 + xy: 627, 287 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +spawn + rotate: false + xy: 627, 253 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 spawn-edge rotate: false - xy: 291, 819 - size: 288, 96 - orig: 288, 96 + xy: 421, 717 + size: 96, 96 + orig: 96, 96 offset: 0, 0 index: -1 spore-cluster1 rotate: false - xy: 981, 973 + xy: 519, 505 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 spore-cluster2 rotate: false - xy: 937, 863 + xy: 249, 43 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 spore-cluster3 rotate: false - xy: 631, 645 + xy: 865, 883 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 spore-moss-edge rotate: false - xy: 581, 917 - size: 288, 96 - orig: 288, 96 + xy: 421, 619 + size: 96, 96 + orig: 96, 96 offset: 0, 0 index: -1 spore-moss1 rotate: false - xy: 575, 535 + xy: 627, 219 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 spore-moss2 rotate: false - xy: 609, 535 + xy: 627, 185 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 spore-moss3 rotate: false - xy: 563, 501 + xy: 627, 151 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 spore-pine rotate: false - xy: 423, 573 + xy: 667, 743 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 sporerocks-large rotate: false - xy: 647, 687 + xy: 749, 859 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 sporerocks1 rotate: false - xy: 597, 501 + xy: 627, 117 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 sporerocks2 rotate: false - xy: 563, 467 + xy: 627, 83 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 stone-edge rotate: false - xy: 1, 623 - size: 288, 96 - orig: 288, 96 + xy: 421, 521 + size: 96, 96 + orig: 96, 96 offset: 0, 0 index: -1 stone1 rotate: false - xy: 597, 467 + xy: 627, 49 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 stone2 rotate: false - xy: 557, 433 + xy: 627, 15 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 stone3 rotate: false - xy: 591, 433 + xy: 655, 471 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 tainted-water rotate: false - xy: 557, 399 + xy: 655, 437 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 tainted-water-edge rotate: false - xy: 291, 721 - size: 288, 96 - orig: 288, 96 + xy: 421, 423 + size: 96, 96 + orig: 96, 96 offset: 0, 0 index: -1 tar rotate: false - xy: 591, 399 + xy: 689, 471 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 tar-edge rotate: false - xy: 581, 819 - size: 288, 96 - orig: 288, 96 + xy: 421, 325 + size: 96, 96 + orig: 96, 96 offset: 0, 0 index: -1 tendrils-edge rotate: false - xy: 1, 525 - size: 288, 96 - orig: 288, 96 + xy: 519, 827 + size: 96, 96 + orig: 96, 96 offset: 0, 0 index: -1 tendrils1 rotate: false - xy: 631, 501 + xy: 655, 403 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 tendrils2 rotate: false - xy: 631, 467 + xy: 689, 437 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 tendrils3 rotate: false - xy: 625, 433 + xy: 655, 369 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 thorium1 rotate: false - xy: 625, 399 + xy: 689, 403 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 thorium2 rotate: false - xy: 751, 633 + xy: 689, 369 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 thorium3 rotate: false - xy: 785, 649 + xy: 661, 335 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium1 rotate: false - xy: 819, 649 + xy: 661, 301 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium2 rotate: false - xy: 853, 649 + xy: 661, 267 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium3 rotate: false - xy: 785, 615 + xy: 661, 233 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 water rotate: false - xy: 819, 615 + xy: 661, 199 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 water-edge rotate: false - xy: 291, 623 - size: 288, 96 - orig: 288, 96 + xy: 519, 729 + size: 96, 96 + orig: 96, 96 + offset: 0, 0 + index: -1 +white-tree + rotate: false + xy: 1, 701 + size: 320, 320 + orig: 320, 320 + offset: 0, 0 + index: -1 +white-tree-dead + rotate: false + xy: 1, 379 + size: 320, 320 + orig: 320, 320 offset: 0, 0 index: -1 diff --git a/core/assets/sprites/sprites_fallback4.png b/core/assets/sprites/sprites_fallback4.png index 5bbf265a48..9d8b0178d6 100644 Binary files a/core/assets/sprites/sprites_fallback4.png and b/core/assets/sprites/sprites_fallback4.png differ diff --git a/core/assets/sprites/sprites_fallback5.png b/core/assets/sprites/sprites_fallback5.png index 46781d2e93..624686df28 100644 Binary files a/core/assets/sprites/sprites_fallback5.png and b/core/assets/sprites/sprites_fallback5.png differ diff --git a/core/assets/sprites/sprites_fallback6.png b/core/assets/sprites/sprites_fallback6.png index c27409840e..237b64b3e2 100644 Binary files a/core/assets/sprites/sprites_fallback6.png and b/core/assets/sprites/sprites_fallback6.png differ diff --git a/core/assets/sprites/sprites_fallback7.png b/core/assets/sprites/sprites_fallback7.png deleted file mode 100644 index fdc9f89c42..0000000000 Binary files a/core/assets/sprites/sprites_fallback7.png and /dev/null differ diff --git a/core/src/io/anuke/mindustry/Vars.java b/core/src/io/anuke/mindustry/Vars.java index 297c78f82d..6c187799b9 100644 --- a/core/src/io/anuke/mindustry/Vars.java +++ b/core/src/io/anuke/mindustry/Vars.java @@ -105,6 +105,8 @@ public class Vars{ public static FileHandle screenshotDirectory; /** data subdirectory used for custom mmaps */ public static FileHandle customMapDirectory; + /** tmp subdirectory for map conversion */ + public static FileHandle tmpDirectory; /** data subdirectory used for saves */ public static FileHandle saveDirectory; /** old map file extension, for conversion */ @@ -206,5 +208,6 @@ public class Vars{ screenshotDirectory = dataDirectory.child("screenshots/"); customMapDirectory = dataDirectory.child("maps/"); saveDirectory = dataDirectory.child("saves/"); + tmpDirectory = dataDirectory.child("tmp/"); } } diff --git a/core/src/io/anuke/mindustry/ai/Pathfinder.java b/core/src/io/anuke/mindustry/ai/Pathfinder.java index 85890bba56..026cdbe0e7 100644 --- a/core/src/io/anuke/mindustry/ai/Pathfinder.java +++ b/core/src/io/anuke/mindustry/ai/Pathfinder.java @@ -5,8 +5,7 @@ import io.anuke.arc.collection.IntArray; import io.anuke.arc.collection.IntQueue; import io.anuke.arc.math.geom.Geometry; import io.anuke.arc.math.geom.Point2; -import io.anuke.arc.util.Structs; -import io.anuke.arc.util.Time; +import io.anuke.arc.util.*; import io.anuke.mindustry.game.EventType.TileChangeEvent; import io.anuke.mindustry.game.EventType.WorldLoadEvent; import io.anuke.mindustry.game.Team; @@ -40,6 +39,10 @@ public class Pathfinder{ }); } + public void updateSolid(Tile tile){ + update(tile, tile.getTeam()); + } + public void update(){ if(Net.client() || paths == null) return; @@ -95,6 +98,10 @@ public class Pathfinder{ if(paths != null && paths[team.ordinal()] != null && paths[team.ordinal()].weights != null){ PathData path = paths[team.ordinal()]; + if(!path.frontier.isEmpty()){ + return; + } + //impassable tiles have a weight of float.max if(!passable(tile, team)){ path.weights[tile.x][tile.y] = Float.MAX_VALUE; diff --git a/core/src/io/anuke/mindustry/ai/WaveSpawner.java b/core/src/io/anuke/mindustry/ai/WaveSpawner.java index 1be663b807..bba51232c8 100644 --- a/core/src/io/anuke/mindustry/ai/WaveSpawner.java +++ b/core/src/io/anuke/mindustry/ai/WaveSpawner.java @@ -14,12 +14,13 @@ import io.anuke.mindustry.entities.type.BaseUnit; import io.anuke.mindustry.game.EventType.WorldLoadEvent; import io.anuke.mindustry.game.SpawnGroup; import io.anuke.mindustry.net.Net; +import io.anuke.mindustry.world.Tile; import static io.anuke.mindustry.Vars.*; public class WaveSpawner{ private Array flySpawns = new Array<>(); - private Array groundSpawns = new Array<>(); + private Array groundSpawns = new Array<>(); private boolean spawning = false; public WaveSpawner(){ @@ -30,6 +31,10 @@ public class WaveSpawner{ return groundSpawns.size; } + public Array getGroundSpawns(){ + return groundSpawns; + } + /** @return true if the player is near a ground spawn point. */ public boolean playerNear(){ return groundSpawns.contains(g -> Mathf.dst(g.x * tilesize, g.y * tilesize, player.x, player.y) < state.rules.dropZoneRadius); @@ -59,9 +64,9 @@ public class WaveSpawner{ } } }else{ - for(GroundSpawn spawn : groundSpawns){ - spawnX = spawn.x * tilesize; - spawnY = spawn.y * tilesize; + for(Tile spawn : groundSpawns){ + spawnX = spawn.worldx(); + spawnY = spawn.worldy(); spread = tilesize * 2; for(int i = 0; i < spawned; i++){ @@ -102,10 +107,7 @@ public class WaveSpawner{ } private void addSpawns(int x, int y){ - GroundSpawn spawn = new GroundSpawn(); - spawn.x = x; - spawn.y = y; - groundSpawns.add(spawn); + groundSpawns.add(world.tile(x, y)); FlyerSpawn fspawn = new FlyerSpawn(); fspawn.angle = Angles.angle(world.width() / 2f, world.height() / 2f, x, y); diff --git a/core/src/io/anuke/mindustry/content/Blocks.java b/core/src/io/anuke/mindustry/content/Blocks.java index db737c9608..020128e9e9 100644 --- a/core/src/io/anuke/mindustry/content/Blocks.java +++ b/core/src/io/anuke/mindustry/content/Blocks.java @@ -114,6 +114,9 @@ public class Blocks implements ContentList{ } spawn = new OverlayFloor("spawn"){ + { + variants = 0; + } public void draw(Tile tile){} }; @@ -496,19 +499,7 @@ public class Blocks implements ContentList{ GenericCrafterEntity entity = tile.entity(); Draw.rect(reg(bottomRegion), tile.drawx(), tile.drawy()); - - float progress = 0.5f; - - Shaders.build.region = reg(weaveRegion); - Shaders.build.progress = progress; - Shaders.build.color.set(Pal.accent); - Shaders.build.color.a = entity.warmup; - Shaders.build.time = -entity.totalProgress / 10f; - - Draw.shader(Shaders.build, false); - Shaders.build.apply(); Draw.rect(reg(weaveRegion), tile.drawx(), tile.drawy(), entity.totalProgress); - Draw.shader(); Draw.color(Pal.accent); Draw.alpha(entity.warmup); @@ -940,7 +931,7 @@ public class Blocks implements ContentList{ itemCapacity = 120; reloadTime = 200f; range = 440f; - consumes.power(2f); + consumes.power(1.75f); }}; //endregion @@ -1299,8 +1290,8 @@ public class Blocks implements ContentList{ Items.scrap, Bullets.flakScrap, Items.lead, Bullets.flakLead ); - reload = 15f; - range = 180f; + reload = 16f; + range = 175f; size = 2; burstSpacing = 5f; shots = 2; @@ -1499,7 +1490,7 @@ public class Blocks implements ContentList{ ammo(Items.graphite, Bullets.fuseShot); reload = 40f; shootShake = 4f; - range = 80f; + range = 110f; recoil = 5f; restitution = 0.1f; size = 3; @@ -1544,7 +1535,7 @@ public class Blocks implements ContentList{ reload = 50f; firingMoveFract = 0.5f; shootDuration = 220f; - powerUse = 10f; + powerUse = 14f; health = 200 * size * size; consumes.add(new ConsumeLiquidFilter(liquid -> liquid.temperature <= 0.5f && liquid.flammability < 0.1f, 0.5f)).update(false); diff --git a/core/src/io/anuke/mindustry/content/Bullets.java b/core/src/io/anuke/mindustry/content/Bullets.java index 9119ed9575..feefe33d8f 100644 --- a/core/src/io/anuke/mindustry/content/Bullets.java +++ b/core/src/io/anuke/mindustry/content/Bullets.java @@ -579,11 +579,12 @@ public class Bullets implements ContentList{ fuseShot = new BulletType(0.01f, 70){ int rays = 3; - float rayLength = 80f; + float rayLength = 120f; { hitEffect = Fx.hitFuse; - lifetime = 13f; + shootEffect = smokeEffect = Fx.none; + lifetime = 10f; despawnEffect = Fx.none; pierce = true; } @@ -599,14 +600,15 @@ public class Bullets implements ContentList{ public void draw(Bullet b){ super.draw(b); Draw.color(Color.WHITE, Pal.surge, b.fin()); + //Draw.alpha(b.fout()); for(int i = 0; i < 7; i++){ Tmp.v1.trns(b.rot(), i * 8f); float sl = Mathf.clamp(b.fout() - 0.5f) * (80f - i * 10); Shapes.tri(b.x + Tmp.v1.x, b.y + Tmp.v1.y, 4f, sl, b.rot() + 90); Shapes.tri(b.x + Tmp.v1.x, b.y + Tmp.v1.y, 4f, sl, b.rot() - 90); } - Shapes.tri(b.x, b.y, 13f, (rayLength + 50) * b.fout(), b.rot()); - Shapes.tri(b.x, b.y, 13f, 10f * b.fout(), b.rot() + 180f); + Shapes.tri(b.x, b.y, 20f * b.fout(), (rayLength + 50), b.rot()); + Shapes.tri(b.x, b.y, 20f * b.fout(), 10f, b.rot() + 180f); Draw.reset(); } }; diff --git a/core/src/io/anuke/mindustry/content/Mechs.java b/core/src/io/anuke/mindustry/content/Mechs.java index d19aaae610..af6448725a 100644 --- a/core/src/io/anuke/mindustry/content/Mechs.java +++ b/core/src/io/anuke/mindustry/content/Mechs.java @@ -35,7 +35,7 @@ public class Mechs implements ContentList{ boostSpeed = 0.95f; buildPower = 1.2f; engineColor = Color.valueOf("ffd37f"); - health = 300f; + health = 250f; weapon = new Weapon("blaster"){{ length = 1.5f; @@ -51,10 +51,6 @@ public class Mechs implements ContentList{ player.healBy(Time.delta() * 0.09f); } - @Override - public boolean alwaysUnlocked(){ - return true; - } }; delta = new Mech("delta-mech", false){ @@ -66,7 +62,7 @@ public class Mechs implements ContentList{ boostSpeed = 0.95f; itemCapacity = 15; mass = 0.9f; - health = 250f; + health = 150f; buildPower = 0.9f; weaponOffsetX = -1; weaponOffsetY = -1; @@ -75,7 +71,7 @@ public class Mechs implements ContentList{ weapon = new Weapon("shockgun"){{ shake = 2f; length = 1f; - reload = 40f; + reload = 45f; shotDelay = 3f; roundrobin = true; shots = 2; @@ -163,12 +159,12 @@ public class Mechs implements ContentList{ weaponOffsetX = 1; weaponOffsetY = 0; engineColor = Color.valueOf("feb380"); - health = 300f; + health = 320f; buildPower = 1.5f; weapon = new Weapon("swarmer"){{ length = 1.5f; recoil = 4f; - reload = 60f; + reload = 45f; shots = 4; spacing = 8f; inaccuracy = 8f; @@ -240,6 +236,11 @@ public class Mechs implements ContentList{ bullet = Bullets.standardCopper; }}; } + + @Override + public boolean alwaysUnlocked(){ + return true; + } }; javelin = new Mech("javelin-ship", true){ @@ -316,7 +317,7 @@ public class Mechs implements ContentList{ itemCapacity = 30; engineColor = Color.valueOf("84f491"); cellTrnsY = 1f; - buildPower = 2f; + buildPower = 2.5f; weapon = new Weapon("bomber"){{ length = 0f; width = 2f; @@ -329,7 +330,7 @@ public class Mechs implements ContentList{ velocityRnd = 1f; inaccuracy = 20f; ignoreRotation = true; - bullet = new BombBulletType(14f, 25f, "shell"){{ + bullet = new BombBulletType(16f, 25f, "shell"){{ bulletWidth = 10f; bulletHeight = 14f; hitEffect = Fx.flakExplosion; diff --git a/core/src/io/anuke/mindustry/core/Control.java b/core/src/io/anuke/mindustry/core/Control.java index 7bfb76aac8..97574e4662 100644 --- a/core/src/io/anuke/mindustry/core/Control.java +++ b/core/src/io/anuke/mindustry/core/Control.java @@ -135,7 +135,7 @@ public class Control implements ApplicationListener{ Net.host(port); player.isAdmin = true; }catch(IOException e){ - ui.showError(Core.bundle.format("server.error", Strings.parseException(e, false))); + ui.showError(Core.bundle.format("server.error", Strings.parseException(e, true))); Core.app.post(() -> state.set(State.menu)); } } diff --git a/core/src/io/anuke/mindustry/core/NetServer.java b/core/src/io/anuke/mindustry/core/NetServer.java index 461a7a65c9..44f0a7aae1 100644 --- a/core/src/io/anuke/mindustry/core/NetServer.java +++ b/core/src/io/anuke/mindustry/core/NetServer.java @@ -234,7 +234,7 @@ public class NetServer implements ApplicationListener{ } player.remove(); netServer.connections.remove(player.con.id); - Log.info("&lc{0} has disconnected.", player.name); + Log.info("&lm[{1}] &lc{0} has disconnected.", player.name, player.uuid); } private static float compound(float speed, float drag){ @@ -248,16 +248,16 @@ public class NetServer implements ApplicationListener{ @Remote(targets = Loc.client, unreliable = true) public static void onClientShapshot( - Player player, - int snapshotID, - float x, float y, - float pointerX, float pointerY, - float rotation, float baseRotation, - float xVelocity, float yVelocity, - Tile mining, - boolean boosting, boolean shooting, boolean chatting, - BuildRequest[] requests, - float viewX, float viewY, float viewWidth, float viewHeight + Player player, + int snapshotID, + float x, float y, + float pointerX, float pointerY, + float rotation, float baseRotation, + float xVelocity, float yVelocity, + Tile mining, + boolean boosting, boolean shooting, boolean chatting, + BuildRequest[] requests, + float viewX, float viewY, float viewWidth, float viewHeight ){ NetConnection connection = player.con; if(connection == null || snapshotID < connection.lastRecievedClientSnapshot) return; @@ -296,7 +296,7 @@ public class NetServer implements ApplicationListener{ } vector.set(x - player.getInterpolator().target.x, y - player.getInterpolator().target.y); - vector.limit(maxMove); + //vector.limit(maxMove); float prevx = player.x, prevy = player.y; player.set(player.getInterpolator().target.x, player.getInterpolator().target.y); @@ -372,7 +372,7 @@ public class NetServer implements ApplicationListener{ player.add(); player.con.hasConnected = true; Call.sendMessage("[accent]" + player.name + "[accent] has connected."); - Log.info("&y{0} has connected.", player.name); + Log.info("&lm[{1}] &y{0} has connected. ", player.name, player.uuid); } public boolean isWaitingForPlayers(){ diff --git a/core/src/io/anuke/mindustry/core/Platform.java b/core/src/io/anuke/mindustry/core/Platform.java index 381865907b..85026c9335 100644 --- a/core/src/io/anuke/mindustry/core/Platform.java +++ b/core/src/io/anuke/mindustry/core/Platform.java @@ -4,6 +4,7 @@ import io.anuke.arc.Core; import io.anuke.arc.Input.TextInput; import io.anuke.arc.files.FileHandle; import io.anuke.arc.function.Consumer; +import io.anuke.arc.function.Predicate; import io.anuke.arc.math.RandomXS128; import io.anuke.arc.scene.ui.TextField; import io.anuke.arc.util.serialization.Base64Coder; @@ -66,14 +67,14 @@ public abstract class Platform{ } /** - * Show a file chooser. Desktop only. + * Show a file chooser. * @param text File chooser title text * @param content Description of the type of files to be loaded * @param cons Selection listener * @param open Whether to open or save files * @param filetype File extension to filter */ - public void showFileChooser(String text, String content, Consumer cons, boolean open, String filetype){ + public void showFileChooser(String text, String content, Consumer cons, boolean open, Predicate filetype){ } /** Hide the app. Android only. */ diff --git a/core/src/io/anuke/mindustry/core/UI.java b/core/src/io/anuke/mindustry/core/UI.java index 446ff0ef9d..ef57acaa8b 100644 --- a/core/src/io/anuke/mindustry/core/UI.java +++ b/core/src/io/anuke/mindustry/core/UI.java @@ -25,8 +25,7 @@ import io.anuke.mindustry.ui.dialogs.*; import io.anuke.mindustry.ui.fragments.*; import static io.anuke.arc.scene.actions.Actions.*; -import static io.anuke.mindustry.Vars.control; -import static io.anuke.mindustry.Vars.disableUI; +import static io.anuke.mindustry.Vars.*; public class UI implements ApplicationListener{ private FreeTypeFontGenerator generator; @@ -244,8 +243,17 @@ public class UI implements ApplicationListener{ } public void showError(String text){ - new Dialog("$error.title", "dialog"){{ - cont.margin(15).add(text).width(400f).wrap().get().setAlignment(Align.center, Align.center); + new Dialog("", "dialog"){{ + setFillParent(true); + cont.add("$error.title"); + cont.row(); + cont.margin(15).pane(t -> { + Label l = t.add(text).pad(14f).get(); + l.setAlignment(Align.center, Align.left); + if(mobile){ + t.getCell(l).wrap().width(400f); + } + }); buttons.addButton("$ok", this::hide).size(90, 50).pad(4); }}.show(); } diff --git a/core/src/io/anuke/mindustry/editor/DrawOperation.java b/core/src/io/anuke/mindustry/editor/DrawOperation.java index ee71b7e2b9..adf2551079 100755 --- a/core/src/io/anuke/mindustry/editor/DrawOperation.java +++ b/core/src/io/anuke/mindustry/editor/DrawOperation.java @@ -12,8 +12,13 @@ import static io.anuke.mindustry.Vars.content; import static io.anuke.mindustry.Vars.world; public class DrawOperation{ + private MapEditor editor; private LongArray array = new LongArray(); + public DrawOperation(MapEditor editor) { + this.editor = editor; + } + public boolean isEmpty(){ return array.isEmpty(); } @@ -22,23 +27,25 @@ public class DrawOperation{ array.add(op); } - public void undo(MapEditor editor){ + public void undo(){ for(int i = array.size - 1; i >= 0; i--){ - long l = array.get(i); - array.set(i, TileOp.get(TileOp.x(l), TileOp.y(l), TileOp.type(l), get(editor.tile(TileOp.x(l), TileOp.y(l)), TileOp.type(l)))); - set(editor, editor.tile(TileOp.x(l), TileOp.y(l)), TileOp.type(l), TileOp.value(l)); + updateTile(i); } } - public void redo(MapEditor editor){ + public void redo(){ for(int i = 0; i < array.size; i++){ - long l = array.get(i); - array.set(i, TileOp.get(TileOp.x(l), TileOp.y(l), TileOp.type(l), get(editor.tile(TileOp.x(l), TileOp.y(l)), TileOp.type(l)))); - set(editor, editor.tile(TileOp.x(l), TileOp.y(l)), TileOp.type(l), TileOp.value(l)); + updateTile(i); } } - short get(Tile tile, byte type){ + private void updateTile(int i) { + long l = array.get(i); + array.set(i, TileOp.get(TileOp.x(l), TileOp.y(l), TileOp.type(l), getTile(editor.tile(TileOp.x(l), TileOp.y(l)), TileOp.type(l)))); + setTile(editor.tile(TileOp.x(l), TileOp.y(l)), TileOp.type(l), TileOp.value(l)); + } + + short getTile(Tile tile, byte type){ if(type == OpType.floor.ordinal()){ return tile.floorID(); }else if(type == OpType.block.ordinal()){ @@ -53,7 +60,7 @@ public class DrawOperation{ throw new IllegalArgumentException("Invalid type."); } - void set(MapEditor editor, Tile tile, byte type, short to){ + void setTile(Tile tile, byte type, short to){ editor.load(() -> { if(type == OpType.floor.ordinal()){ tile.setFloor((Floor)content.block(to)); diff --git a/core/src/io/anuke/mindustry/editor/EditorTile.java b/core/src/io/anuke/mindustry/editor/EditorTile.java index e7e694d75b..41234e1578 100644 --- a/core/src/io/anuke/mindustry/editor/EditorTile.java +++ b/core/src/io/anuke/mindustry/editor/EditorTile.java @@ -99,7 +99,7 @@ public class EditorTile extends Tile{ } if(overlayID() == overlay) return; - op(OpType.overlay, overlay); + op(OpType.overlay, this.overlay); super.setOverlayID(overlay); } diff --git a/core/src/io/anuke/mindustry/editor/EditorTool.java b/core/src/io/anuke/mindustry/editor/EditorTool.java index 41cab43717..7eb6ffa334 100644 --- a/core/src/io/anuke/mindustry/editor/EditorTool.java +++ b/core/src/io/anuke/mindustry/editor/EditorTool.java @@ -50,7 +50,7 @@ public enum EditorTool{ IntArray stack = new IntArray(); Block dest; - boolean isfloor; + boolean isFloor; MapEditor data; public void touched(MapEditor editor, int x, int y){ @@ -64,14 +64,14 @@ public enum EditorTool{ } data = editor; - isfloor = editor.drawBlock instanceof Floor; + isFloor = editor.drawBlock instanceof Floor; Block floor = tile.floor(); Block block = tile.block(); boolean synth = editor.drawBlock.synthetic(); Block draw = editor.drawBlock; - dest = draw instanceof OverlayFloor ? tile.overlay() : isfloor ? floor : block; + dest = draw instanceof OverlayFloor ? tile.overlay() : isFloor ? floor : block; if(dest == draw || block instanceof BlockPart || block.isMultiblock()){ return; @@ -85,7 +85,7 @@ public enum EditorTool{ IntPositionConsumer writer = (px, py) -> { Tile write = editor.tile(px, py); - if(isfloor){ + if(isFloor){ if(alt && !(draw instanceof OverlayFloor)){ Block ore = write.overlay(); write.setFloor((Floor)draw); @@ -167,7 +167,7 @@ public enum EditorTool{ boolean eq(int px, int py){ Tile tile = data.tile(px, py); - return (data.drawBlock instanceof OverlayFloor ? tile.overlay() : isfloor ? tile.floor() : tile.block()) == dest && !(data.drawBlock instanceof OverlayFloor && tile.floor().isLiquid); + return (data.drawBlock instanceof OverlayFloor ? tile.overlay() : isFloor ? tile.floor() : tile.block()) == dest && !(data.drawBlock instanceof OverlayFloor && tile.floor().isLiquid); } }, spray{ diff --git a/core/src/io/anuke/mindustry/editor/MapEditor.java b/core/src/io/anuke/mindustry/editor/MapEditor.java index 73cbae12a1..13824d0d8a 100644 --- a/core/src/io/anuke/mindustry/editor/MapEditor.java +++ b/core/src/io/anuke/mindustry/editor/MapEditor.java @@ -240,13 +240,13 @@ public class MapEditor{ public void undo(){ if(stack.canUndo()){ - stack.undo(this); + stack.undo(); } } public void redo(){ if(stack.canRedo()){ - stack.redo(this); + stack.redo(); } } @@ -267,7 +267,7 @@ public class MapEditor{ public void addTileOp(long data){ if(loading) return; - if(currentOp == null) currentOp = new DrawOperation(); + if(currentOp == null) currentOp = new DrawOperation(this); currentOp.addOperation(data); renderer.updatePoint(TileOp.x(data), TileOp.y(data)); diff --git a/core/src/io/anuke/mindustry/editor/MapEditorDialog.java b/core/src/io/anuke/mindustry/editor/MapEditorDialog.java index 00cec9c417..2bd3d9bd27 100644 --- a/core/src/io/anuke/mindustry/editor/MapEditorDialog.java +++ b/core/src/io/anuke/mindustry/editor/MapEditorDialog.java @@ -21,9 +21,9 @@ import io.anuke.mindustry.Vars; import io.anuke.mindustry.core.GameState.State; import io.anuke.mindustry.core.Platform; import io.anuke.mindustry.game.*; -import io.anuke.mindustry.io.JsonIO; -import io.anuke.mindustry.io.MapIO; +import io.anuke.mindustry.io.*; import io.anuke.mindustry.maps.Map; +import io.anuke.mindustry.ui.dialogs.FileChooser; import io.anuke.mindustry.ui.dialogs.FloatingDialog; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Block.Icon; @@ -93,14 +93,16 @@ public class MapEditorDialog extends Dialog implements Disposable{ "$editor.importmap", "$editor.importmap.description", "icon-load-map", (Runnable)loadDialog::show, "$editor.importfile", "$editor.importfile.description", "icon-file", (Runnable)() -> Platform.instance.showFileChooser("$editor.loadmap", "Map Files", file -> ui.loadAnd(() -> { - try{ - //TODO what if it's an image? users should be warned for their stupidity - editor.beginEdit(MapIO.createMap(file, true)); - }catch(Exception e){ - ui.showError(Core.bundle.format("editor.errorload", Strings.parseException(e, false))); - Log.err(e); - } - }), true, mapExtension), + world.maps.tryCatchMapError(() -> { + if(MapIO.isImage(file)){ + ui.showInfo("$editor.errorimage"); + }else if(file.extension().equalsIgnoreCase(oldMapExtension)){ + editor.beginEdit(world.maps.makeLegacyMap(file)); + }else{ + editor.beginEdit(MapIO.createMap(file, true)); + } + }); + }), true, FileChooser.anyMapFiles), "$editor.importimage", "$editor.importimage.description", "icon-file-image", (Runnable)() -> Platform.instance.showFileChooser("$loadimage", "Image Files", file -> @@ -110,10 +112,10 @@ public class MapEditorDialog extends Dialog implements Disposable{ editor.beginEdit(pixmap); pixmap.dispose(); }catch(Exception e){ - ui.showError(Core.bundle.format("editor.errorload", Strings.parseException(e, false))); + ui.showError(Core.bundle.format("editor.errorload", Strings.parseException(e, true))); Log.err(e); } - }), true, "png")) + }), true, FileChooser.pngFiles)) ); t.addImageTextButton("$editor.export", "icon-save-map", isize, () -> @@ -127,11 +129,11 @@ public class MapEditorDialog extends Dialog implements Disposable{ } MapIO.writeMap(result, editor.createMap(result)); }catch(Exception e){ - ui.showError(Core.bundle.format("editor.errorsave", Strings.parseException(e, false))); + ui.showError(Core.bundle.format("editor.errorsave", Strings.parseException(e, true))); Log.err(e); } }); - }, false, mapExtension)); + }, false, FileChooser.mapFiles)); }); menu.cont.row(); @@ -153,12 +155,11 @@ public class MapEditorDialog extends Dialog implements Disposable{ } }); - loadDialog = new MapLoadDialog(map -> - ui.loadAnd(() -> { + loadDialog = new MapLoadDialog(map -> ui.loadAnd(() -> { try{ editor.beginEdit(map); }catch(Exception e){ - ui.showError(Core.bundle.format("editor.errorload", Strings.parseException(e, false))); + ui.showError(Core.bundle.format("editor.errorload", Strings.parseException(e, true))); Log.err(e); } })); @@ -188,13 +189,14 @@ public class MapEditorDialog extends Dialog implements Disposable{ }); shown(() -> { - //clear units, rules and other unnecessary stuff - logic.reset(); + saved = true; if(!Core.settings.getBool("landscape")) Platform.instance.beginForceLandscape(); editor.clearOp(); Core.scene.setScrollFocus(view); if(!shownWithMap){ + //clear units, rules and other unnecessary stuff + logic.reset(); state.rules = new Rules(); editor.beginEdit(200, 200); } @@ -231,7 +233,7 @@ public class MapEditorDialog extends Dialog implements Disposable{ hide(); //only reset the player; logic.reset() will clear entities, which we do not want player.reset(); - state.rules = Gamemode.editor.apply(new Rules()); + state.rules = Gamemode.editor.apply(lastSavedRules.copy()); world.setMap(new Map(StringMap.of( "name", "Editor Playtesting", "width", editor.width(), @@ -256,6 +258,7 @@ public class MapEditorDialog extends Dialog implements Disposable{ private void save(){ String name = editor.getTags().get("name", "").trim(); editor.getTags().put("rules", JsonIO.write(state.rules)); + player.dead = true; if(name.isEmpty()){ infoDialog.show(); @@ -335,7 +338,7 @@ public class MapEditorDialog extends Dialog implements Disposable{ show(); }catch(Exception e){ Log.err(e); - ui.showError(Core.bundle.format("editor.errorload", Strings.parseException(e, false))); + ui.showError(Core.bundle.format("editor.errorload", Strings.parseException(e, true))); } }); } diff --git a/core/src/io/anuke/mindustry/editor/MapGenerateDialog.java b/core/src/io/anuke/mindustry/editor/MapGenerateDialog.java index 02d5453b22..4a26bff475 100644 --- a/core/src/io/anuke/mindustry/editor/MapGenerateDialog.java +++ b/core/src/io/anuke/mindustry/editor/MapGenerateDialog.java @@ -27,21 +27,22 @@ import static io.anuke.mindustry.Vars.*; @SuppressWarnings("unchecked") public class MapGenerateDialog extends FloatingDialog{ + private final Supplier[] filterTypes = new Supplier[]{NoiseFilter::new, ScatterFilter::new, TerrainFilter::new, DistortFilter::new, RiverNoiseFilter::new, OreFilter::new, MedianFilter::new}; private final MapEditor editor; + private Pixmap pixmap; private Texture texture; private GenerateInput input = new GenerateInput(); private Array filters = new Array<>(); private int scaling = mobile ? 3 : 1; - private Supplier[] filterTypes = new Supplier[]{NoiseFilter::new, ScatterFilter::new, TerrainFilter::new, DistortFilter::new, RiverNoiseFilter::new, OreFilter::new}; private Table filterTable; private AsyncExecutor executor = new AsyncExecutor(1); private AsyncResult result; private boolean generating; - private DummyTile returnTile = new DummyTile(); + private GenTile returnTile = new GenTile(); - private DummyTile[][] buffer1, buffer2; + private GenTile[][] buffer1, buffer2; public MapGenerateDialog(MapEditor editor){ super("$editor.generate"); @@ -98,12 +99,12 @@ public class MapGenerateDialog extends FloatingDialog{ rebuildFilters(); } - DummyTile[][] create(){ - DummyTile[][] out = new DummyTile[editor.width() / scaling][editor.height() / scaling]; + GenTile[][] create(){ + GenTile[][] out = new GenTile[editor.width() / scaling][editor.height() / scaling]; for(int x = 0; x < out.length; x++){ for(int y = 0; y < out[0].length; y++){ - out[x][y] = new DummyTile(); + out[x][y] = new GenTile(); } } return out; @@ -187,7 +188,7 @@ public class MapGenerateDialog extends FloatingDialog{ selection.show(); } - DummyTile dset(Tile tile){ + GenTile dset(Tile tile){ returnTile.set(tile); return returnTile; } @@ -208,11 +209,11 @@ public class MapGenerateDialog extends FloatingDialog{ } //writeback buffer - DummyTile[][] writeTiles = new DummyTile[editor.width()][editor.height()]; + GenTile[][] writeTiles = new GenTile[editor.width()][editor.height()]; for(int x = 0; x < editor.width(); x++){ for(int y = 0; y < editor.height(); y++){ - writeTiles[x][y] = new DummyTile(); + writeTiles[x][y] = new GenTile(); } } @@ -233,7 +234,7 @@ public class MapGenerateDialog extends FloatingDialog{ for(int x = 0; x < editor.width(); x++){ for(int y = 0; y < editor.height(); y++){ Tile tile = editor.tile(x, y); - DummyTile write = writeTiles[x][y]; + GenTile write = writeTiles[x][y]; tile.rotation(write.rotation); tile.setFloor((Floor)content.block(write.floor)); @@ -278,7 +279,7 @@ public class MapGenerateDialog extends FloatingDialog{ for(int px = 0; px < pixmap.getWidth(); px++){ for(int py = 0; py < pixmap.getHeight(); py++){ int x = px * scaling, y = py * scaling; - DummyTile tile = buffer1[px][py]; + GenTile tile = buffer1[px][py]; input.begin(editor, x, y, content.block(tile.floor), content.block(tile.block), content.block(tile.ore)); filter.apply(input); buffer2[px][py].set(input.floor, input.block, input.ore, Team.all[tile.team], tile.rotation); @@ -299,7 +300,7 @@ public class MapGenerateDialog extends FloatingDialog{ Tile tile = editor.tile(px * scaling, py * scaling); color = MapIO.colorFor(tile.floor(), tile.block(), tile.overlay(), Team.none); }else{ - DummyTile tile = buffer1[px][py]; + GenTile tile = buffer1[px][py]; color = MapIO.colorFor(content.block(tile.floor), content.block(tile.block), content.block(tile.ore), Team.none); } pixmap.drawPixel(px, pixmap.getHeight() - 1 - py, color); @@ -321,7 +322,7 @@ public class MapGenerateDialog extends FloatingDialog{ }); } - public static class DummyTile{ + public static class GenTile{ public byte team, rotation; public short block, floor, ore; @@ -333,7 +334,7 @@ public class MapGenerateDialog extends FloatingDialog{ this.rotation = (byte)rotation; } - void set(DummyTile other){ + void set(GenTile other){ this.floor = other.floor; this.block = other.block; this.ore = other.ore; diff --git a/core/src/io/anuke/mindustry/editor/MapInfoDialog.java b/core/src/io/anuke/mindustry/editor/MapInfoDialog.java index efd049d11f..7f9fca20e6 100644 --- a/core/src/io/anuke/mindustry/editor/MapInfoDialog.java +++ b/core/src/io/anuke/mindustry/editor/MapInfoDialog.java @@ -12,13 +12,13 @@ import io.anuke.mindustry.ui.dialogs.FloatingDialog; public class MapInfoDialog extends FloatingDialog{ private final MapEditor editor; - private final WaveInfoDialog waveinfo; - private final CustomRulesDialog ruleinfo = new CustomRulesDialog(); + private final WaveInfoDialog waveInfo; + private final CustomRulesDialog ruleInfo = new CustomRulesDialog(); public MapInfoDialog(MapEditor editor){ super("$editor.mapinfo"); this.editor = editor; - this.waveinfo = new WaveInfoDialog(editor); + this.waveInfo = new WaveInfoDialog(editor); addCloseButton(); @@ -58,11 +58,11 @@ public class MapInfoDialog extends FloatingDialog{ cont.row(); cont.add("$editor.rules").padRight(8).left(); - cont.addButton("$edit", () -> ruleinfo.show(Vars.state.rules, () -> Vars.state.rules = new Rules())).left().width(200f);; + cont.addButton("$edit", () -> ruleInfo.show(Vars.state.rules, () -> Vars.state.rules = new Rules())).left().width(200f);; cont.row(); cont.add("$editor.waves").padRight(8).left(); - cont.addButton("$edit", waveinfo::show).left().width(200f); + cont.addButton("$edit", waveInfo::show).left().width(200f); name.change(); description.change(); diff --git a/core/src/io/anuke/mindustry/editor/MapRenderer.java b/core/src/io/anuke/mindustry/editor/MapRenderer.java index decc0c18d3..3bca816d61 100644 --- a/core/src/io/anuke/mindustry/editor/MapRenderer.java +++ b/core/src/io/anuke/mindustry/editor/MapRenderer.java @@ -19,7 +19,7 @@ import io.anuke.mindustry.world.blocks.BlockPart; import static io.anuke.mindustry.Vars.tilesize; public class MapRenderer implements Disposable{ - private static final int chunksize = 64; + private static final int chunkSize = 64; private IndexedRenderer[][] chunks; private IntSet updates = new IntSet(); private IntSet delayedUpdates = new IntSet(); @@ -41,11 +41,11 @@ public class MapRenderer implements Disposable{ } } - chunks = new IndexedRenderer[(int)Math.ceil((float)width / chunksize)][(int)Math.ceil((float)height / chunksize)]; + chunks = new IndexedRenderer[(int)Math.ceil((float)width / chunkSize)][(int)Math.ceil((float)height / chunkSize)]; for(int x = 0; x < chunks.length; x++){ for(int y = 0; y < chunks[0].length; y++){ - chunks[x][y] = new IndexedRenderer(chunksize * chunksize * 2); + chunks[x][y] = new IndexedRenderer(chunkSize * chunkSize * 2); } } this.width = width; @@ -97,7 +97,7 @@ public class MapRenderer implements Disposable{ } private void render(int wx, int wy){ - int x = wx / chunksize, y = wy / chunksize; + int x = wx / chunkSize, y = wy / chunkSize; IndexedRenderer mesh = chunks[x][y]; Tile tile = editor.tiles()[wx][wy]; @@ -107,8 +107,8 @@ public class MapRenderer implements Disposable{ TextureRegion region; - int idxWall = (wx % chunksize) + (wy % chunksize) * chunksize; - int idxDecal = (wx % chunksize) + (wy % chunksize) * chunksize + chunksize * chunksize; + int idxWall = (wx % chunkSize) + (wy % chunkSize) * chunkSize; + int idxDecal = (wx % chunkSize) + (wy % chunkSize) * chunkSize + chunkSize * chunkSize; if(wall != Blocks.air && (wall.synthetic() || wall instanceof BlockPart)){ region = !Core.atlas.isFound(wall.editorIcon()) ? Core.atlas.find("clear-editor") : wall.editorIcon(); @@ -145,8 +145,8 @@ public class MapRenderer implements Disposable{ } mesh.draw(idxDecal, region, - wx * tilesize + offsetX, wy * tilesize + offsetY, - region.getWidth() * Draw.scl, region.getHeight() * Draw.scl); + wx * tilesize + offsetX, wy * tilesize + offsetY, + region.getWidth() * Draw.scl, region.getHeight() * Draw.scl); mesh.setColor(Color.WHITE); } diff --git a/core/src/io/anuke/mindustry/editor/OperationStack.java b/core/src/io/anuke/mindustry/editor/OperationStack.java index aa53bb3afa..7927cbb026 100755 --- a/core/src/io/anuke/mindustry/editor/OperationStack.java +++ b/core/src/io/anuke/mindustry/editor/OperationStack.java @@ -34,18 +34,18 @@ public class OperationStack{ return !(index > -1 || stack.size + index < 0); } - public void undo(MapEditor editor){ + public void undo(){ if(!canUndo()) return; - stack.get(stack.size - 1 + index).undo(editor); + stack.get(stack.size - 1 + index).undo(); index--; } - public void redo(MapEditor editor){ + public void redo(){ if(!canRedo()) return; index++; - stack.get(stack.size - 1 + index).redo(editor); + stack.get(stack.size - 1 + index).redo(); } } diff --git a/core/src/io/anuke/mindustry/editor/generation/DistortFilter.java b/core/src/io/anuke/mindustry/editor/generation/DistortFilter.java index f2233be7bf..3fab21d3a5 100644 --- a/core/src/io/anuke/mindustry/editor/generation/DistortFilter.java +++ b/core/src/io/anuke/mindustry/editor/generation/DistortFilter.java @@ -1,6 +1,6 @@ package io.anuke.mindustry.editor.generation; -import io.anuke.mindustry.editor.MapGenerateDialog.DummyTile; +import io.anuke.mindustry.editor.MapGenerateDialog.GenTile; import io.anuke.mindustry.editor.generation.FilterOption.SliderOption; import io.anuke.mindustry.world.blocks.Floor; @@ -11,14 +11,14 @@ public class DistortFilter extends GenerateFilter{ { options( - new SliderOption("scale", () -> scl, f -> scl = f, 1f, 400f), - new SliderOption("mag", () -> mag, f -> mag = f, 0.5f, 100f) + new SliderOption("scale", () -> scl, f -> scl = f, 1f, 400f), + new SliderOption("mag", () -> mag, f -> mag = f, 0.5f, 100f) ); } @Override public void apply(){ - DummyTile tile = in.tile(in.x / (in.scaling) + (noise(in.x, in.y, scl, mag) - mag / 2f) / in.scaling, in.y / (in.scaling) + (noise(in.x, in.y + o, scl, mag) - mag / 2f) / in.scaling); + GenTile tile = in.tile(in.x / (in.scaling) + (noise(in.x, in.y, scl, mag) - mag / 2f) / in.scaling, in.y / (in.scaling) + (noise(in.x, in.y + o, scl, mag) - mag / 2f) / in.scaling); in.floor = content.block(tile.floor); if(!content.block(tile.block).synthetic() && !in.block.synthetic()) in.block = content.block(tile.block); diff --git a/core/src/io/anuke/mindustry/editor/generation/GenerateFilter.java b/core/src/io/anuke/mindustry/editor/generation/GenerateFilter.java index bd8551b23a..9105a7b4e8 100644 --- a/core/src/io/anuke/mindustry/editor/generation/GenerateFilter.java +++ b/core/src/io/anuke/mindustry/editor/generation/GenerateFilter.java @@ -7,14 +7,14 @@ import io.anuke.arc.util.noise.RidgedPerlin; import io.anuke.arc.util.noise.Simplex; import io.anuke.mindustry.content.Blocks; import io.anuke.mindustry.editor.MapEditor; -import io.anuke.mindustry.editor.MapGenerateDialog.DummyTile; +import io.anuke.mindustry.editor.MapGenerateDialog.GenTile; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.blocks.Floor; public abstract class GenerateFilter{ - protected float o = (float)(Math.random() * 10000000.0); - protected long seed; - protected GenerateInput in; + protected transient float o = (float)(Math.random() * 10000000.0); + protected transient long seed; + protected transient GenerateInput in; public FilterOption[] options; @@ -88,12 +88,12 @@ public abstract class GenerateFilter{ pnoise.setSeed((int)(filter.seed + 1)); } - DummyTile tile(float x, float y){ + GenTile tile(float x, float y){ return buffer.get(Mathf.clamp((int)x, 0, width - 1), Mathf.clamp((int)y, 0, height - 1)); } public interface TileProvider{ - DummyTile get(int x, int y); + GenTile get(int x, int y); } } } diff --git a/core/src/io/anuke/mindustry/editor/generation/MedianFilter.java b/core/src/io/anuke/mindustry/editor/generation/MedianFilter.java new file mode 100644 index 0000000000..548b861f8c --- /dev/null +++ b/core/src/io/anuke/mindustry/editor/generation/MedianFilter.java @@ -0,0 +1,46 @@ +package io.anuke.mindustry.editor.generation; + +import io.anuke.arc.collection.IntArray; +import io.anuke.arc.math.Mathf; +import io.anuke.mindustry.editor.MapGenerateDialog.GenTile; +import io.anuke.mindustry.editor.generation.FilterOption.SliderOption; + +import static io.anuke.mindustry.Vars.content; + +public class MedianFilter extends GenerateFilter{ + float radius = 2; + float percentile = 0.5f; + IntArray blocks = new IntArray(), floors = new IntArray(); + + { + options( + new SliderOption("radius", () -> radius, f -> radius = f, 1f, 12f), + new SliderOption("percentile", () -> percentile, f -> percentile = f, 0f, 1f) + ); + } + + @Override + public void apply(){ + int rad = (int)radius; + blocks.clear(); + floors.clear(); + for(int x = -rad; x <= rad; x++){ + for(int y = -rad; y <= rad; y++){ + if(Mathf.dst2(x, y) > rad*rad) continue; + + GenTile tile = in.tile(in.x + x, in.y + y); + blocks.add(tile.block); + floors.add(tile.floor); + } + } + + floors.sort(); + blocks.sort(); + + int index = Math.min((int)(floors.size * percentile), floors.size - 1); + int floor = floors.get(index), block = blocks.get(index); + + in.floor = content.block(floor); + if(!content.block(block).synthetic() && !in.block.synthetic()) in.block = content.block(block); + } +} diff --git a/core/src/io/anuke/mindustry/entities/bullet/LiquidBulletType.java b/core/src/io/anuke/mindustry/entities/bullet/LiquidBulletType.java index e3fe41f828..cc2b97ca46 100644 --- a/core/src/io/anuke/mindustry/entities/bullet/LiquidBulletType.java +++ b/core/src/io/anuke/mindustry/entities/bullet/LiquidBulletType.java @@ -28,6 +28,7 @@ public class LiquidBulletType extends BulletType{ statusDuration = 90f; despawnEffect = Fx.none; hitEffect = Fx.hitLiquid; + smokeEffect = Fx.none; shootEffect = Fx.none; drag = 0.009f; knockback = 0.55f; diff --git a/core/src/io/anuke/mindustry/entities/effect/Decal.java b/core/src/io/anuke/mindustry/entities/effect/Decal.java index 72d251d9be..79b2c3276d 100644 --- a/core/src/io/anuke/mindustry/entities/effect/Decal.java +++ b/core/src/io/anuke/mindustry/entities/effect/Decal.java @@ -1,12 +1,12 @@ package io.anuke.mindustry.entities.effect; -import io.anuke.arc.graphics.Color; import io.anuke.arc.graphics.g2d.Draw; import io.anuke.arc.math.Mathf; import io.anuke.mindustry.entities.EntityGroup; import io.anuke.mindustry.entities.impl.TimedEntity; import io.anuke.mindustry.entities.traits.BelowLiquidTrait; import io.anuke.mindustry.entities.traits.DrawTrait; +import io.anuke.mindustry.graphics.Pal; import static io.anuke.mindustry.Vars.groundEffectGroup; @@ -14,7 +14,6 @@ import static io.anuke.mindustry.Vars.groundEffectGroup; * Class for creating block rubble on the ground. */ public abstract class Decal extends TimedEntity implements BelowLiquidTrait, DrawTrait{ - private static final Color color = Color.valueOf("3a3635"); @Override public float lifetime(){ @@ -23,7 +22,7 @@ public abstract class Decal extends TimedEntity implements BelowLiquidTrait, Dra @Override public void draw(){ - Draw.color(color.r, color.g, color.b, 1f - Mathf.curve(fin(), 0.98f)); + Draw.color(Pal.rubble.r, Pal.rubble.g, Pal.rubble.b, 1f - Mathf.curve(fin(), 0.98f)); drawDecal(); Draw.color(); } diff --git a/core/src/io/anuke/mindustry/entities/effect/Fire.java b/core/src/io/anuke/mindustry/entities/effect/Fire.java index fa1b74b106..a7eb817a15 100644 --- a/core/src/io/anuke/mindustry/entities/effect/Fire.java +++ b/core/src/io/anuke/mindustry/entities/effect/Fire.java @@ -1,13 +1,11 @@ package io.anuke.mindustry.entities.effect; +import io.anuke.annotations.Annotations.Remote; import io.anuke.arc.collection.IntMap; import io.anuke.arc.math.Mathf; import io.anuke.arc.math.geom.Geometry; import io.anuke.arc.math.geom.Point2; -import io.anuke.arc.util.Structs; -import io.anuke.arc.util.Time; -import io.anuke.arc.util.pooling.Pool.Poolable; -import io.anuke.arc.util.pooling.Pools; +import io.anuke.arc.util.*; import io.anuke.mindustry.content.*; import io.anuke.mindustry.entities.*; import io.anuke.mindustry.entities.impl.TimedEntity; @@ -22,7 +20,7 @@ import java.io.*; import static io.anuke.mindustry.Vars.*; -public class Fire extends TimedEntity implements SaveTrait, SyncTrait, Poolable{ +public class Fire extends TimedEntity implements SaveTrait, SyncTrait{ private static final IntMap map = new IntMap<>(); private static final float baseLifetime = 1000f, spreadChance = 0.05f, fireballChance = 0.07f; @@ -36,6 +34,11 @@ public class Fire extends TimedEntity implements SaveTrait, SyncTrait, Poolable{ public Fire(){ } + @Remote + public static void onRemoveFire(int fid){ + fireGroup.removeByID(fid); + } + /** 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. @@ -43,7 +46,7 @@ public class Fire extends TimedEntity implements SaveTrait, SyncTrait, Poolable{ Fire fire = map.get(tile.pos()); if(fire == null){ - fire = Pools.obtain(Fire.class, Fire::new); + fire = new Fire(); fire.tile = tile; fire.lifetime = baseLifetime; fire.set(tile.worldx(), tile.worldy()); @@ -94,12 +97,12 @@ public class Fire extends TimedEntity implements SaveTrait, SyncTrait, Poolable{ time = Mathf.clamp(time + Time.delta(), 0, lifetime()); - if(time >= lifetime() || tile == null){ - remove(); + if(Net.client()){ return; } - if(Net.client()){ + if(time >= lifetime() || tile == null){ + remove(); return; } @@ -176,6 +179,7 @@ public class Fire extends TimedEntity implements SaveTrait, SyncTrait, Poolable{ x = Pos.x(pos) * tilesize; y = Pos.y(pos) * tilesize; + tile = world.tile(pos); } @Override @@ -184,6 +188,7 @@ public class Fire extends TimedEntity implements SaveTrait, SyncTrait, Poolable{ tile = null; baseFlammability = -1; puddleFlammability = 0f; + incrementID(); } @Override @@ -198,9 +203,9 @@ public class Fire extends TimedEntity implements SaveTrait, SyncTrait, Poolable{ @Override public void removed(){ if(tile != null){ + Call.onRemoveFire(id); map.remove(tile.pos()); } - reset(); } @Override diff --git a/core/src/io/anuke/mindustry/entities/impl/BaseEntity.java b/core/src/io/anuke/mindustry/entities/impl/BaseEntity.java index 4fb4462c03..e2da48908e 100755 --- a/core/src/io/anuke/mindustry/entities/impl/BaseEntity.java +++ b/core/src/io/anuke/mindustry/entities/impl/BaseEntity.java @@ -58,4 +58,9 @@ public abstract class BaseEntity implements Entity{ public String toString(){ return getClass() + " " + id; } + + /** Increments this entity's ID. Used for pooled entities.*/ + public void incrementID(){ + id = lastid++; + } } diff --git a/core/src/io/anuke/mindustry/entities/traits/BuilderTrait.java b/core/src/io/anuke/mindustry/entities/traits/BuilderTrait.java index 7787b834c1..d4d0e47560 100644 --- a/core/src/io/anuke/mindustry/entities/traits/BuilderTrait.java +++ b/core/src/io/anuke/mindustry/entities/traits/BuilderTrait.java @@ -165,7 +165,7 @@ public interface BuilderTrait extends Entity, TeamTrait{ output.writeInt(Pos.get(request.x, request.y)); output.writeFloat(request.progress); if(!request.breaking){ - output.writeByte(request.block.id); + output.writeShort(request.block.id); output.writeByte(request.rotation); } }else{ @@ -189,7 +189,7 @@ public interface BuilderTrait extends Entity, TeamTrait{ if(type == 1){ //remove request = new BuildRequest(Pos.x(position), Pos.y(position)); }else{ //place - byte block = input.readByte(); + short block = input.readShort(); byte rotation = input.readByte(); request = new BuildRequest(Pos.x(position), Pos.y(position), rotation, content.block(block)); } diff --git a/core/src/io/anuke/mindustry/entities/type/BaseUnit.java b/core/src/io/anuke/mindustry/entities/type/BaseUnit.java index f54ef58bcd..334b21db3c 100644 --- a/core/src/io/anuke/mindustry/entities/type/BaseUnit.java +++ b/core/src/io/anuke/mindustry/entities/type/BaseUnit.java @@ -23,6 +23,7 @@ import io.anuke.mindustry.gen.Call; import io.anuke.mindustry.net.Net; import io.anuke.mindustry.type.*; import io.anuke.mindustry.world.Tile; +import io.anuke.mindustry.world.blocks.units.UnitFactory.UnitFactoryEntity; import io.anuke.mindustry.world.meta.BlockFlag; import java.io.*; @@ -264,7 +265,7 @@ public abstract class BaseUnit extends Unit implements ShooterTrait{ avoidOthers(); - if(spawner != noSpawner && (world.tile(spawner) == null || world.tile(spawner).entity == null)){ + if(spawner != noSpawner && (world.tile(spawner) == null || !(world.tile(spawner).entity instanceof UnitFactoryEntity))){ kill(); } diff --git a/core/src/io/anuke/mindustry/entities/type/Player.java b/core/src/io/anuke/mindustry/entities/type/Player.java index c68727da15..41f98ef021 100644 --- a/core/src/io/anuke/mindustry/entities/type/Player.java +++ b/core/src/io/anuke/mindustry/entities/type/Player.java @@ -559,7 +559,7 @@ public class Player extends Unit implements BuilderTrait, ShooterTrait{ updateShooting(); //server simulates player shooting } return; - }else{ + }else if(world.isZone()){ //unlock mech when used data.unlockContent(mech); } @@ -665,10 +665,10 @@ public class Player extends Unit implements BuilderTrait, ShooterTrait{ attractDst = 0f; if(tapping){ - velocity.setAngle(Mathf.slerpDelta(velocity.angle(), angleTo(moveTarget), 0.1f)); + velocity.setAngle(angleTo(moveTarget)); } - if(dst(moveTarget) < 2f){ + if(dst(moveTarget) <= 2f * Time.delta()){ if(tapping){ Tile tile = ((TileEntity)moveTarget).tile; tile.block().tapped(tile, this); @@ -680,7 +680,7 @@ public class Player extends Unit implements BuilderTrait, ShooterTrait{ moveTarget = null; } - movement.set(targetX - x, targetY - y).limit(isBoosting && !mech.flying ? mech.boostSpeed : mech.speed); + movement.set((targetX - x) / Time.delta(), (targetY - y) / Time.delta()).limit(isBoosting && !mech.flying ? mech.boostSpeed : mech.speed); movement.setAngle(Mathf.slerp(movement.angle(), velocity.angle(), 0.05f)); if(dst(targetX, targetY) < attractDst){ @@ -795,7 +795,7 @@ public class Player extends Unit implements BuilderTrait, ShooterTrait{ } public boolean isShooting(){ - return isShooting && (!isBoosting || mech.flying); + return isShooting && (!isBoosting || mech.flying) && mining == null; } public void updateRespawning(){ diff --git a/core/src/io/anuke/mindustry/entities/type/Unit.java b/core/src/io/anuke/mindustry/entities/type/Unit.java index 6579af6c97..1eb1b48269 100644 --- a/core/src/io/anuke/mindustry/entities/type/Unit.java +++ b/core/src/io/anuke/mindustry/entities/type/Unit.java @@ -9,8 +9,7 @@ import io.anuke.arc.graphics.g2d.TextureRegion; import io.anuke.arc.math.Mathf; import io.anuke.arc.math.geom.Geometry; import io.anuke.arc.math.geom.Vector2; -import io.anuke.arc.util.Time; -import io.anuke.arc.util.Tmp; +import io.anuke.arc.util.*; import io.anuke.mindustry.content.Blocks; import io.anuke.mindustry.content.Fx; import io.anuke.mindustry.entities.*; @@ -256,6 +255,16 @@ public abstract class Unit extends DestructibleEntity implements SaveTrait, Targ kill(); } + //apply knockback based on spawns + if(getTeam() != waveTeam){ + float relativeSize = state.rules.dropZoneRadius + getSize()/2f + 1f; + for(Tile spawn : world.spawner.getGroundSpawns()){ + if(withinDst(spawn.worldx(), spawn.worldy(), relativeSize)){ + velocity.add(Tmp.v1.set(this).sub(spawn.worldx(), spawn.worldy()).setLength(0.1f + 1f - dst(spawn) / relativeSize).scl(0.45f * Time.delta())); + } + } + } + if(isFlying()){ drownTime = 0f; move(velocity.x * Time.delta(), velocity.y * Time.delta()); diff --git a/core/src/io/anuke/mindustry/game/EventType.java b/core/src/io/anuke/mindustry/game/EventType.java index f55079b0c0..872f74a1c1 100644 --- a/core/src/io/anuke/mindustry/game/EventType.java +++ b/core/src/io/anuke/mindustry/game/EventType.java @@ -1,6 +1,5 @@ package io.anuke.mindustry.game; -import io.anuke.arc.Events.Event; import io.anuke.mindustry.core.GameState.State; import io.anuke.mindustry.entities.traits.BuilderTrait; import io.anuke.mindustry.entities.type.Unit; @@ -10,7 +9,7 @@ import io.anuke.mindustry.world.Tile; public class EventType{ /** Called when a zone's requirements are met. */ - public static class ZoneRequireCompleteEvent implements Event{ + public static class ZoneRequireCompleteEvent{ public final Zone zone, required; public ZoneRequireCompleteEvent(Zone zone, Zone required){ @@ -20,7 +19,7 @@ public class EventType{ } /** Called when a zone's requirements are met. */ - public static class ZoneConfigureCompleteEvent implements Event{ + public static class ZoneConfigureCompleteEvent{ public final Zone zone; public ZoneConfigureCompleteEvent(Zone zone){ @@ -29,23 +28,23 @@ public class EventType{ } /** Called when the game is first loaded. */ - public static class GameLoadEvent implements Event{ + public static class GameLoadEvent{ } - public static class PlayEvent implements Event{ + public static class PlayEvent{ } - public static class ResetEvent implements Event{ + public static class ResetEvent{ } - public static class WaveEvent implements Event{ + public static class WaveEvent{ } - public static class GameOverEvent implements Event{ + public static class GameOverEvent{ public final Team winner; public GameOverEvent(Team winner){ @@ -54,12 +53,12 @@ public class EventType{ } /** Called when a game begins and the world is loaded. */ - public static class WorldLoadEvent implements Event{ + public static class WorldLoadEvent{ } /** Called from the logic thread. Do not access graphics here! */ - public static class TileChangeEvent implements Event{ + public static class TileChangeEvent{ public final Tile tile; public TileChangeEvent(Tile tile){ @@ -67,7 +66,7 @@ public class EventType{ } } - public static class StateChangeEvent implements Event{ + public static class StateChangeEvent{ public final State from, to; public StateChangeEvent(State from, State to){ @@ -76,7 +75,7 @@ public class EventType{ } } - public static class UnlockEvent implements Event{ + public static class UnlockEvent{ public final UnlockableContent content; public UnlockEvent(UnlockableContent content){ @@ -88,7 +87,7 @@ public class EventType{ * Called when block building begins by placing down the BuildBlock. * The tile's block will nearly always be a BuildBlock. */ - public static class BlockBuildBeginEvent implements Event{ + public static class BlockBuildBeginEvent{ public final Tile tile; public final Team team; public final boolean breaking; @@ -100,7 +99,7 @@ public class EventType{ } } - public static class BlockBuildEndEvent implements Event{ + public static class BlockBuildEndEvent{ public final Tile tile; public final Team team; public final boolean breaking; @@ -116,7 +115,7 @@ public class EventType{ * Called when a player or drone begins building something. * This does not necessarily happen when a new BuildBlock is created. */ - public static class BuildSelectEvent implements Event{ + public static class BuildSelectEvent{ public final Tile tile; public final Team team; public final BuilderTrait builder; @@ -130,7 +129,7 @@ public class EventType{ } } - public static class BlockDestroyEvent implements Event{ + public static class BlockDestroyEvent{ public final Tile tile; public BlockDestroyEvent(Tile tile){ @@ -138,7 +137,7 @@ public class EventType{ } } - public static class UnitDestroyEvent implements Event{ + public static class UnitDestroyEvent{ public final Unit unit; public UnitDestroyEvent(Unit unit){ @@ -146,7 +145,7 @@ public class EventType{ } } - public static class ResizeEvent implements Event{ + public static class ResizeEvent{ } } diff --git a/core/src/io/anuke/mindustry/game/Gamemode.java b/core/src/io/anuke/mindustry/game/Gamemode.java index 41a77c1949..6118b273ef 100644 --- a/core/src/io/anuke/mindustry/game/Gamemode.java +++ b/core/src/io/anuke/mindustry/game/Gamemode.java @@ -28,10 +28,10 @@ public enum Gamemode{ rules.respawnTime = 60 * 10; rules.buildCostMultiplier = 0.5f; rules.buildSpeedMultiplier = 2f; - rules.playerDamageMultiplier = 0.45f; - rules.playerHealthMultiplier = 0.8f; + rules.playerDamageMultiplier = 0.33f; + rules.playerHealthMultiplier = 0.5f; rules.unitBuildSpeedMultiplier = 3f; - rules.unitHealthMultiplier = 2f; + rules.unitHealthMultiplier = 3f; rules.attackMode = true; }), editor(true, rules -> { diff --git a/core/src/io/anuke/mindustry/game/Teams.java b/core/src/io/anuke/mindustry/game/Teams.java index 1dc52906f1..bf328255ca 100644 --- a/core/src/io/anuke/mindustry/game/Teams.java +++ b/core/src/io/anuke/mindustry/game/Teams.java @@ -28,7 +28,7 @@ public class Teams{ /** Returns whether a team is active, e.g. whether it has any cores remaining. */ public boolean isActive(Team team){ //the enemy wave team is always active - return (Vars.state.rules.waves && team == Vars.waveTeam) || get(team).cores.size > 0; + return team == Vars.waveTeam || get(team).cores.size > 0; } /** Returns a set of all teams that are enemies of this team. */ diff --git a/core/src/io/anuke/mindustry/graphics/Pal.java b/core/src/io/anuke/mindustry/graphics/Pal.java index e13ed16723..aa4ca6f7e7 100644 --- a/core/src/io/anuke/mindustry/graphics/Pal.java +++ b/core/src/io/anuke/mindustry/graphics/Pal.java @@ -35,6 +35,7 @@ public class Pal{ darkishGray = new Color(0.3f, 0.3f, 0.3f, 1f), darkerGray = new Color(0.2f, 0.2f, 0.2f, 1f), ammo = Color.valueOf("ff8947"), + rubble = Color.valueOf("1c1817"), boostTo = Color.valueOf("ffad4d"), boostFrom = Color.valueOf("ff7f57"), diff --git a/core/src/io/anuke/mindustry/io/LegacyMapIO.java b/core/src/io/anuke/mindustry/io/LegacyMapIO.java index 0773534617..2c65b1f2e7 100644 --- a/core/src/io/anuke/mindustry/io/LegacyMapIO.java +++ b/core/src/io/anuke/mindustry/io/LegacyMapIO.java @@ -40,6 +40,8 @@ public class LegacyMapIO{ for(int x = 0; x < map.width; x++){ for(int y = 0; y < map.height; y++){ tiles[x][y] = new CachedTile(); + tiles[x][y].x = (short)x; + tiles[x][y].y = (short)y; } } state.rules.spawns = groups; @@ -53,6 +55,9 @@ public class LegacyMapIO{ //meta is uncompressed int version = stream.readInt(); + if(version != 1){ + throw new IOException("Outdated legacy map format"); + } int build = stream.readInt(); short width = stream.readShort(), height = stream.readShort(); byte tagAmount = stream.readByte(); diff --git a/core/src/io/anuke/mindustry/io/SaveVersion.java b/core/src/io/anuke/mindustry/io/SaveVersion.java index f46853dcf5..bce501d60c 100644 --- a/core/src/io/anuke/mindustry/io/SaveVersion.java +++ b/core/src/io/anuke/mindustry/io/SaveVersion.java @@ -71,6 +71,7 @@ public abstract class SaveVersion extends SaveFileReader{ state.wavetime = map.getFloat("wavetime", state.rules.waveSpacing); state.stats = JsonIO.read(Stats.class, map.get("stats", "{}")); state.rules = JsonIO.read(Rules.class, map.get("rules", "{}")); + if(state.rules.spawns.isEmpty()) state.rules.spawns = DefaultWaves.get(); Map worldmap = world.maps.byName(map.get("mapname", "\\\\\\")); world.setMap(worldmap == null ? new Map(StringMap.of( "name", map.get("mapname", "Unknown"), @@ -170,10 +171,14 @@ public abstract class SaveVersion extends SaveFileReader{ tile.setBlock(block); if(tile.entity != null){ - readChunk(stream, true, in -> { - byte version = in.readByte(); - tile.entity.read(in, version); - }); + try{ + readChunk(stream, true, in -> { + byte version = in.readByte(); + tile.entity.read(in, version); + }); + }catch(Exception e){ + throw new IOException("Failed to read tile entity of block: " + block, e); + } }else{ int consecutives = stream.readUnsignedByte(); diff --git a/core/src/io/anuke/mindustry/maps/Map.java b/core/src/io/anuke/mindustry/maps/Map.java index 2833ddb782..07ed0efb1d 100644 --- a/core/src/io/anuke/mindustry/maps/Map.java +++ b/core/src/io/anuke/mindustry/maps/Map.java @@ -5,6 +5,7 @@ import io.anuke.arc.collection.StringMap; import io.anuke.arc.files.FileHandle; import io.anuke.arc.graphics.Texture; import io.anuke.mindustry.Vars; +import io.anuke.mindustry.game.DefaultWaves; import io.anuke.mindustry.game.Rules; import io.anuke.mindustry.io.JsonIO; @@ -57,7 +58,9 @@ public class Map implements Comparable{ /** This creates a new instance.*/ public Rules rules(){ - return JsonIO.read(Rules.class, tags.get("rules", "{}")); + Rules result = JsonIO.read(Rules.class, tags.get("rules", "{}")); + if(result.spawns.isEmpty()) result.spawns = DefaultWaves.get(); + return result; } /** Whether this map has a core of the enemy 'wave' team. Default: true. diff --git a/core/src/io/anuke/mindustry/maps/Maps.java b/core/src/io/anuke/mindustry/maps/Maps.java index ba37fe1ad5..fab359c7f5 100644 --- a/core/src/io/anuke/mindustry/maps/Maps.java +++ b/core/src/io/anuke/mindustry/maps/Maps.java @@ -3,12 +3,13 @@ package io.anuke.mindustry.maps; import io.anuke.arc.Core; import io.anuke.arc.collection.*; import io.anuke.arc.files.FileHandle; +import io.anuke.arc.function.ExceptionRunnable; import io.anuke.arc.graphics.Texture; -import io.anuke.arc.util.Disposable; -import io.anuke.arc.util.Log; +import io.anuke.arc.util.*; import io.anuke.arc.util.serialization.Json; import io.anuke.mindustry.game.SpawnGroup; -import io.anuke.mindustry.io.*; +import io.anuke.mindustry.io.LegacyMapIO; +import io.anuke.mindustry.io.MapIO; import java.io.IOException; import java.io.StringWriter; @@ -17,7 +18,7 @@ import static io.anuke.mindustry.Vars.*; public class Maps implements Disposable{ /** List of all built-in maps. Filenames only. */ - private static final String[] defaultMapNames = {"fortress"}; + private static final String[] defaultMapNames = {"fortress", "shoreline", "labyrinth", "islands"}; /** All maps stored in an ordered array. */ private Array maps = new Array<>(); /** Serializer for meta. */ @@ -116,6 +117,14 @@ public class Maps implements Disposable{ } } + /** Creates a legacy map by converting it to a non-legacy map and pasting it in a temp directory. + * Should be followed up by {@link #importMap(FileHandle)} .*/ + public Map makeLegacyMap(FileHandle file) throws IOException{ + FileHandle dst = tmpDirectory.child("conversion_map." + mapExtension); + LegacyMapIO.convertMap(file, dst); + return MapIO.createMap(dst, true); + } + /** Import a map, then save it. This updates all values and stored data necessary. */ public void importMap(FileHandle file) throws IOException{ FileHandle dest = findFile(); @@ -124,6 +133,24 @@ public class Maps implements Disposable{ loadMap(dest, true); } + /** Attempts to run the following code; + * catches any errors and attempts to display them in a readable way.*/ + public void tryCatchMapError(ExceptionRunnable run){ + try{ + run.run(); + }catch(Exception e){ + Log.err(e); + + if("Outdated legacy map format".equals(e.getMessage())){ + ui.showError("$editor.errorlegacy"); + }else if(e.getMessage() != null && e.getMessage().contains("Incorrect header!")){ + ui.showError("$editor.errorheader"); + }else{ + ui.showError(Core.bundle.format("editor.errorload", Strings.parseException(e, true))); + } + } + } + /** Removes a map completely. */ public void removeMap(Map map){ if(map.texture != null){ diff --git a/core/src/io/anuke/mindustry/net/Net.java b/core/src/io/anuke/mindustry/net/Net.java index 7b6b770e65..58fa2716aa 100644 --- a/core/src/io/anuke/mindustry/net/Net.java +++ b/core/src/io/anuke/mindustry/net/Net.java @@ -6,8 +6,7 @@ import io.anuke.arc.collection.*; import io.anuke.arc.function.BiConsumer; import io.anuke.arc.function.Consumer; import io.anuke.arc.net.HttpRequestBuilder; -import io.anuke.arc.util.Log; -import io.anuke.arc.util.Time; +import io.anuke.arc.util.*; import io.anuke.arc.util.pooling.Pools; import io.anuke.mindustry.core.Platform; import io.anuke.mindustry.gen.Call; @@ -67,7 +66,7 @@ public class Net{ }else if(error.equals("alreadyconnected")){ error = Core.bundle.get("error.alreadyconnected"); }else if(!error.isEmpty()){ - error = Core.bundle.get("error.any") + "\n" + t.getClass().getSimpleName() + "\n" + (t.getMessage() == null ? "" : t.getMessage()); + error = Core.bundle.get("error.any") + "\n" + Strings.parseException(e, true); } ui.showText("", Core.bundle.format("connectfail", error)); diff --git a/core/src/io/anuke/mindustry/ui/ItemDisplay.java b/core/src/io/anuke/mindustry/ui/ItemDisplay.java index 1e7dd9fbbf..728d99a710 100644 --- a/core/src/io/anuke/mindustry/ui/ItemDisplay.java +++ b/core/src/io/anuke/mindustry/ui/ItemDisplay.java @@ -6,6 +6,8 @@ import io.anuke.mindustry.type.ItemStack; /** An item image with text. */ public class ItemDisplay extends Table{ + public final Item item; + public final int amount; public ItemDisplay(Item item){ this(item, 0); @@ -14,5 +16,8 @@ public class ItemDisplay extends Table{ public ItemDisplay(Item item, int amount){ add(new ItemImage(new ItemStack(item, amount))).size(8 * 4); add(item.localizedName()).padLeft(4); + + this.item = item; + this.amount = amount; } } diff --git a/core/src/io/anuke/mindustry/ui/LiquidDisplay.java b/core/src/io/anuke/mindustry/ui/LiquidDisplay.java index efa010f207..86f5323102 100644 --- a/core/src/io/anuke/mindustry/ui/LiquidDisplay.java +++ b/core/src/io/anuke/mindustry/ui/LiquidDisplay.java @@ -10,8 +10,15 @@ import io.anuke.mindustry.world.meta.StatUnit; /** An ItemDisplay, but for liquids. */ public class LiquidDisplay extends Table{ + public final Liquid liquid; + public final float amount; + public final boolean perSecond; public LiquidDisplay(Liquid liquid, float amount, boolean perSecond){ + this.liquid = liquid; + this.amount = amount; + this.perSecond = perSecond; + add(new Stack(){{ add(new Image(liquid.getContentIcon())); diff --git a/core/src/io/anuke/mindustry/ui/dialogs/CustomGameDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/CustomGameDialog.java index 02444c8b06..0aabd0272b 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/CustomGameDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/CustomGameDialog.java @@ -12,7 +12,8 @@ import io.anuke.mindustry.ui.BorderImage; import static io.anuke.mindustry.Vars.world; -public class CustomGameDialog extends FloatingDialog{ +public class +CustomGameDialog extends FloatingDialog{ private MapPlayDialog dialog = new MapPlayDialog(); public CustomGameDialog(){ diff --git a/core/src/io/anuke/mindustry/ui/dialogs/FileChooser.java b/core/src/io/anuke/mindustry/ui/dialogs/FileChooser.java index ca35333bef..89317ab552 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/FileChooser.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/FileChooser.java @@ -12,6 +12,7 @@ import io.anuke.arc.scene.ui.layout.Table; import io.anuke.arc.scene.ui.layout.Unit; import io.anuke.arc.util.*; import io.anuke.arc.util.pooling.Pools; +import io.anuke.mindustry.Vars; import io.anuke.mindustry.core.Platform; import java.util.Arrays; @@ -29,12 +30,26 @@ public class FileChooser extends FloatingDialog{ private Predicate filter; private Consumer selectListener; private boolean open; + private int lastWidth = Core.graphics.getWidth(), lastHeight = Core.graphics.getHeight(); + + public static final Predicate pngFiles = str -> str.equals("png"); + public static final Predicate anyMapFiles = str -> str.equals(Vars.oldMapExtension) || str.equals(Vars.mapExtension); + public static final Predicate mapFiles = str -> str.equals(Vars.mapExtension); + public static final Predicate saveFiles = str -> str.equals(Vars.saveExtension); public FileChooser(String title, Predicate filter, boolean open, Consumer result){ super(title); this.open = open; this.filter = filter; this.selectListener = result; + + update(() -> { + if(Core.graphics.getWidth() != lastWidth || Core.graphics.getHeight() != lastHeight){ + updateFiles(false); + lastHeight = Core.graphics.getHeight(); + lastWidth = Core.graphics.getWidth(); + } + }); } private void setupWidgets(){ @@ -268,14 +283,6 @@ public class FileChooser extends FloatingDialog{ return this; } - public void fileSelected(Consumer listener){ - this.selectListener = listener; - } - - public interface FileHandleFilter{ - boolean accept(FileHandle file); - } - public class FileHistory{ private Array history = new Array<>(); private int index; diff --git a/core/src/io/anuke/mindustry/ui/dialogs/HostDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/HostDialog.java index a8f40dc583..dacb8fe5e4 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/HostDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/HostDialog.java @@ -56,7 +56,7 @@ public class HostDialog extends FloatingDialog{ Net.host(Vars.port); player.isAdmin = true; }catch(IOException e){ - ui.showError(Core.bundle.format("server.error", Strings.parseException(e, false))); + ui.showError(Core.bundle.format("server.error", Strings.parseException(e, true))); } ui.loadfrag.hide(); hide(); diff --git a/core/src/io/anuke/mindustry/ui/dialogs/LoadDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/LoadDialog.java index efdaf0adbd..880dfb3eb5 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/LoadDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/LoadDialog.java @@ -90,16 +90,16 @@ public class LoadDialog extends FloatingDialog{ slot.exportFile(file); setup(); }catch(IOException e){ - ui.showError(Core.bundle.format("save.export.fail", Strings.parseException(e, false))); + ui.showError(Core.bundle.format("save.export.fail", Strings.parseException(e, true))); } - }, false, saveExtension); + }, false, FileChooser.saveFiles); }else{ try{ FileHandle file = Core.files.local("save-" + slot.getName() + "." + Vars.saveExtension); slot.exportFile(file); Platform.instance.shareFile(file); }catch(Exception e){ - ui.showError(Core.bundle.format("save.export.fail", Strings.parseException(e, false))); + ui.showError(Core.bundle.format("save.export.fail", Strings.parseException(e, true))); } } }).size(14 * 3).right(); @@ -155,12 +155,12 @@ public class LoadDialog extends FloatingDialog{ setup(); }catch(IOException e){ e.printStackTrace(); - ui.showError(Core.bundle.format("save.import.fail", Strings.parseException(e, false))); + ui.showError(Core.bundle.format("save.import.fail", Strings.parseException(e, true))); } }else{ ui.showError("$save.import.invalid"); } - }, true, saveExtension); + }, true, FileChooser.saveFiles); }).fillX().margin(10f).minWidth(300f).height(70f).pad(4f).padRight(-4); } diff --git a/core/src/io/anuke/mindustry/ui/dialogs/MapPlayDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/MapPlayDialog.java index ab22b52549..2c24c2c6f0 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/MapPlayDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/MapPlayDialog.java @@ -16,7 +16,7 @@ public class MapPlayDialog extends FloatingDialog{ Difficulty difficulty = Difficulty.normal; CustomRulesDialog dialog = new CustomRulesDialog(); Rules rules; - Gamemode selectedGamemode; + Gamemode selectedGamemode = Gamemode.survival; public MapPlayDialog(){ super(""); @@ -28,6 +28,8 @@ public class MapPlayDialog extends FloatingDialog{ cont.clearChildren(); rules = map.rules(); + rules = selectedGamemode.apply(map.rules()); + Table selmode = new Table(); selmode.add("$level.mode").colspan(4); selmode.row(); @@ -43,8 +45,8 @@ public class MapPlayDialog extends FloatingDialog{ } modes.addButton(mode.toString(), "toggle", () -> { - selectedGamemode = selectedGamemode == mode ? null : mode; - rules = selectedGamemode == null ? map.rules() : mode.apply(map.rules()); + selectedGamemode = mode; + rules = mode.apply(map.rules()); }).update(b -> b.setChecked(selectedGamemode == mode)).size(140f, 54f); if(i++ % 2 == 1) modes.row(); } diff --git a/core/src/io/anuke/mindustry/ui/dialogs/MapsDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/MapsDialog.java index 1205146ccd..aefa5e64c9 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/MapsDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/MapsDialog.java @@ -5,7 +5,7 @@ import io.anuke.arc.graphics.Color; import io.anuke.arc.scene.event.Touchable; import io.anuke.arc.scene.ui.*; import io.anuke.arc.scene.ui.layout.Table; -import io.anuke.arc.util.*; +import io.anuke.arc.util.Scaling; import io.anuke.mindustry.Vars; import io.anuke.mindustry.core.Platform; import io.anuke.mindustry.io.MapIO; @@ -23,8 +23,19 @@ public class MapsDialog extends FloatingDialog{ addCloseButton(); buttons.addImageTextButton("$editor.importmap", "icon-add", 14 * 2, () -> { Platform.instance.showFileChooser("$editor.importmap", "Map File", file -> { - try{ - Map map = MapIO.createMap(file, true); + world.maps.tryCatchMapError(() -> { + if(MapIO.isImage(file)){ + ui.showError("$editor.errorimage"); + return; + } + + Map map; + if(file.extension().equalsIgnoreCase(mapExtension)){ + map = MapIO.createMap(file, true); + }else{ + map = world.maps.makeLegacyMap(file); + } + String name = map.tags.get("name"); if(name == null){ ui.showError("$editor.errorname"); @@ -34,27 +45,21 @@ public class MapsDialog extends FloatingDialog{ Map conflict = world.maps.all().find(m -> m.name().equals(name)); if(conflict != null && !conflict.custom){ - ui.showError(Core.bundle.format("editor.import.exists", name)); + ui.showInfo(Core.bundle.format("editor.import.exists", name)); }else if(conflict != null){ ui.showConfirm("$confirm", "$editor.overwrite.confirm", () -> { - try{ + world.maps.tryCatchMapError(() -> { world.maps.importMap(file); setup(); - }catch(Exception e){ - ui.showError(Core.bundle.format("editor.errorload", Strings.parseException(e, false))); - Log.err(e); - } + }); }); }else{ - world.maps.importMap(file); + world.maps.importMap(map.file); setup(); } - }catch(Exception e){ - ui.showError(Core.bundle.format("editor.errorload", Strings.parseException(e, false))); - Log.err(e); - } - }, true, mapExtension); + }); + }, true, FileChooser.anyMapFiles); }).size(230f, 64f); shown(this::setup); diff --git a/core/src/io/anuke/mindustry/ui/dialogs/SettingsMenuDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/SettingsMenuDialog.java index cb870470fe..ac19e1a480 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/SettingsMenuDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/SettingsMenuDialog.java @@ -178,7 +178,6 @@ public class SettingsMenuDialog extends SettingsDialog{ graphics.sliderPref("fpscap", 125, 5, 125, 5, s -> (s > 120 ? Core.bundle.get("setting.fpscap.none") : Core.bundle.format("setting.fpscap.text", s))); graphics.sliderPref("chatopacity", 100, 0, 100, 5, s -> s + "%"); - if(!mobile){ graphics.checkPref("vsync", true, b -> Core.graphics.setVSync(b)); graphics.checkPref("fullscreen", false, b -> { @@ -221,6 +220,22 @@ public class SettingsMenuDialog extends SettingsDialog{ graphics.checkPref("animatedshields", !mobile); graphics.checkPref("lasers", true); graphics.checkPref("pixelate", false); + + //TODO is this necessary? + /* + graphics.checkPref("linear", false, b -> { + for(Texture tex : Core.atlas.getTextures()){ + TextureFilter filter = b ? TextureFilter.Linear : TextureFilter.Nearest; + tex.setFilter(filter, filter); + } + }); + + if(Core.settings.getBool("linear")){ + for(Texture tex : Core.atlas.getTextures()){ + TextureFilter filter = TextureFilter.Linear; + tex.setFilter(filter, filter); + } + }*/ } private void back(){ diff --git a/core/src/io/anuke/mindustry/world/Block.java b/core/src/io/anuke/mindustry/world/Block.java index 3c77052b8c..9a051da8e3 100644 --- a/core/src/io/anuke/mindustry/world/Block.java +++ b/core/src/io/anuke/mindustry/world/Block.java @@ -73,8 +73,6 @@ public class Block extends BlockStorage{ public Layer layer2 = null; /** whether this block can be replaced in all cases */ public boolean alwaysReplace = false; - /** whether this block has instant transfer checking. used for calculations to prevent infinite loops. */ - public boolean instantTransfer = false; /** The block group. Unless {@link #canReplace} is overriden, blocks in the same group can replace each other. */ public BlockGroup group = BlockGroup.none; /** List of block flags. Used for AI indexing. */ diff --git a/core/src/io/anuke/mindustry/world/CachedTile.java b/core/src/io/anuke/mindustry/world/CachedTile.java index 05f3b16144..dde20ba3be 100644 --- a/core/src/io/anuke/mindustry/world/CachedTile.java +++ b/core/src/io/anuke/mindustry/world/CachedTile.java @@ -1,6 +1,5 @@ package io.anuke.mindustry.world; -import io.anuke.arc.collection.IntMap; import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.game.Team; import io.anuke.mindustry.world.modules.*; @@ -10,7 +9,6 @@ import io.anuke.mindustry.world.modules.*; * Prevents garbage when loading previews. */ public class CachedTile extends Tile{ - private static IntMap entities = new IntMap<>(); public CachedTile(){ super(0, 0); @@ -23,7 +21,8 @@ public class CachedTile extends Tile{ @Override protected void preChanged(){ - super.setTeam(Team.none); + //this basically overrides the old tile code and doesn't remove from proximity + team = 0; } @Override @@ -33,19 +32,14 @@ public class CachedTile extends Tile{ Block block = block(); if(block.hasEntity()){ - //cache all entity types so only one is ever created per block type. do not add it. - if(!entities.containsKey(block.id)){ - TileEntity n = block.newEntity(); - n.cons = new ConsumeModule(entity); - n.tile = this; - if(block.hasItems) n.items = new ItemModule(); - if(block.hasLiquids) n.liquids = new LiquidModule(); - if(block.hasPower) n.power = new PowerModule(); - entities.put(block.id, n); - } - - entity = entities.get(block.id); - + TileEntity n = block.newEntity(); + n.cons = new ConsumeModule(entity); + n.tile = this; + n.block = block; + if(block.hasItems) n.items = new ItemModule(); + if(block.hasLiquids) n.liquids = new LiquidModule(); + if(block.hasPower) n.power = new PowerModule(); + entity = n; } } } diff --git a/core/src/io/anuke/mindustry/world/DirectionalItemBuffer.java b/core/src/io/anuke/mindustry/world/DirectionalItemBuffer.java new file mode 100644 index 0000000000..2f5d7538b6 --- /dev/null +++ b/core/src/io/anuke/mindustry/world/DirectionalItemBuffer.java @@ -0,0 +1,77 @@ +package io.anuke.mindustry.world; + +import io.anuke.annotations.Annotations.Struct; +import io.anuke.arc.util.Time; +import io.anuke.mindustry.gen.BufferItem; +import io.anuke.mindustry.type.Item; + +import java.io.*; + +import static io.anuke.mindustry.Vars.content; + +public class DirectionalItemBuffer{ + public final long[][] buffers; + public final int[] indexes; + private final float speed; + + public DirectionalItemBuffer(int capacity, float speed){ + this.buffers = new long[4][capacity]; + this.indexes = new int[5]; + this.speed = speed; + } + + public boolean accepts(int buffer){ + return indexes[buffer] < buffers[buffer].length; + } + + public void accept(int buffer, Item item){ + if(!accepts(buffer)) return; + buffers[buffer][indexes[buffer]++] = BufferItem.get((byte)item.id, Time.time()); + } + + public Item poll(int buffer){ + if(indexes[buffer] > 0){ + long l = buffers[buffer][0]; + float time = BufferItem.time(l); + + if(Time.time() >= time + speed || Time.time() < time){ + return content.item(BufferItem.item(l)); + } + } + return null; + } + + public void remove(int buffer){ + System.arraycopy(buffers[buffer], 1, buffers[buffer], 0, indexes[buffer] - 1); + indexes[buffer] --; + } + + public void write(DataOutput stream) throws IOException{ + for(int i = 0; i < 4; i++){ + stream.writeByte(indexes[i]); + stream.writeByte(buffers[i].length); + for(long l : buffers[i]){ + stream.writeLong(l); + } + } + } + + public void read(DataInput stream) throws IOException{ + for(int i = 0; i < 4; i++){ + indexes[i] = stream.readByte(); + byte length = stream.readByte(); + for(int j = 0; j < length; j++){ + long value = stream.readLong(); + if(j < buffers[i].length){ + buffers[i][j] = value; + } + } + } + } + + @Struct + class BufferItemStruct{ + byte item; + float time; + } +} diff --git a/core/src/io/anuke/mindustry/world/Tile.java b/core/src/io/anuke/mindustry/world/Tile.java index 1e458fc34e..cac7d27a7f 100644 --- a/core/src/io/anuke/mindustry/world/Tile.java +++ b/core/src/io/anuke/mindustry/world/Tile.java @@ -439,6 +439,6 @@ public class Tile implements Position, TargetTrait{ @Override public String toString(){ - return floor.name + ":" + block.name + ":" + content.block(overlay) + "[" + x + "," + y + "] " + "entity=" + (entity == null ? "null" : (entity.getClass())); + return floor.name + ":" + block.name + ":" + content.block(overlay) + "[" + x + "," + y + "] " + "entity=" + (entity == null ? "null" : (entity.getClass())) + ":" + getTeam(); } } \ No newline at end of file diff --git a/core/src/io/anuke/mindustry/world/blocks/Floor.java b/core/src/io/anuke/mindustry/world/blocks/Floor.java index 51d4a5aa32..dbd0218a4f 100644 --- a/core/src/io/anuke/mindustry/world/blocks/Floor.java +++ b/core/src/io/anuke/mindustry/world/blocks/Floor.java @@ -3,6 +3,7 @@ package io.anuke.mindustry.world.blocks; import io.anuke.arc.Core; import io.anuke.arc.collection.Array; import io.anuke.arc.collection.IntSet; +import io.anuke.arc.graphics.Color; import io.anuke.arc.graphics.g2d.Draw; import io.anuke.arc.graphics.g2d.TextureRegion; import io.anuke.arc.math.Mathf; @@ -56,6 +57,7 @@ public class Floor extends Block{ protected byte eq = 0; protected Array blenders = new Array<>(); protected IntSet blended = new IntSet(); + protected TextureRegion edgeRegion, edgierRegion; public Floor(String name){ super(name); @@ -82,6 +84,8 @@ public class Floor extends Block{ edges = Core.atlas.find(name + "-edge").split(size, size); } region = variantRegions[0]; + edgeRegion = Core.atlas.find("edge"); + edgierRegion = Core.atlas.find("edgier"); } @Override @@ -140,14 +144,32 @@ public class Floor extends Block{ Point2 point = Geometry.d8[i]; Tile other = tile.getNearby(point); if(other != null && other.floor() == block){ - TextureRegion region = edge((Floor)block, type(i), 2 - (point.x + 1), 2 - (point.y + 1)); + TextureRegion region = edge((Floor)block, 2 - (point.x + 1), 2 - (point.y + 1)); Draw.rect(region, tile.worldx(), tile.worldy()); + + if(!sameLayer && block.cacheLayer.ordinal() > cacheLayer.ordinal()){ + Draw.rect(block.variantRegions()[0], tile.worldx() + point.x*tilesize, tile.worldy() + point.y*tilesize); + } } } } } + //'new' style of edges with shadows instead of colors, not used currently + protected void drawEdgesFlat(Tile tile, boolean sameLayer){ + for(int i = 0; i < 4; i++){ + Tile other = tile.getNearby(i); + if(other != null && doEdge(other.floor(), sameLayer)){ + Color color = other.floor().color; + Draw.color(color.r, color.g, color.b, 1f); + Draw.rect(edgeRegion, tile.worldx(), tile.worldy(), i*90); + } + } + Draw.color(); + } + + protected TextureRegion[][] edges(){ return ((Floor)blendGroup).edges; } @@ -160,28 +182,12 @@ public class Floor extends Block{ return true; } - int type(int i){ - if(!eq(i - 1) && !eq(i + 1)){ - //case 0: touching - return 0; - }else if(eq(i - 1) && eq(i - 2) && eq(i + 1) && eq(i + 2)){ - //case 2: surrounded - return 2; - }else if(eq(i - 1) && eq(i + 1)){ - //case 1: flat - return 1; - }else{ - //case 0 is rounded, so it's the safest choice, should work for most possibilities - return 0; - } - } - boolean eq(int i){ return (eq & (1 << Mathf.mod(i, 8))) != 0; } - TextureRegion edge(Floor block, int type, int x, int y){ - return block.edges()[x + type * 3][2 - y]; + TextureRegion edge(Floor block, int x, int y){ + return block.edges()[x][2 - y]; } } \ No newline at end of file diff --git a/core/src/io/anuke/mindustry/world/blocks/defense/Door.java b/core/src/io/anuke/mindustry/world/blocks/defense/Door.java index 07454f6849..04da951cff 100644 --- a/core/src/io/anuke/mindustry/world/blocks/defense/Door.java +++ b/core/src/io/anuke/mindustry/world/blocks/defense/Door.java @@ -16,6 +16,8 @@ import io.anuke.mindustry.world.Tile; import java.io.*; +import static io.anuke.mindustry.Vars.world; + public class Door extends Wall{ protected final Rectangle rect = new Rectangle(); @@ -68,6 +70,7 @@ public class Door extends Wall{ } entity.open = !entity.open; + world.pathfinder.updateSolid(tile); if(!entity.open){ Effects.effect(closefx, tile.drawx(), tile.drawy()); }else{ 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 3760197ac8..f2d2786fc7 100644 --- a/core/src/io/anuke/mindustry/world/blocks/distribution/Junction.java +++ b/core/src/io/anuke/mindustry/world/blocks/distribution/Junction.java @@ -1,10 +1,10 @@ package io.anuke.mindustry.world.blocks.distribution; -import io.anuke.arc.util.*; +import io.anuke.arc.util.Time; import io.anuke.mindustry.entities.type.TileEntity; +import io.anuke.mindustry.gen.BufferItem; import io.anuke.mindustry.type.Item; -import io.anuke.mindustry.world.Block; -import io.anuke.mindustry.world.Tile; +import io.anuke.mindustry.world.*; import io.anuke.mindustry.world.meta.BlockGroup; import java.io.*; @@ -19,7 +19,6 @@ public class Junction extends Block{ super(name); update = true; solid = true; - instantTransfer = true; group = BlockGroup.transportation; } @@ -31,18 +30,17 @@ public class Junction extends Block{ @Override public void update(Tile tile){ JunctionEntity entity = tile.entity(); + DirectionalItemBuffer buffer = entity.buffer; for(int i = 0; i < 4; i++){ - Buffer buffer = entity.buffers[i]; - - if(buffer.index > 0){ - if(buffer.index > buffer.items.length) buffer.index = buffer.items.length; - long l = buffer.items[0]; - float time = Float.intBitsToFloat(Pack.leftInt(l)); + if(buffer.indexes[i] > 0){ + if(buffer.indexes[i] > capacity) buffer.indexes[i] = capacity; + long l = buffer.buffers[i][0]; + float time = BufferItem.time(l); if(Time.time() >= time + speed || Time.time() < time){ - Item item = content.item(Pack.rightInt(l)); + Item item = content.item(BufferItem.item(l)); Tile dest = tile.getNearby(i); //skip blocks that don't want the item, keep waiting until they do @@ -51,8 +49,8 @@ public class Junction extends Block{ } dest.block().handleItem(item, dest, tile); - System.arraycopy(buffer.items, 1, buffer.items, 0, buffer.index - 1); - buffer.index--; + System.arraycopy(buffer.buffers[i], 1, buffer.buffers[i], 0, buffer.indexes[i] - 1); + buffer.indexes[i] --; } } } @@ -61,9 +59,8 @@ public class Junction extends Block{ @Override public void handleItem(Item item, Tile tile, Tile source){ JunctionEntity entity = tile.entity(); - long value = Pack.longInt(Float.floatToIntBits(Time.time()), item.id); int relative = source.relativeTo(tile.x, tile.y); - entity.buffers[relative].add(value); + entity.buffer.accept(relative, item); } @Override @@ -71,7 +68,7 @@ public class Junction extends Block{ JunctionEntity entity = tile.entity(); int relative = source.relativeTo(tile.x, tile.y); - if(entity == null || relative == -1 || entity.buffers[relative].full()) + if(entity == null || relative == -1 || !entity.buffer.accepts(relative)) return false; Tile to = tile.getNearby(relative); return to != null && to.link().entity != null; @@ -83,55 +80,18 @@ public class Junction extends Block{ } class JunctionEntity extends TileEntity{ - Buffer[] buffers = {new Buffer(), new Buffer(), new Buffer(), new Buffer()}; + DirectionalItemBuffer buffer = new DirectionalItemBuffer(capacity, speed); @Override public void write(DataOutput stream) throws IOException{ super.write(stream); - for(Buffer b : buffers){ - b.write(stream); - } + buffer.write(stream); } @Override public void read(DataInput stream, byte revision) throws IOException{ super.read(stream, revision); - for(Buffer b : buffers){ - b.read(stream); - } - } - } - - class Buffer{ - long[] items = new long[capacity]; - int index; - - void add(long id){ - if(full()) return; - items[index++] = id; - } - - boolean full(){ - return index >= items.length - 1; - } - - void write(DataOutput stream) throws IOException{ - stream.writeByte((byte)index); - stream.writeByte((byte)items.length); - for(long l : items){ - stream.writeLong(l); - } - } - - void read(DataInput stream) throws IOException{ - index = stream.readByte(); - byte length = stream.readByte(); - for(int i = 0; i < length; i++){ - long l = stream.readLong(); - if(i < items.length){ - items[i] = l; - } - } + buffer.read(stream); } } } diff --git a/core/src/io/anuke/mindustry/world/blocks/distribution/MassDriver.java b/core/src/io/anuke/mindustry/world/blocks/distribution/MassDriver.java index ee83e508ae..f04e47cb4e 100644 --- a/core/src/io/anuke/mindustry/world/blocks/distribution/MassDriver.java +++ b/core/src/io/anuke/mindustry/world/blocks/distribution/MassDriver.java @@ -78,7 +78,7 @@ public class MassDriver extends Block{ //reload regardless of state if(entity.reload > 0f){ - entity.reload = Mathf.clamp(entity.reload - entity.delta() / reloadTime); + entity.reload = Mathf.clamp(entity.reload - entity.delta() / reloadTime * entity.power.satisfaction); } //cleanup waiting shooters that are not valid @@ -114,7 +114,7 @@ public class MassDriver extends Block{ } //align to shooter rotation - entity.rotation = Mathf.slerpDelta(entity.rotation, tile.angleTo(entity.currentShooter()), rotateSpeed); + entity.rotation = Mathf.slerpDelta(entity.rotation, tile.angleTo(entity.currentShooter()), rotateSpeed * entity.power.satisfaction); }else if(entity.state == DriverState.shooting){ //if there's nothing to shoot at OR someone wants to shoot at this thing, bail if(!hasLink || !entity.waitingShooters.isEmpty()){ @@ -133,7 +133,7 @@ public class MassDriver extends Block{ other.waitingShooters.add(tile); //align to target location - entity.rotation = Mathf.slerpDelta(entity.rotation, targetRotation, rotateSpeed); + entity.rotation = Mathf.slerpDelta(entity.rotation, targetRotation, rotateSpeed * entity.power.satisfaction); //fire when it's the first in the queue and angles are ready. if(other.currentShooter() == tile && @@ -214,7 +214,8 @@ public class MassDriver extends Block{ @Override public boolean acceptItem(Item item, Tile tile, Tile source){ - return tile.entity.items.total() < itemCapacity; + //mass drivers that ouput only cannot accept items + return tile.entity.items.total() < itemCapacity && linkValid(tile); } @Override diff --git a/core/src/io/anuke/mindustry/world/blocks/distribution/OverflowGate.java b/core/src/io/anuke/mindustry/world/blocks/distribution/OverflowGate.java index de9532a56c..5b7eed7a99 100644 --- a/core/src/io/anuke/mindustry/world/blocks/distribution/OverflowGate.java +++ b/core/src/io/anuke/mindustry/world/blocks/distribution/OverflowGate.java @@ -1,41 +1,56 @@ package io.anuke.mindustry.world.blocks.distribution; import io.anuke.arc.math.Mathf; -import io.anuke.arc.util.Time; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.type.Item; -import io.anuke.mindustry.world.Edges; -import io.anuke.mindustry.world.Tile; +import io.anuke.mindustry.world.*; +import io.anuke.mindustry.world.meta.BlockGroup; -public class OverflowGate extends Router{ +import java.io.*; + +public class OverflowGate extends Block{ + protected int bufferCapacity = 10; + protected float speed = 45f; public OverflowGate(String name){ super(name); hasItems = true; - speed = 1f; + solid = true; + update = true; + group = BlockGroup.transportation; } @Override public void update(Tile tile){ - SplitterEntity entity = tile.entity(); + OverflowGateEntity entity = tile.entity(); - if(entity.lastItem == null && entity.items.total() > 0){ - entity.items.clear(); - } - - if(entity.lastItem != null){ - entity.time += 1f / speed * Time.delta(); - Tile target = getTileTarget(tile, entity.lastItem, entity.lastInput, false); - - if(target != null && (entity.time >= 1f)){ - getTileTarget(tile, entity.lastItem, entity.lastInput, true); - target.block().handleItem(entity.lastItem, target, Edges.getFacingEdge(tile, target)); - entity.items.remove(entity.lastItem, 1); - entity.lastItem = null; + for(int i = 0; i < 4; i++){ + Item item = entity.buffer.poll(i); + if(item != null){ + Tile other = getTileTarget(tile, item, tile.getNearby(i), true); + if(other != null && other.block().acceptItem(item, other, tile)){ + other.block().handleItem(item, other, tile); + entity.buffer.remove(i); + } } } } @Override + public boolean acceptItem(Item item, Tile tile, Tile source){ + OverflowGateEntity entity = tile.entity(); + return entity.buffer.accepts(tile.relativeTo(source.x, source.y)); + } + + @Override + public void handleItem(Item item, Tile tile, Tile source){ + OverflowGateEntity entity = tile.entity(); + int buffer = tile.relativeTo(source.x, source.y); + if(entity.buffer.accepts(buffer)){ + entity.buffer.accept(buffer, item); + } + } + Tile getTileTarget(Tile tile, Item item, Tile src, boolean flip){ int from = tile.relativeTo(src.x, src.y); if(from == -1) return null; @@ -70,4 +85,32 @@ public class OverflowGate extends Router{ return to; } + + @Override + public TileEntity newEntity(){ + return new OverflowGateEntity(); + } + + public class OverflowGateEntity extends TileEntity{ + DirectionalItemBuffer buffer = new DirectionalItemBuffer(bufferCapacity, speed); + + @Override + public byte version(){ + return 1; + } + + @Override + public void write(DataOutput stream) throws IOException{ + super.write(stream); + buffer.write(stream); + } + + @Override + public void read(DataInput stream, byte revision) throws IOException{ + super.read(stream, revision); + if(revision == 1){ + buffer.read(stream); + } + } + } } diff --git a/core/src/io/anuke/mindustry/world/blocks/distribution/Router.java b/core/src/io/anuke/mindustry/world/blocks/distribution/Router.java index 21a7baf18c..1294e8a2b2 100644 --- a/core/src/io/anuke/mindustry/world/blocks/distribution/Router.java +++ b/core/src/io/anuke/mindustry/world/blocks/distribution/Router.java @@ -21,7 +21,7 @@ public class Router extends Block{ @Override public void update(Tile tile){ - SplitterEntity entity = tile.entity(); + RouterEntity entity = tile.entity(); if(entity.lastItem == null && entity.items.total() > 0){ entity.items.clear(); @@ -42,14 +42,14 @@ public class Router extends Block{ @Override public boolean acceptItem(Item item, Tile tile, Tile source){ - SplitterEntity entity = tile.entity(); + RouterEntity entity = tile.entity(); return tile.getTeam() == source.getTeam() && entity.lastItem == null && entity.items.total() == 0; } @Override public void handleItem(Item item, Tile tile, Tile source){ - SplitterEntity entity = tile.entity(); + RouterEntity entity = tile.entity(); entity.items.add(item, 1); entity.lastItem = item; entity.time = 0f; @@ -72,7 +72,7 @@ public class Router extends Block{ @Override public int removeStack(Tile tile, Item item, int amount){ - SplitterEntity entity = tile.entity(); + RouterEntity entity = tile.entity(); int result = super.removeStack(tile, item, amount); if(result != 0 && item == entity.lastItem){ entity.lastItem = null; @@ -82,10 +82,10 @@ public class Router extends Block{ @Override public TileEntity newEntity(){ - return new SplitterEntity(); + return new RouterEntity(); } - public class SplitterEntity extends TileEntity{ + public class RouterEntity extends TileEntity{ Item lastItem; Tile lastInput; float time; diff --git a/core/src/io/anuke/mindustry/world/blocks/distribution/Sorter.java b/core/src/io/anuke/mindustry/world/blocks/distribution/Sorter.java index ff5888dfbf..9440d428f3 100644 --- a/core/src/io/anuke/mindustry/world/blocks/distribution/Sorter.java +++ b/core/src/io/anuke/mindustry/world/blocks/distribution/Sorter.java @@ -1,7 +1,6 @@ package io.anuke.mindustry.world.blocks.distribution; -import io.anuke.annotations.Annotations.Loc; -import io.anuke.annotations.Annotations.Remote; +import io.anuke.annotations.Annotations.*; import io.anuke.arc.Core; import io.anuke.arc.graphics.g2d.Draw; import io.anuke.arc.math.Mathf; @@ -10,8 +9,7 @@ import io.anuke.mindustry.entities.type.Player; import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.gen.Call; import io.anuke.mindustry.type.Item; -import io.anuke.mindustry.world.Block; -import io.anuke.mindustry.world.Tile; +import io.anuke.mindustry.world.*; import io.anuke.mindustry.world.blocks.ItemSelection; import io.anuke.mindustry.world.meta.BlockGroup; @@ -22,11 +20,13 @@ import static io.anuke.mindustry.Vars.content; public class Sorter extends Block{ private static Item lastItem; + protected int bufferCapacity = 20; + protected float speed = 45f; + public Sorter(String name){ super(name); update = true; solid = true; - instantTransfer = true; group = BlockGroup.transportation; configurable = true; } @@ -57,24 +57,42 @@ public class Sorter extends Block{ if(entity.sortItem == null) return; Draw.color(entity.sortItem.color); - Draw.rect("blank", tile.worldx(), tile.worldy(), 4f, 4f); + Draw.rect("center", tile.worldx(), tile.worldy()); Draw.color(); } @Override - public boolean acceptItem(Item item, Tile tile, Tile source){ - Tile to = getTileTarget(item, tile, source, false); + public void update(Tile tile){ + SorterEntity entity = tile.entity(); - return to != null && to.block().acceptItem(item, to, tile); + for(int i = 0; i < 4; i++){ + Item item = entity.buffer.poll(i); + if(item != null){ + Tile other = getTileTarget(item, tile, tile.getNearby(i), true); + if(other != null && other.block().acceptItem(item, other, tile)){ + other.block().handleItem(item, other, tile); + entity.buffer.remove(i); + } + } + } + } + + @Override + public boolean acceptItem(Item item, Tile tile, Tile source){ + SorterEntity entity = tile.entity(); + return entity.buffer.accepts(tile.relativeTo(source.x, source.y)); } @Override public void handleItem(Item item, Tile tile, Tile source){ - Tile to = getTileTarget(item, tile, source, true); - - to.block().handleItem(item, to, tile); + SorterEntity entity = tile.entity(); + int buffer = tile.relativeTo(source.x, source.y); + if(entity.buffer.accepts(buffer)){ + entity.buffer.accept(buffer, item); + } } + @Nullable Tile getTileTarget(Item item, Tile dest, Tile source, boolean flip){ SorterEntity entity = dest.entity(); @@ -87,10 +105,8 @@ public class Sorter extends Block{ }else{ Tile a = dest.getNearby(Mathf.mod(dir - 1, 4)); Tile b = dest.getNearby(Mathf.mod(dir + 1, 4)); - boolean ac = a != null && !(a.block().instantTransfer && source.block().instantTransfer) && - a.block().acceptItem(item, a, dest); - boolean bc = b != null && !(b.block().instantTransfer && source.block().instantTransfer) && - b.block().acceptItem(item, b, dest); + boolean ac = a != null && a.block().acceptItem(item, a, dest); + boolean bc = b != null && b.block().acceptItem(item, b, dest); if(ac && !bc){ to = a; @@ -101,12 +117,10 @@ public class Sorter extends Block{ }else{ if(dest.rotation() == 0){ to = a; - if(flip) - dest.rotation((byte)1); + if(flip) dest.rotation((byte)1); }else{ to = b; - if(flip) - dest.rotation((byte)0); + if(flip) dest.rotation((byte)0); } } } @@ -128,19 +142,29 @@ public class Sorter extends Block{ return new SorterEntity(); } - public static class SorterEntity extends TileEntity{ - public Item sortItem; + public class SorterEntity extends TileEntity{ + DirectionalItemBuffer buffer = new DirectionalItemBuffer(bufferCapacity, speed); + Item sortItem; + + @Override + public byte version(){ + return 1; + } @Override public void write(DataOutput stream) throws IOException{ super.write(stream); stream.writeShort(sortItem == null ? -1 : sortItem.id); + buffer.write(stream); } @Override public void read(DataInput stream, byte revision) throws IOException{ super.read(stream, revision); sortItem = content.item(stream.readShort()); + if(revision == 1){ + buffer.read(stream); + } } } } diff --git a/core/src/io/anuke/mindustry/world/blocks/sandbox/ItemSource.java b/core/src/io/anuke/mindustry/world/blocks/sandbox/ItemSource.java index c9b4e55d12..3a6cc3cabe 100644 --- a/core/src/io/anuke/mindustry/world/blocks/sandbox/ItemSource.java +++ b/core/src/io/anuke/mindustry/world/blocks/sandbox/ItemSource.java @@ -1,16 +1,46 @@ package io.anuke.mindustry.world.blocks.sandbox; +import io.anuke.annotations.Annotations.Loc; +import io.anuke.annotations.Annotations.Remote; +import io.anuke.arc.Core; +import io.anuke.arc.graphics.g2d.Draw; +import io.anuke.arc.scene.ui.layout.Table; +import io.anuke.mindustry.entities.type.Player; +import io.anuke.mindustry.entities.type.TileEntity; +import io.anuke.mindustry.gen.Call; import io.anuke.mindustry.type.Item; +import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Tile; -import io.anuke.mindustry.world.blocks.distribution.Sorter; +import io.anuke.mindustry.world.blocks.ItemSelection; +import io.anuke.mindustry.world.meta.BlockGroup; -public class ItemSource extends Sorter{ +import java.io.*; + +import static io.anuke.mindustry.Vars.content; + +public class ItemSource extends Block{ + private static Item lastItem; public ItemSource(String name){ super(name); hasItems = true; update = true; solid = true; + group = BlockGroup.transportation; + configurable = true; + } + + @Remote(targets = Loc.both, called = Loc.both, forward = true) + public static void setItemSourceItem(Player player, Tile tile, Item item){ + ItemSourceEntity entity = tile.entity(); + if(entity != null){ + entity.outputItem = item; + } + } + + @Override + public void playerPlaced(Tile tile){ + Core.app.post(() -> Call.setItemSourceItem(null, tile, lastItem)); } @Override @@ -25,17 +55,59 @@ public class ItemSource extends Sorter{ } @Override - public void update(Tile tile){ - SorterEntity entity = tile.entity(); - if(entity.sortItem == null) return; + public void draw(Tile tile){ + super.draw(tile); - entity.items.set(entity.sortItem, 1); - tryDump(tile, entity.sortItem); - entity.items.set(entity.sortItem, 0); + ItemSourceEntity entity = tile.entity(); + if(entity.outputItem == null) return; + + Draw.color(entity.outputItem.color); + Draw.rect("center", tile.worldx(), tile.worldy()); + Draw.color(); + } + + @Override + public void update(Tile tile){ + ItemSourceEntity entity = tile.entity(); + if(entity.outputItem == null) return; + + entity.items.set(entity.outputItem, 1); + tryDump(tile, entity.outputItem); + entity.items.set(entity.outputItem, 0); + } + + @Override + public void buildTable(Tile tile, Table table){ + ItemSourceEntity entity = tile.entity(); + ItemSelection.buildItemTable(table, () -> entity.outputItem, item -> { + lastItem = item; + Call.setItemSourceItem(null, tile, item); + }); } @Override public boolean acceptItem(Item item, Tile tile, Tile source){ return false; } + + @Override + public TileEntity newEntity(){ + return new ItemSourceEntity(); + } + + public class ItemSourceEntity extends TileEntity{ + Item outputItem; + + @Override + public void write(DataOutput stream) throws IOException{ + super.write(stream); + stream.writeShort(outputItem == null ? -1 : outputItem.id); + } + + @Override + public void read(DataInput stream, byte revision) throws IOException{ + super.read(stream, revision); + outputItem = content.item(stream.readShort()); + } + } } diff --git a/core/src/io/anuke/mindustry/world/blocks/sandbox/LiquidSource.java b/core/src/io/anuke/mindustry/world/blocks/sandbox/LiquidSource.java index 52f506d35a..c84e772533 100644 --- a/core/src/io/anuke/mindustry/world/blocks/sandbox/LiquidSource.java +++ b/core/src/io/anuke/mindustry/world/blocks/sandbox/LiquidSource.java @@ -66,7 +66,7 @@ public class LiquidSource extends Block{ if(entity.source != null){ Draw.color(entity.source.color); - Draw.rect("blank", tile.worldx(), tile.worldy(), 4f, 4f); + Draw.rect("center", tile.worldx(), tile.worldy()); Draw.color(); } } diff --git a/core/src/io/anuke/mindustry/world/blocks/units/MechPad.java b/core/src/io/anuke/mindustry/world/blocks/units/MechPad.java index b298f11773..8f521349b6 100644 --- a/core/src/io/anuke/mindustry/world/blocks/units/MechPad.java +++ b/core/src/io/anuke/mindustry/world/blocks/units/MechPad.java @@ -81,8 +81,8 @@ public class MechPad extends Block{ protected static boolean checkValidTap(Tile tile, Player player){ MechFactoryEntity entity = tile.entity(); - return Math.abs(player.x - tile.drawx()) <= tile.block().size * tilesize / 2f && - Math.abs(player.y - tile.drawy()) <= tile.block().size * tilesize / 2f && entity.cons.valid() && entity.player == null; + return Math.abs(player.x - tile.drawx()) <= tile.block().size * tilesize && + Math.abs(player.y - tile.drawy()) <= tile.block().size * tilesize && entity.cons.valid() && entity.player == null; } @Override diff --git a/desktop/src/io/anuke/mindustry/desktop/DesktopPlatform.java b/desktop/src/io/anuke/mindustry/desktop/DesktopPlatform.java index 22b334b1eb..fa935f50a9 100644 --- a/desktop/src/io/anuke/mindustry/desktop/DesktopPlatform.java +++ b/desktop/src/io/anuke/mindustry/desktop/DesktopPlatform.java @@ -1,14 +1,11 @@ package io.anuke.mindustry.desktop; -import club.minnced.discord.rpc.DiscordEventHandlers; -import club.minnced.discord.rpc.DiscordRPC; -import club.minnced.discord.rpc.DiscordRichPresence; +import club.minnced.discord.rpc.*; import io.anuke.arc.collection.Array; import io.anuke.arc.files.FileHandle; import io.anuke.arc.function.Consumer; -import io.anuke.arc.util.Log; -import io.anuke.arc.util.OS; -import io.anuke.arc.util.Strings; +import io.anuke.arc.function.Predicate; +import io.anuke.arc.util.*; import io.anuke.arc.util.serialization.Base64Coder; import io.anuke.mindustry.core.GameState.State; import io.anuke.mindustry.core.Platform; @@ -69,8 +66,8 @@ public class DesktopPlatform extends Platform{ } @Override - public void showFileChooser(String text, String content, Consumer cons, boolean open, String filter){ - new FileChooser(text, file -> file.extension().equalsIgnoreCase(filter), open, cons).show(); + public void showFileChooser(String text, String content, Consumer cons, boolean open, Predicate filetype){ + new FileChooser(text, file -> filetype.test(file.extension().toLowerCase()), open, cons).show(); } @Override diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 5f1b1201a7..f4d7b2bf61 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.4-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/ios/src/io/anuke/mindustry/IOSLauncher.java b/ios/src/io/anuke/mindustry/IOSLauncher.java index 7f9e9f43e2..1c01b4307d 100644 --- a/ios/src/io/anuke/mindustry/IOSLauncher.java +++ b/ios/src/io/anuke/mindustry/IOSLauncher.java @@ -103,7 +103,7 @@ public class IOSLauncher extends IOSApplication.Delegate{ SaveSlot slot = control.saves.importSave(file); ui.load.runLoadSave(slot); }catch(IOException e){ - ui.showError(Core.bundle.format("save.import.fail", Strings.parseException(e, false))); + ui.showError(Core.bundle.format("save.import.fail", Strings.parseException(e, true))); } }else{ ui.showError("save.import.invalid");