From 1a8fdda421f8ff5e2f24792df235ec80792d17a1 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 17 Dec 2017 23:51:55 -0500 Subject: [PATCH] Add basic map editor, change map system --- .gitignore | 1 + TODO.md | 2 + android/AndroidManifest.xml | 4 +- .../io/anuke/mindustry/AndroidLauncher.java | 2 +- core/assets-raw/sprites/ui/icon-terrain.png | Bin 0 -> 202 bytes core/assets-raw/sprites/ui/slider.png | Bin 117 -> 135 bytes core/assets-raw/sprites/ui/text-editor.png | Bin 0 -> 322 bytes core/assets/maps/{islands.png => island.png} | Bin core/assets/maps/maps.json | 95 +++ core/assets/sprites/sprites.atlas | 558 +++++++++--------- core/assets/sprites/sprites.png | Bin 79702 -> 79186 bytes core/assets/ui/uiskin.json | 1 + core/src/io/anuke/mindustry/Vars.java | 9 +- core/src/io/anuke/mindustry/ai/Pathfind.java | 5 +- core/src/io/anuke/mindustry/core/Control.java | 13 +- .../src/io/anuke/mindustry/core/Tutorial.java | 3 +- core/src/io/anuke/mindustry/core/UI.java | 12 +- core/src/io/anuke/mindustry/core/World.java | 56 +- .../mindustry/entities/enemies/Enemy.java | 4 +- core/src/io/anuke/mindustry/io/SaveIO.java | 9 +- .../anuke/mindustry/mapeditor/MapEditor.java | 123 ++++ .../mindustry/mapeditor/MapEditorDialog.java | 142 +++++ .../anuke/mindustry/mapeditor/MapFilter.java | 214 +++++++ .../io/anuke/mindustry/mapeditor/MapView.java | 66 +++ .../io/anuke/mindustry/ui/LevelDialog.java | 14 +- .../src/io/anuke/mindustry/ui/LoadDialog.java | 4 +- core/src/io/anuke/mindustry/ui/MapEditor.java | 5 - .../mindustry/ui/fragments/MenuFragment.java | 27 +- .../io/anuke/mindustry/world/ColorMapper.java | 77 +++ .../io/anuke/mindustry/world/Generator.java | 80 +-- core/src/io/anuke/mindustry/world/Map.java | 54 +- core/src/io/anuke/mindustry/world/Maps.java | 119 ++++ desktop/mindustry-maps/maps.json | 1 + .../mindustry/desktop/DesktopLauncher.java | 2 +- 34 files changed, 1237 insertions(+), 465 deletions(-) create mode 100644 core/assets-raw/sprites/ui/icon-terrain.png create mode 100644 core/assets-raw/sprites/ui/text-editor.png rename core/assets/maps/{islands.png => island.png} (100%) create mode 100644 core/assets/maps/maps.json create mode 100644 core/src/io/anuke/mindustry/mapeditor/MapEditor.java create mode 100644 core/src/io/anuke/mindustry/mapeditor/MapEditorDialog.java create mode 100644 core/src/io/anuke/mindustry/mapeditor/MapFilter.java create mode 100644 core/src/io/anuke/mindustry/mapeditor/MapView.java delete mode 100644 core/src/io/anuke/mindustry/ui/MapEditor.java create mode 100644 core/src/io/anuke/mindustry/world/ColorMapper.java create mode 100644 core/src/io/anuke/mindustry/world/Maps.java create mode 100644 desktop/mindustry-maps/maps.json diff --git a/.gitignore b/.gitignore index d568a38105..71869acd34 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ /desktop/packr-out/ /desktop/packr-export/ /desktop/mindustry-saves/ +/destkop/mindustry-maps/ /core/lib/ *.gif diff --git a/TODO.md b/TODO.md index 1c87bdf52c..88459d4093 100644 --- a/TODO.md +++ b/TODO.md @@ -16,6 +16,8 @@ _Keep in mind that this is just a basic outline of planned features, and will be - [DONE] Add link to Mindustry discord everywhere - Balancing to slow down progression - Map editor +- Delete saves +- Display playtime ### Major Bugs - Black screen when tabbing out on Android diff --git a/android/AndroidManifest.xml b/android/AndroidManifest.xml index dfaef6fadf..8c14141445 100644 --- a/android/AndroidManifest.xml +++ b/android/AndroidManifest.xml @@ -1,8 +1,8 @@ + android:versionCode="38" + android:versionName="3.1.2" > diff --git a/android/src/io/anuke/mindustry/AndroidLauncher.java b/android/src/io/anuke/mindustry/AndroidLauncher.java index 15ca88286c..698b5697f9 100644 --- a/android/src/io/anuke/mindustry/AndroidLauncher.java +++ b/android/src/io/anuke/mindustry/AndroidLauncher.java @@ -52,7 +52,7 @@ public class AndroidLauncher extends AndroidApplication{ Mindustry.donationsCallable = new Callable(){ @Override public void run(){ showDonations(); } }; if(doubleScaleTablets && isTablet(this.getContext())){ - Unit.dp.addition = 1f; + Unit.dp.addition = 0.5f; } config.hideStatusBar = true; diff --git a/core/assets-raw/sprites/ui/icon-terrain.png b/core/assets-raw/sprites/ui/icon-terrain.png new file mode 100644 index 0000000000000000000000000000000000000000..92dc447567c73b33f940642caf184f83c9f832ca GIT binary patch literal 202 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4mJh`26+$Niwq15Y)RhkE)4%caKYZ?lNlHo zI14-?iy0WWg+Z8+Vb&Z81_lQ95>H=O_J=$|OcJV3ws$;YU|* zRrlt^rO!)Wy?VO6;7eZFAHfc0wri~=ri^#*C~{=nYM#cxz`)??>gTe~DWM4f{u@CL literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/ui/slider.png b/core/assets-raw/sprites/ui/slider.png index 7986f4f53bb7d6b9dabaa54e653127335fc413a1..a722706e2b2d91269e9fec217ed34d097dfa8566 100644 GIT binary patch delta 78 zcmXSIXPltI&z9uv?!xdN1Q+aGK6#>|yeW?mi-_3g_*-5K3=ATkE{-7_*ONDF*zn{0 fkpl+~G|XpUu;XFeraeaiB+uaK>gTe~DWM4fTniiV delta 87 zcmZo?ES;bd$XVbKSzV`0_$>R-5ofq_B9)5S4_ p<9c#H@bzEkj~qB~pkY1(gV`a**78=7Qw$6Y44$rjF6*2UngH=W8ZQ6< diff --git a/core/assets-raw/sprites/ui/text-editor.png b/core/assets-raw/sprites/ui/text-editor.png new file mode 100644 index 0000000000000000000000000000000000000000..55954c33718a91bca2e71c9134e115d77894acbf GIT binary patch literal 322 zcmeAS@N?(olHy`uVBq!ia0y~yU{GUVVBq0kV_;z5<2wJ3fq{W7$=lt9;Xep2*t>i( z0|NtRfk$L90|U1(2s1Lwnj^u$z`$PO>Fdh=kVl9?l<%M7?M4O$2FViFh!W@g+}zZ> z5(ej@)Wnk16ovB4k_-iRPv3y>Mm}){28LChE{-783%c1bn!+w zmS@MC-BM`1wdCpZyR3{mB^VR<>vIZb_bs{kY5V-Ap68gW Yf?m&wRnEN6z`(%Z>FVdQ&MBb@0Qcj2N&o-= literal 0 HcmV?d00001 diff --git a/core/assets/maps/islands.png b/core/assets/maps/island.png similarity index 100% rename from core/assets/maps/islands.png rename to core/assets/maps/island.png diff --git a/core/assets/maps/maps.json b/core/assets/maps/maps.json new file mode 100644 index 0000000000..fcfbde3d3d --- /dev/null +++ b/core/assets/maps/maps.json @@ -0,0 +1,95 @@ +{ + "maps": [ + { + "id": 0, + "name": "maze", + "visible": true, + "flipBase": false, + "backgroundColor": "646464" + }, + { + "id": 1, + "name": "fortress", + "visible": true, + "flipBase": false, + "backgroundColor": "646464" + }, + { + "id": 2, + "name": "sinkhole", + "visible": true, + "flipBase": false, + "backgroundColor": "646464" + }, + { + "id": 3, + "name": "caves", + "visible": true, + "flipBase": false, + "backgroundColor": "646464" + }, + { + "id": 4, + "name": "volcano", + "visible": true, + "flipBase": true, + "backgroundColor": "646464" + }, + { + "id": 5, + "name": "caldera", + "visible": true, + "flipBase": false, + "backgroundColor": "646464" + }, + { + "id": 6, + "name": "scorch", + "visible": true, + "flipBase": false, + "backgroundColor": "e5d8bb" + }, + { + "id": 7, + "name": "desert", + "visible": true, + "flipBase": false, + "backgroundColor": "646464" + }, + { + "id": 8, + "name": "island", + "visible": true, + "flipBase": false, + "backgroundColor": "e5d8bb" + }, + { + "id": 9, + "name": "grassland", + "visible": true, + "flipBase": false, + "backgroundColor": "5ab464" + }, + { + "id": 10, + "name": "tundra", + "visible": true, + "flipBase": false, + "backgroundColor": "646464" + }, + { + "id": 11, + "name": "spiral", + "visible": true, + "flipBase": false, + "backgroundColor": "f7feff" + }, + { + "id": 12, + "name": "tutorial", + "visible": true, + "flipBase": false, + "backgroundColor": "646464" + } + ] +} diff --git a/core/assets/sprites/sprites.atlas b/core/assets/sprites/sprites.atlas index 1a9999603e..cd2882139d 100644 --- a/core/assets/sprites/sprites.atlas +++ b/core/assets/sprites/sprites.atlas @@ -20,1183 +20,1183 @@ blank index: -1 blocks/blackrock1 rotate: false - xy: 519, 179 + xy: 349, 79 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/blackrockshadow1 rotate: false - xy: 722, 381 + xy: 361, 91 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/blackstone1 rotate: false - xy: 734, 406 + xy: 229, 67 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/blackstone2 rotate: false - xy: 734, 396 + xy: 239, 67 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/blackstone3 rotate: false - xy: 724, 371 + xy: 249, 67 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/blackstoneblock1 rotate: false - xy: 724, 361 + xy: 259, 67 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/blackstoneblock2 rotate: false - xy: 724, 351 + xy: 269, 67 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/blackstoneblock3 rotate: false - xy: 734, 386 + xy: 279, 67 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/blackstoneedge rotate: false - xy: 1011, 499 + xy: 178, 94 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 blocks/block rotate: false - xy: 734, 366 + xy: 299, 67 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/block-2x2 rotate: false - xy: 428, 113 + xy: 661, 292 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 blocks/block-3x3 rotate: false - xy: 224, 105 + xy: 125, 38 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 blocks/chainturret rotate: false - xy: 747, 430 + xy: 679, 292 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 blocks/chainturret-icon rotate: false - xy: 529, 177 + xy: 558, 177 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/coal1 rotate: false - xy: 734, 346 + xy: 319, 67 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/coal2 rotate: false - xy: 165, 76 + xy: 329, 67 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/coal3 rotate: false - xy: 175, 79 + xy: 339, 67 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/coaldrill rotate: false - xy: 185, 79 + xy: 349, 69 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/coalgenerator rotate: false - xy: 195, 79 + xy: 370, 103 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/coalgenerator-top rotate: false - xy: 205, 79 + xy: 380, 105 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/coalpurifier rotate: false - xy: 215, 79 + xy: 390, 105 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/combustiongenerator rotate: false - xy: 225, 83 + xy: 400, 105 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/compositewall rotate: false - xy: 235, 83 + xy: 410, 105 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conduit rotate: false - xy: 245, 83 + xy: 420, 105 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conduitbottom rotate: false - xy: 255, 83 + xy: 430, 105 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conduitliquid rotate: false - xy: 265, 83 + xy: 440, 105 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conduittop rotate: false - xy: 275, 83 + xy: 450, 105 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conveyor rotate: false - xy: 285, 83 + xy: 460, 105 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conveyormove rotate: false - xy: 295, 83 + xy: 470, 105 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conveyortunnel rotate: false - xy: 305, 83 + xy: 480, 105 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/core rotate: false - xy: 276, 105 + xy: 524, 219 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 blocks/cross rotate: false - xy: 315, 83 + xy: 371, 93 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/crucible rotate: false - xy: 325, 83 + xy: 381, 95 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/deepwater rotate: false - xy: 335, 83 + xy: 391, 95 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/dirt1 rotate: false - xy: 345, 83 + xy: 401, 95 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/dirt2 rotate: false - xy: 355, 83 + xy: 411, 95 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/dirt3 rotate: false - xy: 365, 83 + xy: 421, 95 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/dirtedge rotate: false - xy: 1011, 485 + xy: 529, 147 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 blocks/door rotate: false - xy: 375, 83 + xy: 431, 95 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/door-large rotate: false - xy: 446, 113 + xy: 697, 291 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 blocks/door-large-icon rotate: false - xy: 385, 83 + xy: 441, 95 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/door-large-open rotate: false - xy: 464, 113 + xy: 234, 113 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 blocks/door-open rotate: false - xy: 395, 83 + xy: 451, 95 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/doubleturret rotate: false - xy: 514, 124 + xy: 582, 177 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/duriumwall rotate: false - xy: 809, 430 + xy: 461, 95 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/duriumwall-large rotate: false - xy: 661, 292 + xy: 252, 113 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 blocks/duriumwall-large-icon rotate: false - xy: 514, 114 + xy: 471, 95 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/flameturret rotate: false - xy: 188, 89 + xy: 226, 101 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/fluxpump rotate: false - xy: 406, 99 + xy: 225, 57 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/grass1 rotate: false - xy: 416, 99 + xy: 235, 57 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/grass2 rotate: false - xy: 428, 103 + xy: 245, 57 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/grass3 rotate: false - xy: 438, 103 + xy: 255, 57 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/grassblock1 rotate: false - xy: 448, 103 + xy: 265, 57 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/grassblock2 rotate: false - xy: 458, 103 + xy: 275, 57 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/grassedge rotate: false - xy: 795, 426 + xy: 211, 55 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 blocks/ice1 rotate: false - xy: 468, 103 + xy: 285, 57 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/ice2 rotate: false - xy: 225, 73 + xy: 295, 57 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/ice3 rotate: false - xy: 235, 73 + xy: 305, 57 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/iceedge rotate: false - xy: 524, 217 + xy: 563, 189 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 blocks/icerock1 rotate: false - xy: 245, 73 + xy: 315, 57 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/icerock2 rotate: false - xy: 255, 73 + xy: 325, 57 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/icerockshadow1 rotate: false - xy: 265, 73 + xy: 335, 57 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/rockshadow1 rotate: false - xy: 265, 73 + xy: 335, 57 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/icerockshadow2 rotate: false - xy: 275, 73 + xy: 495, 126 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/rockshadow2 rotate: false - xy: 275, 73 + xy: 495, 126 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/iron1 rotate: false - xy: 355, 73 + xy: 510, 116 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/iron2 rotate: false - xy: 365, 73 + xy: 510, 106 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/iron3 rotate: false - xy: 375, 73 + xy: 491, 96 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/irondrill rotate: false - xy: 385, 73 + xy: 501, 96 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/ironwall rotate: false - xy: 395, 73 + xy: 511, 96 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/junction rotate: false - xy: 809, 420 + xy: 525, 127 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/laserturret rotate: false - xy: 709, 279 + xy: 322, 101 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/lava rotate: false - xy: 478, 103 + xy: 520, 116 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/lavaedge rotate: false - xy: 538, 217 + xy: 559, 163 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 blocks/lavasmelter rotate: false - xy: 488, 105 + xy: 520, 106 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/liquiditemjunction rotate: false - xy: 592, 238 + xy: 521, 96 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/liquidjunction rotate: false - xy: 602, 238 + xy: 151, 54 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/liquidrouter rotate: false - xy: 612, 238 + xy: 151, 44 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/machineturret rotate: false - xy: 721, 281 + xy: 301, 77 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/megarepairturret rotate: false - xy: 541, 177 + xy: 313, 89 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/mortarturret rotate: false - xy: 163, 26 + xy: 334, 101 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/mossblock rotate: false - xy: 632, 238 + xy: 171, 58 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/mossstone rotate: false - xy: 632, 238 + xy: 171, 58 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/nuclearreactor rotate: false - xy: 302, 105 + xy: 550, 219 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 blocks/nuclearreactor-center rotate: false - xy: 328, 105 + xy: 727, 422 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 blocks/nuclearreactor-icon rotate: false - xy: 591, 228 + xy: 171, 48 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/nuclearreactor-lights rotate: false - xy: 354, 105 + xy: 753, 422 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 blocks/nuclearreactor-small rotate: false - xy: 679, 292 + xy: 270, 113 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 blocks/oil rotate: false - xy: 601, 228 + xy: 181, 52 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/oiledge rotate: false - xy: 519, 189 + xy: 577, 189 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 blocks/oilrefinery rotate: false - xy: 611, 228 + xy: 345, 57 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/omnidrill rotate: false - xy: 621, 228 + xy: 539, 137 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/plasmaturret rotate: false - xy: 498, 108 + xy: 313, 77 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/powerbooster rotate: false - xy: 631, 228 + xy: 535, 127 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/poweredconveyor rotate: false - xy: 641, 228 + xy: 530, 117 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/poweredconveyormove rotate: false - xy: 595, 218 + xy: 530, 107 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/powerlaser rotate: false - xy: 605, 218 + xy: 531, 97 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/powerlasercorner rotate: false - xy: 615, 218 + xy: 540, 117 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/powerlaserrouter rotate: false - xy: 625, 218 + xy: 540, 107 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/pulseconduit rotate: false - xy: 635, 218 + xy: 545, 127 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/pulseconduitbottom rotate: false - xy: 645, 218 + xy: 541, 97 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/pulseconduittop rotate: false - xy: 651, 228 + xy: 550, 117 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/pump rotate: false - xy: 655, 218 + xy: 550, 107 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/repairturret rotate: false - xy: 704, 263 + xy: 325, 89 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/rock1 rotate: false - xy: 671, 234 + xy: 161, 38 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/rock2 rotate: false - xy: 665, 224 + xy: 171, 38 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/router rotate: false - xy: 665, 214 + xy: 181, 42 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/rtgenerator rotate: false - xy: 675, 224 + xy: 157, 28 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/rtgenerator-top rotate: false - xy: 675, 214 + xy: 167, 28 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/sand1 rotate: false - xy: 405, 89 + xy: 191, 45 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/sand2 rotate: false - xy: 405, 79 + xy: 201, 45 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/sand3 rotate: false - xy: 415, 89 + xy: 211, 45 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/sandblock1 rotate: false - xy: 415, 79 + xy: 181, 32 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/sandblock2 rotate: false - xy: 405, 69 + xy: 191, 35 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/sandblock3 rotate: false - xy: 415, 69 + xy: 201, 35 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/sandedge rotate: false - xy: 533, 203 + xy: 587, 163 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 blocks/shadow rotate: false - xy: 704, 251 + xy: 346, 101 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/shieldgenerator rotate: false - xy: 185, 69 + xy: 159, 18 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/shotgunturret rotate: false - xy: 704, 239 + xy: 325, 77 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/shrub rotate: false - xy: 215, 69 + xy: 169, 8 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/shrubshadow rotate: false - xy: 173, 59 + xy: 221, 45 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/smelter rotate: false - xy: 183, 59 + xy: 221, 35 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/sniperturret rotate: false - xy: 722, 415 + xy: 337, 89 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/snow1 rotate: false - xy: 193, 59 + xy: 231, 47 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/snow2 rotate: false - xy: 203, 59 + xy: 231, 37 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/snow3 rotate: false - xy: 213, 59 + xy: 241, 47 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/snowblock1 rotate: false - xy: 173, 49 + xy: 241, 37 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/snowblock2 rotate: false - xy: 183, 49 + xy: 251, 47 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/snowblock3 rotate: false - xy: 193, 49 + xy: 251, 37 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/snowedge rotate: false - xy: 533, 189 + xy: 117, 8 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 blocks/sorter rotate: false - xy: 203, 49 + xy: 261, 47 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/steelconveyor rotate: false - xy: 213, 49 + xy: 261, 37 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/steelconveyormove rotate: false - xy: 171, 39 + xy: 271, 47 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/steelwall rotate: false - xy: 181, 39 + xy: 271, 37 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/steelwall-large rotate: false - xy: 697, 291 + xy: 288, 113 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 blocks/steelwall-large-icon rotate: false - xy: 191, 39 + xy: 281, 47 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stone1 rotate: false - xy: 201, 39 + xy: 281, 37 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stone2 rotate: false - xy: 211, 39 + xy: 291, 47 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stone3 rotate: false - xy: 175, 29 + xy: 291, 37 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stoneblock1 rotate: false - xy: 185, 29 + xy: 301, 47 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stoneblock2 rotate: false - xy: 195, 29 + xy: 301, 37 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stoneblock3 rotate: false - xy: 205, 29 + xy: 311, 47 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stonedrill rotate: false - xy: 215, 29 + xy: 311, 37 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stoneedge rotate: false - xy: 555, 213 + xy: 131, 8 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 blocks/stoneformer rotate: false - xy: 221, 39 + xy: 321, 47 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stonewall rotate: false - xy: 225, 29 + xy: 321, 37 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/teleporter rotate: false - xy: 225, 63 + xy: 331, 47 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/teleporter-top rotate: false - xy: 235, 63 + xy: 331, 37 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/thermalgenerator rotate: false - xy: 245, 63 + xy: 341, 47 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titancannon rotate: false - xy: 380, 105 + xy: 779, 430 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 blocks/titancannon-icon rotate: false - xy: 722, 403 + xy: 358, 101 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/titanium1 rotate: false - xy: 255, 63 + xy: 341, 37 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titanium2 rotate: false - xy: 265, 63 + xy: 351, 47 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titanium3 rotate: false - xy: 275, 63 + xy: 351, 37 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titaniumdrill rotate: false - xy: 285, 63 + xy: 802, 420 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titaniumpurifier rotate: false - xy: 295, 63 + xy: 802, 410 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titaniumshieldwall rotate: false - xy: 305, 63 + xy: 802, 400 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titaniumwall rotate: false - xy: 315, 63 + xy: 802, 390 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titaniumwall-large rotate: false - xy: 881, 495 + xy: 360, 113 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 blocks/titaniumwall-large-icon rotate: false - xy: 325, 63 + xy: 802, 380 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/turret rotate: false - xy: 722, 391 + xy: 337, 77 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/uranium1 rotate: false - xy: 355, 63 + xy: 211, 25 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/uranium2 rotate: false - xy: 365, 63 + xy: 221, 25 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/uranium3 rotate: false - xy: 375, 63 + xy: 231, 27 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/uraniumdrill rotate: false - xy: 385, 63 + xy: 241, 27 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/water rotate: false - xy: 395, 63 + xy: 251, 27 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/wateredge rotate: false - xy: 569, 213 + xy: 145, 8 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 blocks/waveturret rotate: false - xy: 734, 416 + xy: 349, 89 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 bullet rotate: false - xy: 734, 356 + xy: 309, 67 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1210,7 +1210,7 @@ chainbullet index: -1 circle rotate: false - xy: 169, 89 + xy: 519, 178 size: 17, 17 orig: 17, 17 offset: 0, 0 @@ -1224,238 +1224,238 @@ circle2 index: -1 enemies/blastenemy-t1 rotate: false - xy: 899, 497 + xy: 378, 115 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/blastenemy-t2 rotate: false - xy: 915, 497 + xy: 394, 115 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/blastenemy-t3 rotate: false - xy: 931, 497 + xy: 410, 115 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/empenemy-t1 rotate: false - xy: 947, 497 + xy: 426, 115 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/empenemy-t2 rotate: false - xy: 963, 497 + xy: 442, 115 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/empenemy-t3 rotate: false - xy: 979, 497 + xy: 458, 115 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/enemy-t1 rotate: false - xy: 995, 497 + xy: 474, 115 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/targetenemy-t1 rotate: false - xy: 995, 497 + xy: 474, 115 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/enemy-t2 rotate: false - xy: 157, 38 + xy: 545, 163 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 enemies/enemy-t3 rotate: false - xy: 781, 426 + xy: 197, 55 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 enemies/fastenemy-t1 rotate: false - xy: 765, 432 + xy: 881, 497 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/fastenemy-t2 rotate: false - xy: 482, 115 + xy: 897, 497 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/fastenemy-t3 rotate: false - xy: 715, 293 + xy: 913, 497 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/flamerenemy-t1 rotate: false - xy: 498, 120 + xy: 929, 497 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/flamerenemy-t2 rotate: false - xy: 115, 14 + xy: 945, 497 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/flamerenemy-t3 rotate: false - xy: 141, 52 + xy: 961, 497 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/fortressenemy-t1 rotate: false - xy: 125, 72 + xy: 95, 8 size: 20, 20 orig: 20, 20 offset: 0, 0 index: -1 enemies/fortressenemy-t2 rotate: false - xy: 147, 86 + xy: 519, 197 size: 20, 20 orig: 20, 20 offset: 0, 0 index: -1 enemies/fortressenemy-t3 rotate: false - xy: 406, 109 + xy: 541, 197 size: 20, 20 orig: 20, 20 offset: 0, 0 index: -1 enemies/healerenemy-t1 rotate: false - xy: 141, 36 + xy: 977, 497 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/healerenemy-t2 rotate: false - xy: 131, 20 + xy: 993, 497 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/healerenemy-t3 rotate: false - xy: 147, 20 + xy: 1009, 497 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/mortarenemy-t1 rotate: false - xy: 656, 260 + xy: 197, 69 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/mortarenemy-t2 rotate: false - xy: 672, 260 + xy: 213, 85 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/mortarenemy-t3 rotate: false - xy: 656, 244 + xy: 213, 69 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/rapidenemy-t1 rotate: false - xy: 672, 244 + xy: 125, 22 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/rapidenemy-t2 rotate: false - xy: 688, 259 + xy: 141, 22 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/rapidenemy-t3 rotate: false - xy: 688, 243 + xy: 786, 414 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/tankenemy-t1 rotate: false - xy: 781, 440 + xy: 786, 398 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/tankenemy-t2 rotate: false - xy: 797, 440 + xy: 786, 382 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/tankenemy-t3 rotate: false - xy: 157, 52 + xy: 529, 161 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/titanenemy-t1 rotate: false - xy: 555, 227 + xy: 306, 113 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 enemies/titanenemy-t2 rotate: false - xy: 573, 227 + xy: 324, 113 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 enemies/titanenemy-t3 rotate: false - xy: 147, 68 + xy: 342, 113 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -1469,105 +1469,105 @@ enemyarrow index: -1 icon-coal rotate: false - xy: 285, 73 + xy: 505, 126 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-dirium rotate: false - xy: 295, 73 + xy: 515, 126 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-iron rotate: false - xy: 305, 73 + xy: 529, 137 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-steel rotate: false - xy: 315, 73 + xy: 490, 116 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-stone rotate: false - xy: 325, 73 + xy: 490, 106 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-titanium rotate: false - xy: 335, 73 + xy: 500, 116 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-uranium rotate: false - xy: 345, 73 + xy: 500, 106 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 laser rotate: false - xy: 552, 217 + xy: 805, 442 size: 1, 12 orig: 1, 12 offset: 0, 0 index: -1 laserend rotate: false - xy: 727, 428 + xy: 538, 177 size: 18, 18 orig: 18, 18 offset: 0, 0 index: -1 laserfull rotate: false - xy: 95, 10 + xy: 576, 225 size: 18, 18 orig: 18, 18 offset: 0, 0 index: -1 mechs/mech-standard rotate: false - xy: 519, 203 + xy: 573, 163 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 shell rotate: false - xy: 175, 69 + xy: 211, 35 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 shot rotate: false - xy: 195, 69 + xy: 159, 8 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 shot-long rotate: false - xy: 205, 69 + xy: 169, 18 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanshell rotate: false - xy: 335, 63 + xy: 191, 25 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1630,7 +1630,7 @@ ui/button-map-over index: -1 ui/button-select rotate: false - xy: 250, 105 + xy: 155, 68 size: 24, 24 split: 4, 4, 4, 4 orig: 24, 24 @@ -1659,56 +1659,56 @@ ui/check-over index: -1 ui/clear rotate: false - xy: 583, 215 + xy: 570, 177 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/cursor rotate: false - xy: 125, 30 + xy: 579, 203 size: 4, 4 orig: 4, 4 offset: 0, 0 index: -1 ui/icon-areaDelete rotate: false - xy: 200, 89 + xy: 238, 101 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-arrow rotate: false - xy: 597, 280 + xy: 563, 203 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icon-arrow-left rotate: false - xy: 212, 89 + xy: 229, 89 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-arrow-right rotate: false - xy: 224, 93 + xy: 250, 101 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-cancel rotate: false - xy: 613, 280 + xy: 715, 293 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icon-check rotate: false - xy: 629, 280 + xy: 722, 406 size: 14, 14 orig: 14, 14 offset: 0, 0 @@ -1736,203 +1736,210 @@ ui/icon-close-over index: -1 ui/icon-crafting rotate: false - xy: 236, 93 + xy: 229, 77 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-cursor rotate: false - xy: 248, 93 + xy: 241, 89 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-defense rotate: false - xy: 260, 93 + xy: 262, 101 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-discord rotate: false - xy: 645, 280 + xy: 722, 390 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icon-distribution rotate: false - xy: 272, 93 + xy: 241, 77 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-donate rotate: false - xy: 661, 276 + xy: 738, 406 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icon-hold rotate: false - xy: 284, 93 + xy: 253, 89 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-holdDelete rotate: false - xy: 296, 93 + xy: 274, 101 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-info rotate: false - xy: 308, 93 + xy: 253, 77 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-load rotate: false - xy: 677, 276 + xy: 738, 390 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icon-menu rotate: false - xy: 320, 93 + xy: 265, 89 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-none rotate: false - xy: 332, 93 + xy: 286, 101 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-pause rotate: false - xy: 344, 93 + xy: 265, 77 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-play rotate: false - xy: 356, 93 + xy: 277, 89 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-play-2 rotate: false - xy: 592, 264 + xy: 754, 406 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icon-power rotate: false - xy: 368, 93 + xy: 298, 101 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-production rotate: false - xy: 380, 93 + xy: 277, 77 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-quit rotate: false - xy: 592, 248 + xy: 754, 390 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icon-rotate rotate: false - xy: 608, 264 + xy: 181, 78 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icon-rotate-arrow rotate: false - xy: 608, 248 + xy: 579, 209 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icon-rotate-left rotate: false - xy: 624, 264 + xy: 181, 62 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icon-rotate-right rotate: false - xy: 624, 248 + xy: 770, 406 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icon-save rotate: false - xy: 640, 264 + xy: 770, 390 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icon-settings rotate: false - xy: 392, 93 + xy: 289, 89 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 +ui/icon-terrain + rotate: false + xy: 194, 101 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 ui/icon-tools rotate: false - xy: 640, 248 + xy: 210, 101 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icon-touch rotate: false - xy: 131, 8 + xy: 310, 101 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-touchDelete rotate: false - xy: 143, 8 + xy: 289, 77 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-tutorial rotate: false - xy: 693, 275 + xy: 197, 85 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icon-weapon rotate: false - xy: 155, 8 + xy: 301, 89 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -1977,7 +1984,7 @@ ui/scroll index: -1 ui/scroll-horizontal rotate: false - xy: 125, 36 + xy: 592, 251 size: 6, 34 split: 2, 2, 0, 34 pad: 0, 5, 5, 4 @@ -1986,7 +1993,7 @@ ui/scroll-horizontal index: -1 ui/scroll-knob-horizontal rotate: false - xy: 133, 36 + xy: 521, 142 size: 6, 34 split: 2, 2, 0, 34 pad: 0, 5, 13, 12 @@ -2003,21 +2010,21 @@ ui/scroll-knob-vertical index: -1 ui/selection rotate: false - xy: 495, 133 + xy: 576, 222 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 ui/separator rotate: false - xy: 169, 86 + xy: 576, 219 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 ui/slider rotate: false - xy: 652, 238 + xy: 177, 28 size: 1, 8 orig: 1, 8 offset: 0, 0 @@ -2045,11 +2052,18 @@ ui/slider-knob-over index: -1 ui/slider-vertical rotate: false - xy: 724, 348 + xy: 151, 41 size: 8, 1 orig: 8, 1 offset: 0, 0 index: -1 +ui/text-editor + rotate: false + xy: 194, 117 + size: 38, 12 + orig: 38, 12 + offset: 0, 0 + index: -1 ui/text-exit rotate: false xy: 855, 499 @@ -2066,7 +2080,7 @@ ui/text-load index: -1 ui/text-play rotate: false - xy: 524, 231 + xy: 147, 94 size: 29, 12 orig: 29, 12 offset: 0, 0 @@ -2108,7 +2122,7 @@ ui/text-tutorial index: -1 ui/textfield rotate: false - xy: 194, 101 + xy: 125, 64 size: 28, 28 split: 6, 6, 6, 6 orig: 28, 28 @@ -2124,7 +2138,7 @@ ui/textfield-over index: -1 ui/white rotate: false - xy: 592, 282 + xy: 519, 219 size: 3, 3 orig: 3, 3 offset: 0, 0 @@ -2147,42 +2161,42 @@ ui/window-empty index: -1 weapons/blaster rotate: false - xy: 734, 376 + xy: 289, 67 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/flamer rotate: false - xy: 115, 4 + xy: 481, 95 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/mortar rotate: false - xy: 622, 238 + xy: 161, 58 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/multigun rotate: false - xy: 642, 238 + xy: 161, 48 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/railgun rotate: false - xy: 661, 234 + xy: 551, 97 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/triblaster rotate: false - xy: 345, 63 + xy: 201, 25 size: 8, 8 orig: 8, 8 offset: 0, 0 diff --git a/core/assets/sprites/sprites.png b/core/assets/sprites/sprites.png index 4e303b5ec6f3e9eefa08f513d5b920e084a0eee4..7790dd39e3d7661deceb8a4cddd69d488e14f467 100644 GIT binary patch literal 79186 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

%^__lMZOD*CdrpYvjw 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 Ci6i;| diff --git a/core/assets/ui/uiskin.json b/core/assets/ui/uiskin.json index fb3350a1b2..1292905b42 100644 --- a/core/assets/ui/uiskin.json +++ b/core/assets/ui/uiskin.json @@ -49,6 +49,7 @@ io.anuke.ucore.scene.ui.ImageTextButton$ImageTextButtonStyle: { }, io.anuke.ucore.scene.ui.ScrollPane$ScrollPaneStyle: { default: {background: border, vScroll: scroll, vScrollKnob: scroll-knob-vertical}, + volume: {background: button-map, vScroll: scroll, vScrollKnob: scroll-knob-vertical}, clear: {vScroll: scroll, vScrollKnob: scroll-knob-vertical} }, io.anuke.ucore.scene.ui.Window$WindowStyle: { diff --git a/core/src/io/anuke/mindustry/Vars.java b/core/src/io/anuke/mindustry/Vars.java index 1ec0230adc..e379e1cbfc 100644 --- a/core/src/io/anuke/mindustry/Vars.java +++ b/core/src/io/anuke/mindustry/Vars.java @@ -2,6 +2,7 @@ package io.anuke.mindustry; import com.badlogic.gdx.Application.ApplicationType; import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.files.FileHandle; import com.badlogic.gdx.utils.I18NBundle; import io.anuke.mindustry.core.*; @@ -20,14 +21,18 @@ public class Vars{ public static final float respawnduration = 60*4; //time between waves in frames (on normal mode) public static final float wavespace = 60*60*(android ? 1 : 1); - //waves can last no longer than 2 minutes, otherwise the next one spawns - public static final float maxwavespace = 60*60*2; + //waves can last no longer than 3 minutes, otherwise the next one spawns + public static final float maxwavespace = 60*60*4f; //advance time the pathfinding starts at public static final float aheadPathfinding = 60*20; //how far away from spawn points the player can't place blocks public static final float enemyspawnspace = 65; //discord group URL public static final String discordURL = "https://discord.gg/r8BkXNd"; + //directory for user-created map data + public static final FileHandle customMapDirectory = Gdx.files.local("mindustry-maps/"); + //save file directory + public static final FileHandle saveDirectory = Gdx.files.local("mindustry-saves/"); //scale of the font public static float fontscale = Unit.dp.inPixels(1f)/2f; //camera zoom displayed on startup diff --git a/core/src/io/anuke/mindustry/ai/Pathfind.java b/core/src/io/anuke/mindustry/ai/Pathfind.java index 8940d60625..3987c0ef4c 100644 --- a/core/src/io/anuke/mindustry/ai/Pathfind.java +++ b/core/src/io/anuke/mindustry/ai/Pathfind.java @@ -42,11 +42,10 @@ public class Pathfind{ if(Vars.world.raycastWorld(enemy.x, enemy.y, target.worldx(), target.worldy()) != null){ if(enemy.node > 1) enemy.node = enemy.node - 1; + enemy.idletime = 0; }else{ - //must be blocked by a playermade block + //must be blocked by a playermade block, do nothing } - - enemy.idletime = 0; } //-1 is only possible here if both pathfindings failed, which should NOT happen diff --git a/core/src/io/anuke/mindustry/core/Control.java b/core/src/io/anuke/mindustry/core/Control.java index 99996f4bf0..4cebf9df83 100644 --- a/core/src/io/anuke/mindustry/core/Control.java +++ b/core/src/io/anuke/mindustry/core/Control.java @@ -118,8 +118,8 @@ public class Control extends Module{ Settings.loadAll("io.anuke.moment"); - for(Map map : Map.values()){ - Settings.defaults("hiscore" + map.name(), 0); + for(Map map : Vars.world.maps().list()){ + Settings.defaults("hiscore" + map.name, 0); } player = new Player(); @@ -278,10 +278,10 @@ public class Control extends Module{ wave ++; - int last = Settings.getInt("hiscore" + world.getMap().name()); + int last = Settings.getInt("hiscore" + world.getMap().name); if(wave > last && mode != GameMode.sandbox){ - Settings.putInt("hiscore" + world.getMap().name(), wave); + Settings.putInt("hiscore" + world.getMap().name, wave); Settings.save(); hiscore = true; } @@ -518,7 +518,6 @@ public class Control extends Module{ } if(!tutorial.active() && mode != GameMode.sandbox){ - extrawavetime -= delta(); if(enemies <= 0){ wavetime -= delta(); @@ -531,10 +530,12 @@ public class Control extends Module{ world.pathfinder().updatePath(); lastUpdated = wave + 1; } + }else{ + extrawavetime -= delta(); } } - if(wavetime <= 0){ + if(wavetime <= 0 || extrawavetime <= 0){ runWave(); } diff --git a/core/src/io/anuke/mindustry/core/Tutorial.java b/core/src/io/anuke/mindustry/core/Tutorial.java index 91f9eb5de0..f26c6cb968 100644 --- a/core/src/io/anuke/mindustry/core/Tutorial.java +++ b/core/src/io/anuke/mindustry/core/Tutorial.java @@ -9,7 +9,6 @@ import io.anuke.mindustry.core.GameState.State; import io.anuke.mindustry.resource.Item; import io.anuke.mindustry.resource.Weapon; import io.anuke.mindustry.world.Block; -import io.anuke.mindustry.world.Map; import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.blocks.*; import io.anuke.ucore.core.Timers; @@ -33,7 +32,7 @@ public class Tutorial{ } public boolean active(){ - return world.getMap() == Map.tutorial && !GameState.is(State.menu); + return world.getMap().name.equals("tutorial") && !GameState.is(State.menu); } public void buildUI(table table){ diff --git a/core/src/io/anuke/mindustry/core/UI.java b/core/src/io/anuke/mindustry/core/UI.java index c434d44d7b..04f47ce952 100644 --- a/core/src/io/anuke/mindustry/core/UI.java +++ b/core/src/io/anuke/mindustry/core/UI.java @@ -15,6 +15,8 @@ import com.badlogic.gdx.utils.Array; import io.anuke.mindustry.Mindustry; import io.anuke.mindustry.Vars; import io.anuke.mindustry.core.GameState.State; +import io.anuke.mindustry.mapeditor.MapEditor; +import io.anuke.mindustry.mapeditor.MapEditorDialog; import io.anuke.mindustry.ui.*; import io.anuke.mindustry.ui.fragments.*; import io.anuke.mindustry.world.Tile; @@ -38,11 +40,13 @@ public class UI extends SceneModule{ Table loadingtable, desctable, configtable; MindustrySettingsDialog prefs; MindustryKeybindDialog keys; + MapEditorDialog editorDialog; Dialog about, restart, levels, upgrades, load, settingserror, gameerror, discord; MenuDialog menu; Tooltip tooltip; Tile configTile; Array statlist = new Array<>(); + MapEditor editor = new MapEditor(); boolean wasPaused = false; private Fragment blockfrag = new BlocksFragment(), @@ -118,7 +122,7 @@ public class UI extends SceneModule{ Draw.color(); TextureRegion back = Draw.region("background"); - float backscl = 5f; + float backscl = Unit.dp.inPixels(5f); Draw.alpha(0.7f); Core.batch.draw(back, w/2 - back.getRegionWidth()*backscl/2 +240f, h/2 - back.getRegionHeight()*backscl/2 + 250f, @@ -158,6 +162,8 @@ public class UI extends SceneModule{ configtable = new Table(); scene.add(configtable); + editorDialog = new MapEditorDialog(editor); + settingserror = new Dialog("Warning", "dialog"); settingserror.content().add("[crimson]Failed to access local storage.\nSettings will not be saved."); settingserror.content().pad(10f); @@ -438,6 +444,10 @@ public class UI extends SceneModule{ public void showDiscord(){ discord.show(); } + + public void showEditor(){ + editorDialog.show(); + } public void updateItems(){ ((HudFragment)hudfrag).updateItems(); diff --git a/core/src/io/anuke/mindustry/core/World.java b/core/src/io/anuke/mindustry/core/World.java index bed99810ba..0d80a5cb9d 100644 --- a/core/src/io/anuke/mindustry/core/World.java +++ b/core/src/io/anuke/mindustry/core/World.java @@ -2,9 +2,6 @@ package io.anuke.mindustry.core; import static io.anuke.mindustry.Vars.*; -import com.badlogic.gdx.Gdx; -import com.badlogic.gdx.graphics.Pixmap; -import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.math.GridPoint2; import com.badlogic.gdx.math.MathUtils; import com.badlogic.gdx.math.Vector2; @@ -25,15 +22,15 @@ import io.anuke.ucore.util.Tmp; public class World extends Module{ private int seed; - private Pixmap[] mapPixmaps; - private Texture[] mapTextures; private Map currentMap; private Tile[][] tiles; private Tile[] temptiles = new Tile[4]; private Pathfind pathfind = new Pathfind(); + private Maps maps = new Maps(); public World(){ - loadMaps(); + maps.loadMaps(); + currentMap = maps.getMap(0); } @Override @@ -43,13 +40,11 @@ public class World extends Module{ @Override public void dispose(){ - for(Texture texture : mapTextures){ - texture.dispose(); - } - - for(Pixmap pix : mapPixmaps){ - pix.dispose(); - } + maps.dispose(); + } + + public Maps maps(){ + return maps; } public Pathfind pathfinder(){ @@ -82,11 +77,11 @@ public class World extends Module{ } public int width(){ - return currentMap.width; + return currentMap.getWidth(); } public int height(){ - return currentMap.height; + return currentMap.getHeight(); } public Tile tile(int x, int y){ @@ -115,25 +110,6 @@ public class World extends Module{ return temptiles; } - public Texture getTexture(Map map){ - return mapTextures[map.ordinal()]; - } - - public void loadMaps(){ - Map[] maps = Map.values(); - - mapPixmaps = new Pixmap[maps.length]; - mapTextures = new Texture[maps.length]; - - for(int i = 0; i < maps.length; i ++){ - Pixmap pix = new Pixmap(Gdx.files.internal("maps/"+maps[i]+".png")); - mapPixmaps[i] = pix; - mapTextures[i] = new Texture(pix); - maps[i].width = pix.getWidth(); - maps[i].height = pix.getHeight(); - } - } - private void createTiles(){ for(int x = 0; x < tiles.length; x ++){ for(int y = 0; y < tiles[0].length; y ++){ @@ -164,28 +140,28 @@ public class World extends Module{ if(tiles != null){ clearTileEntities(); - if(tiles.length != map.width || tiles[0].length != map.height){ - tiles = new Tile[map.width][map.height]; + if(tiles.length != map.getWidth() || tiles[0].length != map.getHeight()){ + tiles = new Tile[map.getWidth()][map.getHeight()]; } createTiles(); }else{ - tiles = new Tile[map.width][map.height]; + tiles = new Tile[map.getWidth()][map.getHeight()]; createTiles(); } Vars.control.getSpawnPoints().clear(); - Entities.resizeTree(0, 0, map.width * tilesize, map.height * tilesize); + Entities.resizeTree(0, 0, map.getWidth() * tilesize, map.getHeight() * tilesize); this.seed = seed; - Generator.generate(mapPixmaps[map.ordinal()], tiles); + Generator.generate(map.pixmap, tiles); //TODO multiblock core control.getInput().placeBlock(control.getCore().x, control.getCore().y, ProductionBlocks.core, 0, false, false); - if(map != Map.tutorial){ + if(!map.name.equals("tutorial")){ setDefaultBlocks(); }else{ Vars.control.getTutorial().setDefaultBlocks(control.getCore().x, control.getCore().y); diff --git a/core/src/io/anuke/mindustry/entities/enemies/Enemy.java b/core/src/io/anuke/mindustry/entities/enemies/Enemy.java index 53acde1bf3..19cb49bd0b 100644 --- a/core/src/io/anuke/mindustry/entities/enemies/Enemy.java +++ b/core/src/io/anuke/mindustry/entities/enemies/Enemy.java @@ -17,7 +17,7 @@ public class Enemy extends DestructibleEntity{ public final static Color[] tierColors = { Color.valueOf("ffe451"), Color.valueOf("f48e20"), Color.valueOf("ff6757"), Color.valueOf("ff2d86") }; public final static int maxtier = 4; public final static float maxIdle = 60*1.5f; - public final static float maxIdleLife = 60f*15f; //15 seconds idle = death + public final static float maxIdleLife = 60f*13f; //13 seconds idle = death protected int timeid; protected Timer timer = new Timer(5); @@ -238,7 +238,7 @@ public class Enemy extends DestructibleEntity{ xvelocity = (x - lastx) / Timers.delta(); yvelocity = (y - lasty) / Timers.delta(); - float minv = 0.08f; + float minv = 0.09f; if(xvelocity < minv && yvelocity < minv && node > 0 && target == null){ idletime += Timers.delta(); diff --git a/core/src/io/anuke/mindustry/io/SaveIO.java b/core/src/io/anuke/mindustry/io/SaveIO.java index f31b7e1a4d..5646a82431 100644 --- a/core/src/io/anuke/mindustry/io/SaveIO.java +++ b/core/src/io/anuke/mindustry/io/SaveIO.java @@ -8,7 +8,6 @@ import java.io.IOException; import java.util.Arrays; import java.util.Date; -import com.badlogic.gdx.Gdx; import com.badlogic.gdx.files.FileHandle; import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.ObjectMap; @@ -163,14 +162,14 @@ public class SaveIO{ stream.readInt(); //read version stream.readLong(); //read last saved time stream.readByte(); //read the gamemode - return Map.values()[stream.readByte()]; //read the map + return Vars.world.maps().getMap(stream.readByte()); //read the map }catch (IOException e){ throw new RuntimeException(e); } } public static FileHandle fileFor(int slot){ - return Gdx.files.local("mindustry-saves/" + slot + ".mins"); + return Vars.saveDirectory.child(slot + ".mins"); } public static void write(FileHandle file){ @@ -183,7 +182,7 @@ public class SaveIO{ //--GENERAL STATE-- stream.writeByte(Vars.control.getMode().ordinal()); //gamemode - stream.writeByte(Vars.world.getMap().ordinal()); //map ID + stream.writeByte(Vars.world.getMap().id); //map ID stream.writeInt(Vars.control.getWave()); //wave stream.writeFloat(Vars.control.getWaveCountdown()); //wave countdown @@ -399,7 +398,7 @@ public class SaveIO{ int seed = stream.readInt(); int tiles = stream.readInt(); - Vars.world.loadMap(Map.values()[mapid], seed); + Vars.world.loadMap(Vars.world.maps().getMap(mapid), seed); Vars.renderer.clearTiles(); for(Enemy enemy : enemiesToUpdate){ diff --git a/core/src/io/anuke/mindustry/mapeditor/MapEditor.java b/core/src/io/anuke/mindustry/mapeditor/MapEditor.java new file mode 100644 index 0000000000..6d1feb782f --- /dev/null +++ b/core/src/io/anuke/mindustry/mapeditor/MapEditor.java @@ -0,0 +1,123 @@ +package io.anuke.mindustry.mapeditor; + +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.graphics.GL20; +import com.badlogic.gdx.graphics.Pixmap; +import com.badlogic.gdx.graphics.Pixmap.Format; +import com.badlogic.gdx.graphics.Texture; + +import io.anuke.mindustry.world.Block; +import io.anuke.mindustry.world.ColorMapper; +import io.anuke.mindustry.world.Map; +import io.anuke.mindustry.world.blocks.Blocks; +import io.anuke.ucore.graphics.Pixmaps; + +public class MapEditor{ + public static final int[] validMapSizes = {64, 128, 256}; + public static final int[] brushSizes = {1, 2, 3, 4, 5, 9, 15}; + + private Pixmap[] brushPixmaps = new Pixmap[brushSizes.length]; + + private Map map; + private Pixmap pixmap; + private Texture texture; + private int brushSize = 1; + private Block drawBlock = Blocks.stone; + + public MapEditor(){ + for(int i = 0; i < brushSizes.length; i ++){ + int s = brushSizes[i]; + brushPixmaps[i] = new Pixmap(s*2-1, s*2-1, Format.RGB888); + } + } + + public void beginEdit(Map map){ + this.map = map; + this.brushSize = 1; + if(map.pixmap == null){ + pixmap = new Pixmap(256, 256, Format.RGB888); + pixmap.setColor(ColorMapper.getColor(Blocks.stone)); + pixmap.fill(); + texture = new Texture(pixmap); + }else{ + pixmap = map.pixmap; + pixmap.setColor(ColorMapper.getColor(Blocks.stone)); + texture = map.texture; + } + + } + + public Block getDrawBlock(){ + return drawBlock; + } + + public void setDrawBlock(Block block){ + this.drawBlock = block; + pixmap.setColor(ColorMapper.getColor(block)); + } + + public void setBrushSize(int size){ + this.brushSize = size; + } + + public void draw(int dx, int dy){ + if(dx < 0 || dy < 0 || dx >= pixmap.getWidth() || dy >= pixmap.getHeight()){ + return; + } + + Gdx.gl.glBindTexture(GL20.GL_TEXTURE_2D, texture.getTextureObjectHandle()); + + int dstWidth = brushSize*2-1; + int dstHeight = brushSize*2-1; + int width = pixmap.getWidth(), height = pixmap.getHeight(); + + int x = dx - dstWidth/2; + int y = dy - dstHeight/2; + + if (x + dstWidth > width){ + //x = width - dstWidth; + dstWidth = width - x; + }else if (x < 0){ + dstWidth += x; + x = 0; + } + + //System.out.println(x + " " + y + " " + dstWidth + " " + dstHeight); + + if (y + dstHeight > height){ + //y = height - dstHeight; + dstHeight = height - y; + }else if (y < 0){ + dstHeight += y; + y = 0; + } + + pixmap.fillCircle(dx, dy, brushSize); + + Pixmap dst = brush(brushSize); + dst.drawPixmap(pixmap, x, y, dstWidth, dstHeight, 0, 0, dstWidth, dstHeight); + + Gdx.gl.glTexSubImage2D(GL20.GL_TEXTURE_2D, 0, x, y, dstWidth, dstHeight, + dst.getGLFormat(), dst.getGLType(), dst.getPixels()); + } + + private Pixmap brush(int size){ + for(int i = 0; i < brushSizes.length; i ++){ + if(brushSizes[i] == size){ + return brushPixmaps[i]; + } + } + return null; + } + + public Texture texture(){ + return texture; + } + + public void resize(int mapSize){ + Pixmap out = Pixmaps.resize(pixmap, mapSize, mapSize); + pixmap.dispose(); + pixmap = out; + texture.draw(pixmap, 0, 0); + } +} diff --git a/core/src/io/anuke/mindustry/mapeditor/MapEditorDialog.java b/core/src/io/anuke/mindustry/mapeditor/MapEditorDialog.java new file mode 100644 index 0000000000..0627ddd01a --- /dev/null +++ b/core/src/io/anuke/mindustry/mapeditor/MapEditorDialog.java @@ -0,0 +1,142 @@ +package io.anuke.mindustry.mapeditor; + +import io.anuke.mindustry.world.Block; +import io.anuke.mindustry.world.ColorMapper; +import io.anuke.mindustry.world.ColorMapper.BlockPair; +import io.anuke.mindustry.world.Map; +import io.anuke.mindustry.world.blocks.Blocks; +import io.anuke.ucore.core.Draw; +import io.anuke.ucore.scene.builders.*; +import io.anuke.ucore.scene.ui.*; +import io.anuke.ucore.scene.ui.layout.Table; +import io.anuke.ucore.scene.ui.layout.Unit; + +public class MapEditorDialog extends Dialog{ + private MapEditor editor; + private MapView view; + + public MapEditorDialog(MapEditor editor){ + super("Map Editor", "dialog"); + this.editor = editor; + view = new MapView(editor); + + setFillParent(true); + + clearChildren(); + pad(0); + build.begin(this); + build(); + build.end(); + + shown(() -> { + editor.beginEdit(new Map()); + }); + } + + public void build(){ + + new table(){{ + float isize = Unit.dp.inPixels(14*3f); + aleft(); + + new table(){{ + defaults().growY().width(130f).units(Unit.dp).padBottom(-6); + + new imagebutton("icon-load", isize, () -> { + + }).text("load map"); + + row(); + + new imagebutton("icon-save", isize, ()->{ + + }).text("save map"); + + row(); + + new imagebutton("icon-load", isize, () -> { + + }).text("load image"); + + row(); + + new imagebutton("icon-save", isize, () -> { + + }).text("save image"); + + row(); + + new imagebutton("icon-cursor", 10f*3f, () -> { + + }).text("resize").padTop(4f); + + row(); + + new imagebutton("icon-arrow-left", isize, () -> { + + }).padBottom(0).text("back"); + + }}.left().growY().end(); + + new table("button"){{ + add(view).grow(); + }}.grow().end(); + + new table(){{ + new imagebutton("icon-terrain", isize, () -> { + + }).margin(12f).text("generate...").width(148f).units(Unit.dp); + + row(); + + new table("button"){{ + margin(10f); + Slider slider = new Slider(0, MapEditor.brushSizes.length-1, 1, false); + slider.moved(f -> { + editor.setBrushSize(MapEditor.brushSizes[(int)(float)f]); + }); + new label(() -> "Brush size: " + MapEditor.brushSizes[(int)slider.getValue()]).left(); + row(); + add(slider).growX().padTop(4f).units(Unit.dp); + }}.growX().end(); + + row(); + + addBlockSelection(get()); + + row(); + + }}.right().growY().end(); + }}.grow().end(); + } + + private void addBlockSelection(Table table){ + Table content = new Table(); + ScrollPane pane = new ScrollPane(content, "volume"); + pane.setFadeScrollBars(false); + pane.setOverscroll(true, false); + ButtonGroup group = new ButtonGroup<>(); + + int i = 0; + + for(BlockPair pair : ColorMapper.getPairs()){ + Block block = pair.wall == Blocks.air ? pair.floor : pair.wall; + + ImageButton button = new ImageButton(Draw.hasRegion(block.name) ? Draw.region(block.name) : Draw.region(block.name + "1"), "toggle"); + button.clicked(() -> editor.setDrawBlock(block)); + button.resizeImage(Unit.dp.inPixels(8*4f)); + group.add(button); + content.add(button).pad(4f).size(53f, 58f).units(Unit.dp); + + if(i++ % 2 == 1){ + content.row(); + } + } + + Table extra = new Table("button"); + extra.addWrap(() -> editor.getDrawBlock().name).width(120f).center(); + table.add(extra).growX(); + table.row(); + table.add(pane).growY().fillX(); + } +} diff --git a/core/src/io/anuke/mindustry/mapeditor/MapFilter.java b/core/src/io/anuke/mindustry/mapeditor/MapFilter.java new file mode 100644 index 0000000000..728630f4eb --- /dev/null +++ b/core/src/io/anuke/mindustry/mapeditor/MapFilter.java @@ -0,0 +1,214 @@ +package io.anuke.mindustry.mapeditor; + +import com.badlogic.gdx.graphics.Pixmap; +import com.badlogic.gdx.math.Vector2; +import com.badlogic.gdx.utils.ObjectMap; +import com.badlogic.gdx.utils.OrderedMap; + +import io.anuke.mindustry.world.Block; +import io.anuke.mindustry.world.ColorMapper; +import io.anuke.mindustry.world.ColorMapper.BlockPair; +import io.anuke.mindustry.world.blocks.Blocks; +import io.anuke.mindustry.world.blocks.types.Floor; +import io.anuke.ucore.graphics.Pixmaps; +import io.anuke.ucore.noise.RidgedPerlin; +import io.anuke.ucore.noise.Simplex; +import io.anuke.ucore.util.Mathf; + +public class MapFilter{ + private ObjectMap prefs = new OrderedMap(){ + { + put("replace", true); + put("terrain", false); + put("circle", false); + put("distort", false); + put("sand", false); + put("grass", false); + put("stone", false); + put("allgrass", false); + put("allsnow", false); + put("allsand", false); + put("lavarock", false); + put("water", false); + put("oil", false); + put("lavariver", false); + put("slavariver", false); + put("river", false); + put("iceriver", false); + put("oilriver", false); + } + }; + private Simplex sim = new Simplex(); + private RidgedPerlin rid = new RidgedPerlin(1, 10, 20f); + private RidgedPerlin rid2 = new RidgedPerlin(1, 6, 1f); + private RidgedPerlin rid3 = new RidgedPerlin(1, 6, 1f); + + public void randomize(){ + sim.setSeed(Mathf.random(999999)); + rid.setSeed(Mathf.random(999999)); + rid2.setSeed(Mathf.random(999999)); + rid3.setSeed(Mathf.random(999999)); + } + + public ObjectMap getPrefs(){ + return prefs; + } + + public Pixmap process(Pixmap pixmap){ + if(prefs.get("terrain")){ + for(int x = 0; x < pixmap.getWidth(); x++){ + for(int y = 0; y < pixmap.getHeight(); y++){ + float dist = Vector2.dst((float) x / pixmap.getWidth(), (float) y / pixmap.getHeight(), 0.5f, 0.5f) * 2f; + double noise = sim.octaveNoise2D(6, 0.6, 1 / 180.0, x, y + 9999) / (prefs.get("circle") ? 1.7 : 1f) + dist / 10f; + + if(dist > 0.8){ + noise += 2 * (dist - 0.8); + } + + Block block = noise > 0.6 ? Blocks.stoneblock : Blocks.stone; + + pixmap.drawPixel(x, y, ColorMapper.getColor(block)); + } + } + } + + Pixmap src = Pixmaps.copy(pixmap); + + for(int x = 0; x < pixmap.getWidth(); x++){ + for(int y = 0; y < pixmap.getHeight(); y++){ + int dx = 0, dy = 0; + + if(prefs.get("distort")){ + double intensity = 12; + double scale = 80; + double octaves = 4; + double falloff = 0.6; + double nx = (sim.octaveNoise2D(octaves, falloff, 1 / scale, x, y) - 0.5f) * intensity; + double ny = (sim.octaveNoise2D(octaves, falloff, 1 / scale, x, y + 99999) - 0.5f) * intensity; + dx = (int) nx; + dy = (int) ny; + } + + int pix = src.getPixel(x + dx, y + dy); + + BlockPair pair = ColorMapper.get(pix); + Block block = pair == null ? null : pair.wall == Blocks.air ? pair.floor : pair.wall; + + if(block == null) + continue; + + boolean floor = block instanceof Floor; + + double noise = sim.octaveNoise2D(4, 0.6, 1 / 170.0, x, y) + sim.octaveNoise2D(1, 1.0, 1 / 5.0, x, y) / 18.0; + double nwater = sim.octaveNoise2D(1, 1.0, 1 / 130.0, x, y); + noise += nwater / 5.0; + + double noil = sim.octaveNoise2D(1, 1.0, 1 / 150.0, x + 9999, y) + sim.octaveNoise2D(1, 1.0, 1 / 2.0, x, y) / 290.0; + + if(!floor || prefs.get("replace")){ + + if(prefs.get("allgrass")){ + block = floor ? Blocks.grass : Blocks.grassblock; + }else if(prefs.get("allsnow")){ + block = floor ? Blocks.snow : Blocks.snowblock; + }else if(prefs.get("allsand")){ + block = floor ? Blocks.sand : Blocks.sandblock; + }else if(prefs.get("replace")){ + block = floor ? Blocks.stone : Blocks.stoneblock; + } + + if(noise > 0.7 && prefs.get("grass")){ + block = floor ? Blocks.grass : Blocks.grassblock; + } + if(noise > 0.7 && prefs.get("lavarock")){ + block = floor ? Blocks.blackstone : Blocks.blackstoneblock; + } + if(noise > 0.7 && prefs.get("sand")){ + block = floor ? Blocks.sand : Blocks.sandblock; + } + if(noise > 0.8 && prefs.get("stone")){ + block = floor ? Blocks.stone : Blocks.stoneblock; + } + } + + if(floor){ + if(nwater > 0.93 && prefs.get("water")){ + block = Blocks.water; + if(nwater > 0.943){ + block = Blocks.deepwater; + } + } + + if(noil > 0.95 && prefs.get("oil")){ + block = Blocks.dirt; + if(noil > 0.955){ + block = Blocks.oil; + } + } + } + + if(floor && prefs.get("lavariver")){ + double lava = rid.getValue(x, y, 1 / 100f); + double t = 0.6; + if(lava > t){ + block = Blocks.lava; + }else if(lava > t - 0.2){ + block = Blocks.blackstone; + } + } + + if(floor && prefs.get("slavariver")){ + double lava = rid.getValue(x, y, 1 / 40f); + double t = 0.7; + if(lava > t){ + block = Blocks.lava; + }else if(lava > t - 0.3){ + block = Blocks.blackstone; + } + } + + if(floor && prefs.get("oilriver")){ + double lava = rid3.getValue(x, y, 1 / 100f); + double t = 0.9; + if(lava > t){ + block = Blocks.oil; + }else if(lava > t - 0.2){ + block = Blocks.dirt; + } + } + + if(floor && prefs.get("river")){ + double riv = rid2.getValue(x, y, 1 / 140f); + double t = 0.4; + + if(riv > t + 0.1){ + block = Blocks.deepwater; + }else if(riv > t){ + block = Blocks.water; + }else if(riv > t - 0.2){ + block = Blocks.grass; + } + } + + if(floor && prefs.get("iceriver")){ + double riv = rid2.getValue(x, y, 1 / 140f); + double t = 0.4; + + if(riv > t + 0.1){ + block = Blocks.ice; + }else if(riv > t){ + block = Blocks.ice; + }else if(riv > t - 0.2){ + block = Blocks.snow; + } + } + + pixmap.drawPixel(x, y, ColorMapper.getColor(block)); + } + } + + src.dispose(); + + return pixmap; + } +} diff --git a/core/src/io/anuke/mindustry/mapeditor/MapView.java b/core/src/io/anuke/mindustry/mapeditor/MapView.java new file mode 100644 index 0000000000..8fda57d2f6 --- /dev/null +++ b/core/src/io/anuke/mindustry/mapeditor/MapView.java @@ -0,0 +1,66 @@ +package io.anuke.mindustry.mapeditor; + +import com.badlogic.gdx.graphics.g2d.Batch; +import com.badlogic.gdx.math.Bresenham2; +import com.badlogic.gdx.math.GridPoint2; +import com.badlogic.gdx.utils.Array; + +import io.anuke.ucore.scene.Element; +import io.anuke.ucore.scene.event.InputEvent; +import io.anuke.ucore.scene.event.InputListener; +import io.anuke.ucore.util.Tmp; + +public class MapView extends Element{ + private MapEditor editor; + private Bresenham2 br = new Bresenham2(); + + public MapView(MapEditor editor){ + this.editor = editor; + addListener(new InputListener(){ + int lastx, lasty; + boolean drawing; + + @Override + public boolean touchDown (InputEvent event, float x, float y, int pointer, int button) { + GridPoint2 p = project(x, y); + lastx = p.x; + lasty = p.y; + editor.draw(p.x, p.y); + return true; + } + + @Override + public void touchUp (InputEvent event, float x, float y, int pointer, int button) { + drawing = false; + } + + @Override + public void touchDragged (InputEvent event, float x, float y, int pointer) { + GridPoint2 p = project(x, y); + + if(drawing){ + Array points = br.line(lastx, lasty, p.x, p.y); + for(GridPoint2 point : points){ + editor.draw(point.x, point.y); + } + } + drawing = true; + lastx = p.x; + lasty = p.y; + } + }); + } + + private GridPoint2 project(float x, float y){ + float size = Math.min(width, height); + x = (x - getWidth()/2 + size/2) / size * editor.texture().getWidth(); + y = (y - getHeight()/2 + size/2) / size * editor.texture().getHeight(); + return Tmp.g1.set((int)x, editor.texture().getHeight() - 1 - (int)y); + } + + @Override + public void draw(Batch batch, float alpha){ + float size = Math.min(width, height); + batch.draw(editor.texture(), x + width/2 - size/2, y + height/2 - size/2, size, size); + } +} diff --git a/core/src/io/anuke/mindustry/ui/LevelDialog.java b/core/src/io/anuke/mindustry/ui/LevelDialog.java index 180bc2469b..9ed61d1b81 100644 --- a/core/src/io/anuke/mindustry/ui/LevelDialog.java +++ b/core/src/io/anuke/mindustry/ui/LevelDialog.java @@ -16,7 +16,7 @@ import io.anuke.ucore.scene.ui.layout.Unit; import io.anuke.ucore.scene.utils.Elements; public class LevelDialog extends FloatingDialog{ - private Map selectedMap = Map.maze; + private Map selectedMap = Vars.world.maps().getMap(0); private TextureRegion region = new TextureRegion(); public LevelDialog(){ @@ -49,8 +49,8 @@ public class LevelDialog extends FloatingDialog{ content().add(selmode); content().row(); - for(int i = 0; i < Map.values().length; i ++){ - Map map = Map.values()[i]; + int i = 0; + for(Map map : Vars.world.maps().list()){ if(!map.visible && !Vars.debug) continue; @@ -59,9 +59,9 @@ public class LevelDialog extends FloatingDialog{ } Table inset = new Table("pane-button"); - inset.add("[accent]"+map.name()).pad(3f).units(Unit.dp); + inset.add("[accent]"+map.name).pad(3f).units(Unit.dp); inset.row(); - inset.add((StringSupplier)(()->"High Score: [accent]" + Settings.getInt("hiscore" + map.name()))) + inset.add((StringSupplier)(()->"High Score: [accent]" + Settings.getInt("hiscore" + map.name))) .pad(3f).units(Unit.dp); inset.pack(); @@ -72,7 +72,7 @@ public class LevelDialog extends FloatingDialog{ Image back = new Image("white"); back.setColor(map.backgroundColor); - ImageButton image = new ImageButton(new TextureRegion(Vars.world.getTexture(map)), "togglemap"); + ImageButton image = new ImageButton(new TextureRegion(map.texture), "togglemap"); image.row(); image.add(inset).width(images+6).units(Unit.dp); image.clicked(()->{ @@ -88,6 +88,8 @@ public class LevelDialog extends FloatingDialog{ maps.add(stack).width(170).pad(4f).units(Unit.dp); maps.padRight(Unit.dp.inPixels(26)); + + i ++; } content().add(pane).uniformX(); diff --git a/core/src/io/anuke/mindustry/ui/LoadDialog.java b/core/src/io/anuke/mindustry/ui/LoadDialog.java index a094b7d3dc..e8b24740c3 100644 --- a/core/src/io/anuke/mindustry/ui/LoadDialog.java +++ b/core/src/io/anuke/mindustry/ui/LoadDialog.java @@ -55,7 +55,9 @@ public class LoadDialog extends FloatingDialog{ button.row(); - Label info = new Label("[gray]" + (!SaveIO.isSaveValid(i) ? "" : SaveIO.getMode(slot) + ", " + SaveIO.getMap(slot) + ", Wave " + SaveIO.getWave(slot) + "\nLast Saved: " + SaveIO.getTimeString(i))); + Label info = new Label("[gray]" + (!SaveIO.isSaveValid(i) ? "" : SaveIO.getMode(slot) + ", " + + SaveIO.getMap(slot).name + ", Wave " + SaveIO.getWave(slot) + + "\nLast Saved: " + SaveIO.getTimeString(i))); info.setAlignment(Align.center, Align.center); button.add(info).padBottom(3).padTop(7); diff --git a/core/src/io/anuke/mindustry/ui/MapEditor.java b/core/src/io/anuke/mindustry/ui/MapEditor.java deleted file mode 100644 index 33ff2caf4a..0000000000 --- a/core/src/io/anuke/mindustry/ui/MapEditor.java +++ /dev/null @@ -1,5 +0,0 @@ -package io.anuke.mindustry.ui; - -public class MapEditor{ - -} diff --git a/core/src/io/anuke/mindustry/ui/fragments/MenuFragment.java b/core/src/io/anuke/mindustry/ui/fragments/MenuFragment.java index b6f6f778dc..550f442d7d 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/MenuFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/MenuFragment.java @@ -1,5 +1,7 @@ package io.anuke.mindustry.ui.fragments; +import static io.anuke.mindustry.Vars.*; + import com.badlogic.gdx.Gdx; import io.anuke.mindustry.Mindustry; @@ -7,16 +9,10 @@ import io.anuke.mindustry.core.GameState; import io.anuke.mindustry.core.GameState.State; import io.anuke.mindustry.ui.MenuButton; import io.anuke.mindustry.ui.PressGroup; -import io.anuke.mindustry.world.Map; import io.anuke.ucore.scene.builders.imagebutton; import io.anuke.ucore.scene.builders.table; import io.anuke.ucore.scene.ui.layout.Unit; -import static io.anuke.mindustry.Vars.android; -import static io.anuke.mindustry.Vars.control; -import static io.anuke.mindustry.Vars.gwt; -import static io.anuke.mindustry.Vars.ui; - public class MenuFragment implements Fragment{ public void build(){ @@ -30,22 +26,25 @@ public class MenuFragment implements Fragment{ float scale = 4f; defaults().size(100*scale, 21*scale).pad(-10f).units(Unit.dp); - add(new MenuButton("text-play", group, ()-> ui.showLevels())); + add(new MenuButton("text-play", group, ui::showLevels)); row(); - add(new MenuButton("text-tutorial", group, ()-> control.playMap(Map.tutorial))); + add(new MenuButton("text-tutorial", group, ()-> control.playMap(world.maps().getMap("tutorial")))); row(); if(!gwt){ - add(new MenuButton("text-load", group, ()-> ui.showLoadGame())); + add(new MenuButton("text-load", group, ui::showLoadGame)); + row(); + + add(new MenuButton("text-editor", group, ui::showEditor)); row(); } - add(new MenuButton("text-settings", group, ()-> ui.showPrefs())); + add(new MenuButton("text-settings", group, ui::showPrefs)); row(); if(!gwt){ - add(new MenuButton("text-exit", group, ()-> Gdx.app.exit())); + add(new MenuButton("text-exit", group, Gdx.app::exit)); } get().pad(Unit.dp.inPixels(16)); }}.end(); @@ -60,9 +59,13 @@ public class MenuFragment implements Fragment{ new imagebutton("icon-play-2", isize, () -> ui.showLevels()).text("Play").padTop(4f); - new imagebutton("icon-tutorial", isize, ()-> control.playMap(Map.tutorial)).text("Tutorial").padTop(4f); + new imagebutton("icon-tutorial", isize, () -> control.playMap(world.maps().getMap("tutorial"))).text("Tutorial").padTop(4f); new imagebutton("icon-load", isize, () -> ui.showLoadGame()).text("Load").padTop(4f); + + row(); + + new imagebutton("icon-terrain", isize, () -> ui.showEditor()).text("Editor").padTop(4f); new imagebutton("icon-tools", isize, () -> ui.showPrefs()).text("Settings").padTop(4f); diff --git a/core/src/io/anuke/mindustry/world/ColorMapper.java b/core/src/io/anuke/mindustry/world/ColorMapper.java new file mode 100644 index 0000000000..e73dbf60f1 --- /dev/null +++ b/core/src/io/anuke/mindustry/world/ColorMapper.java @@ -0,0 +1,77 @@ +package io.anuke.mindustry.world; + +import com.badlogic.gdx.graphics.Color; +import com.badlogic.gdx.utils.Array; +import com.badlogic.gdx.utils.IntMap; +import com.badlogic.gdx.utils.IntMap.Entry; +import com.badlogic.gdx.utils.ObjectIntMap; + +import io.anuke.mindustry.world.blocks.Blocks; + +public class ColorMapper{ + private static ObjectIntMap reverseColors = new ObjectIntMap<>(); + private static Array pairs = new Array<>(); + private static IntMap colors = map( + "323232", pair(Blocks.stone), + "646464", pair(Blocks.stone, Blocks.stoneblock), + "50965a", pair(Blocks.grass), + "5ab464", pair(Blocks.grass, Blocks.grassblock), + "506eb4", pair(Blocks.water), + "465a96", pair(Blocks.deepwater), + "252525", pair(Blocks.blackstone), + "575757", pair(Blocks.blackstone, Blocks.blackstoneblock), + "988a67", pair(Blocks.sand), + "e5d8bb", pair(Blocks.sand, Blocks.sandblock), + "c2d1d2", pair(Blocks.snow), + "c4e3e7", pair(Blocks.ice), + "f7feff", pair(Blocks.snow, Blocks.snowblock), + "6e501e", pair(Blocks.dirt), + "ed5334", pair(Blocks.lava), + "292929", pair(Blocks.oil) + ); + + public static BlockPair get(int color){ + return colors.get(color); + } + + public static IntMap getColors(){ + return colors; + } + + public static Array getPairs(){ + return pairs; + } + + public static int getColor(Block block){ + return reverseColors.get(block, 0); + } + + private static BlockPair pair(Block floor, Block wall){ + return new BlockPair(floor, wall); + } + + private static BlockPair pair(Block floor){ + return new BlockPair(floor, Blocks.air); + } + + private static IntMap map(Object...objects){ + IntMap colors = new IntMap<>(); + for(int i = 0; i < objects.length/2; i ++){ + colors.put(Color.rgba8888(Color.valueOf((String)objects[i*2])), (BlockPair)objects[i*2+1]); + pairs.add((BlockPair)objects[i*2+1]); + } + for(Entry e : colors.entries()){ + reverseColors.put(e.value.wall == Blocks.air ? e.value.floor : e.value.wall, e.key); + } + return colors; + } + + public static class BlockPair{ + public final Block floor, wall; + + private BlockPair(Block floor, Block wall){ + this.floor = floor; + this.wall = wall; + } + } +} diff --git a/core/src/io/anuke/mindustry/world/Generator.java b/core/src/io/anuke/mindustry/world/Generator.java index 9ec6a425bf..ceff64f2e8 100644 --- a/core/src/io/anuke/mindustry/world/Generator.java +++ b/core/src/io/anuke/mindustry/world/Generator.java @@ -2,42 +2,26 @@ package io.anuke.mindustry.world; import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.Pixmap; -import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.utils.IntMap; +import com.badlogic.gdx.utils.ObjectMap; import io.anuke.mindustry.Vars; import io.anuke.mindustry.entities.enemies.TargetEnemy; -import io.anuke.mindustry.world.blocks.*; -import io.anuke.mindustry.world.blocks.types.Floor; +import io.anuke.mindustry.world.ColorMapper.BlockPair; +import io.anuke.mindustry.world.blocks.Blocks; import io.anuke.ucore.graphics.Hue; import io.anuke.ucore.noise.Noise; import io.anuke.ucore.util.Mathf; public class Generator{ - public static boolean debugBlockspam = false; - static final int spawn = Color.rgba8888(Color.RED); static final int start = Color.rgba8888(Color.GREEN); - - public static IntMap colors = map( - Hue.rgb(80, 150, 90), Blocks.grass, - Hue.rgb(90, 180, 100), Blocks.grassblock, - Hue.rgb(80, 110, 180), Blocks.water, - Hue.rgb(70, 90, 150), Blocks.deepwater, - Hue.rgb(110, 80, 30), Blocks.dirt, - Hue.rgb(160, 120, 70), Blocks.dirtblock, - Hue.rgb(100, 100, 100), Blocks.stoneblock, - Color.valueOf("323232"), Blocks.stone, - Color.valueOf("575757"), Blocks.blackstoneblock, - Color.valueOf("252525"), Blocks.blackstone, - Color.valueOf("ed5334"), Blocks.lava, - Color.valueOf("292929"), Blocks.oil, - Color.valueOf("e5d8bb"), Blocks.sandblock, - Color.valueOf("988a67"), Blocks.sand, - Color.valueOf("f7feff"), Blocks.snowblock, - Color.valueOf("c2d1d2"), Blocks.snow, - Color.valueOf("c4e3e7"), Blocks.ice - ); + static final ObjectMap rocks = new ObjectMap(){{ + put(Blocks.stone, Blocks.rock); + put(Blocks.snow, Blocks.icerock); + put(Blocks.grass, Blocks.shrub); + put(Blocks.blackstone, Blocks.blackrock); + }}; /**Returns world size.*/ public static void generate(Pixmap pixmap, Tile[][] tiles){ @@ -50,14 +34,11 @@ public class Generator{ Block block = Blocks.air; int color = pixmap.getPixel(x, pixmap.getHeight()-1-y); + BlockPair pair = ColorMapper.get(color); - if(colors.containsKey(color)){ - //TODO less hacky method - if(!(colors.get(color) instanceof Floor)){ - block = colors.get(color); - }else{ - floor = colors.get(color); - } + if(pair != null){ + block = pair.wall; + floor = pair.floor; }else if(color == start){ Vars.control.setCore(Vars.world.tile(x, y)); }else if(color == spawn){ @@ -65,18 +46,8 @@ public class Generator{ floor = Blocks.dirt; } - if(block == Blocks.air){ - if(floor == Blocks.stone && Mathf.chance(0.02)){ - block = Blocks.rock; - } - - if(floor == Blocks.snow && Mathf.chance(0.02)){ - block = Blocks.icerock; - } - - if(floor == Blocks.blackstone && Mathf.chance(0.03)){ - block = Blocks.blackrock; - } + if(block == Blocks.air && Mathf.chance(0.025) && rocks.containsKey(floor)){ + block = rocks.get(floor); } if(floor == Blocks.stone || floor == Blocks.grass || floor == Blocks.blackstone || @@ -98,32 +69,11 @@ public class Generator{ } } - if(block == Blocks.grassblock){ - floor = Blocks.grass; - } - - if(block == Blocks.snowblock){ - floor = Blocks.snow; - } - - if(block == Blocks.sandblock){ - floor = Blocks.sand; - } - - if(floor == Blocks.grass && Mathf.chance(0.03) && block == Blocks.air){ - block = Blocks.shrub; - } - if(color == Hue.rgb(Color.PURPLE)){ if(!Vars.android) new TargetEnemy().set(x * Vars.tilesize, y * Vars.tilesize).add(); floor = Blocks.stone; } - //preformance debugging - if(debugBlockspam && Vector2.dst(0, 0, x, y) < 260){ - block = Mathf.choose(ProductionBlocks.omnidrill, DistributionBlocks.conveyor, DistributionBlocks.router, WeaponBlocks.turret); - } - tiles[x][y].setBlock(block, 0); tiles[x][y].setFloor(floor); } diff --git a/core/src/io/anuke/mindustry/world/Map.java b/core/src/io/anuke/mindustry/world/Map.java index 8dace847cb..34047f06d8 100644 --- a/core/src/io/anuke/mindustry/world/Map.java +++ b/core/src/io/anuke/mindustry/world/Map.java @@ -1,49 +1,25 @@ package io.anuke.mindustry.world; import com.badlogic.gdx.graphics.Color; +import com.badlogic.gdx.graphics.Pixmap; +import com.badlogic.gdx.graphics.Texture; -public enum Map{ - maze("desc"), - fortress("desc"), - sinkhole("desc"), - caves("desc"), - volcano("desc", true), - caldera("desc"), - scorch("desc", Color.valueOf("e5d8bb")), - desert("desc"), - islands("desc", Color.valueOf("e5d8bb")), - grassland("desc", Color.valueOf("5ab464")), - tundra("desc"), - spiral("desc", Color.valueOf("f7feff")), - tutorial(false), - test1(false), - test2(false), - test3(false); - - public final boolean visible; - public final String description; - public final boolean flipBase; - public int width, height; +public class Map{ + public int id; + public String name; + public boolean visible = true; + public boolean flipBase = false; + public boolean custom = false; public Color backgroundColor = Color.valueOf("646464"); - private Map(boolean visible){ - this.visible = visible; - this.flipBase = false; - this.description = "Test map!"; + public transient Pixmap pixmap; + public transient Texture texture; + + public int getWidth(){ + return pixmap.getWidth(); } - private Map(String description){ - this(description, false); - } - - private Map(String description, boolean flipBase){ - this.visible = true; - this.flipBase = flipBase; - this.description = description; - } - - private Map(String description, Color background){ - this(description); - backgroundColor = background; + public int getHeight(){ + return pixmap.getHeight(); } } diff --git a/core/src/io/anuke/mindustry/world/Maps.java b/core/src/io/anuke/mindustry/world/Maps.java new file mode 100644 index 0000000000..2fc96f679b --- /dev/null +++ b/core/src/io/anuke/mindustry/world/Maps.java @@ -0,0 +1,119 @@ +package io.anuke.mindustry.world; + +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.files.FileHandle; +import com.badlogic.gdx.graphics.Color; +import com.badlogic.gdx.graphics.Pixmap; +import com.badlogic.gdx.graphics.Texture; +import com.badlogic.gdx.utils.*; +import com.badlogic.gdx.utils.Json.Serializer; +import com.badlogic.gdx.utils.JsonWriter.OutputType; + +import io.anuke.mindustry.Vars; +import io.anuke.ucore.graphics.Pixmaps; + +public class Maps implements Disposable{ + private IntMap maps = new IntMap<>(); + private ObjectMap mapNames = new ObjectMap<>(); + private int lastID; + private Json json = new Json(); + + public Maps() { + json.setOutputType(OutputType.json); + json.setElementType(ArrayContainer.class, "maps", Map.class); + json.setSerializer(Color.class, new ColorSerializer()); + } + + public Iterable list(){ + return maps.values(); + } + + public Map getMap(int id){ + return maps.get(id); + } + + public Map getMap(String name){ + return mapNames.get(name); + } + + public void loadMaps(){ + if(!loadMapFile(Gdx.files.internal("maps/maps.json"))){ + throw new RuntimeException("Failed to load maps!"); + } + + if(!loadMapFile(Vars.customMapDirectory.child("maps.json"))){ + try{ + Vars.customMapDirectory.child("maps.json").writeString("{}", false); + }catch(Exception e){ + throw new RuntimeException("Failed to create custom map directory!"); + } + } + } + + public void saveMaps(Array array, FileHandle file){ + json.toJson(new ArrayContainer(array), file); + } + + public void saveCustomMap(Map toSave){ + Array out = new Array<>(); + for(Map map : maps.values()){ + if(map.custom) + out.add(map); + } + Pixmaps.write(toSave.pixmap, Vars.customMapDirectory.child(toSave.name + ".png")); + saveMaps(out, Vars.customMapDirectory.child("maps.json")); + } + + private boolean loadMapFile(FileHandle file){ + try{ + Array arr = json.fromJson(ArrayContainer.class, file).maps; + if(arr != null){ //can be an empty map file + for(Map map : arr){ + map.pixmap = new Pixmap(file.sibling(map.name + ".png")); + map.texture = new Texture(map.pixmap); + maps.put(map.id, map); + mapNames.put(map.name, map); + } + } + return true; + }catch(Exception e){ + e.printStackTrace(); + Gdx.app.error("Mindustry-Maps", "Failed loading map file: " + file); + return false; + } + } + + @Override + public void dispose(){ + for(Map map : maps.values()){ + map.texture.dispose(); + map.pixmap.dispose(); + } + maps.clear(); + } + + private static class ArrayContainer{ + Array maps; + + ArrayContainer() { + } + + ArrayContainer(Array maps) { + this.maps = maps; + } + } + + private class ColorSerializer implements Serializer{ + + @Override + public void write(Json json, Color object, Class knownType){ + json.writeValue(object.toString().substring(0, 6)); + } + + @Override + public Color read(Json json, JsonValue jsonData, Class type){ + return Color.valueOf(jsonData.asString()); + } + + } +} diff --git a/desktop/mindustry-maps/maps.json b/desktop/mindustry-maps/maps.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/desktop/mindustry-maps/maps.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java b/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java index eb6289de1b..5a21731502 100644 --- a/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java +++ b/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java @@ -23,7 +23,7 @@ public class DesktopLauncher { config.setMaximized(true); config.setWindowedMode(960, 540); config.setWindowIcon("sprites/icon.png"); - config.useVsync(false); + config.useVsync(true); Mindustry.platforms = new PlatformFunction(){ SimpleDateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm");

+pnyAf3+~*aNjLgrtFCfW;3nBBX)T{>kEHp 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