From 64439126a3d48f9fa95ee1bc7b6e70fc10e8957e Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 15 Dec 2017 01:39:54 -0500 Subject: [PATCH] Major bugfix, new incomplete placemodes --- README.md | 2 +- build.gradle | 2 +- .../assets-raw/sprites/ui/icon-areaDelete.png | Bin 0 -> 198 bytes core/assets-raw/sprites/ui/icon-hold.png | Bin 0 -> 197 bytes core/assets/sprites/sprites.atlas | 362 +++++++++--------- core/assets/sprites/sprites.png | Bin 79590 -> 80549 bytes core/src/io/anuke/mindustry/Mindustry.java | 8 - core/src/io/anuke/mindustry/Vars.java | 6 +- core/src/io/anuke/mindustry/core/Control.java | 21 +- .../src/io/anuke/mindustry/core/Renderer.java | 99 +++-- core/src/io/anuke/mindustry/core/UI.java | 14 +- core/src/io/anuke/mindustry/core/World.java | 183 +-------- .../io/anuke/mindustry/entities/Player.java | 7 +- .../anuke/mindustry/input/AndroidInput.java | 63 +-- .../input/{Input.java => DesktopInput.java} | 56 +-- .../anuke/mindustry/input/GestureHandler.java | 9 +- .../anuke/mindustry/input/InputHandler.java | 190 ++++++++- .../io/anuke/mindustry/input/PlaceMode.java | 193 ++++++++-- .../mindustry/ui/fragments/HudFragment.java | 22 +- .../ui/fragments/PlacementFragment.java | 22 +- .../mindustry/ui/fragments/ToolFragment.java | 3 +- .../blocks/types/distribution/Sorter.java | 1 - 22 files changed, 728 insertions(+), 535 deletions(-) create mode 100644 core/assets-raw/sprites/ui/icon-areaDelete.png create mode 100644 core/assets-raw/sprites/ui/icon-hold.png rename core/src/io/anuke/mindustry/input/{Input.java => DesktopInput.java} (71%) diff --git a/README.md b/README.md index 60f33804ab..4b00672d58 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,6 @@ After building, the output .JAR file should be in the output JAR file should be - + diff --git a/build.gradle b/build.gradle index e1039633e4..079862f896 100644 --- a/build.gradle +++ b/build.gradle @@ -79,7 +79,7 @@ project(":core") { apply plugin: "java" dependencies { - compile 'com.github.Anuken:ucore:a1a3bd9' + compile 'com.github.Anuken:ucore:6eea0a3' compile "com.badlogicgames.gdx:gdx:$gdxVersion" compile "com.badlogicgames.gdx:gdx-ai:1.8.1" } diff --git a/core/assets-raw/sprites/ui/icon-areaDelete.png b/core/assets-raw/sprites/ui/icon-areaDelete.png new file mode 100644 index 0000000000000000000000000000000000000000..97b95ea94f3b6ce6ed446a206a37c29c405874ea GIT binary patch literal 198 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f4u_bxCyDx`7I;J! zGca%qgD@k*tT_@uLG}_)Usv{rJp4>LVor8b9f3l@o-U3d5|`IbILX^!z{8Th_KU0J z%85poBBt?A?3v;qcjojaH@mQHC%=R-c088RWxk|q_m)%jYLo?=NRH6sW#(0@bNtVo m|5KdodGUvLNSrOFOapgVqO?`;3@%@w@eH1>elF{r5}E)j06b3s literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/ui/icon-hold.png b/core/assets-raw/sprites/ui/icon-hold.png new file mode 100644 index 0000000000000000000000000000000000000000..43e6c78ba1ab282dc5983fdf19cfd700f1b4f0ae GIT binary patch literal 197 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f4u_bxCyDx`7I;J! zGca%qgD@k*tT_@uLG}_)Usv{rJp4>j7UEwxe*=YrJY5_^Brf+}*eKfIz~OR`zc-T2 zG>WaavGdo5JPRu;Yy(C44$rjF6*2UngAv7J%<1Q literal 0 HcmV?d00001 diff --git a/core/assets/sprites/sprites.atlas b/core/assets/sprites/sprites.atlas index 7f61e0a159..c5334ab861 100644 --- a/core/assets/sprites/sprites.atlas +++ b/core/assets/sprites/sprites.atlas @@ -34,42 +34,42 @@ blocks/blackrockshadow1 index: -1 blocks/blackstone1 rotate: false - xy: 734, 406 + xy: 724, 371 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/blackstone2 rotate: false - xy: 734, 396 + xy: 724, 361 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/blackstone3 rotate: false - xy: 724, 371 + xy: 724, 351 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/blackstoneblock1 rotate: false - xy: 724, 361 + xy: 498, 110 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/blackstoneblock2 rotate: false - xy: 724, 351 + xy: 508, 110 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/blackstoneblock3 rotate: false - xy: 498, 110 + xy: 704, 265 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -83,7 +83,7 @@ blocks/blackstoneedge index: -1 blocks/block rotate: false - xy: 704, 265 + xy: 702, 245 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -118,112 +118,112 @@ blocks/chainturret-icon index: -1 blocks/coal1 rotate: false - xy: 702, 245 + xy: 416, 99 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/coal2 rotate: false - xy: 734, 386 + xy: 165, 76 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/coal3 rotate: false - xy: 734, 376 + xy: 224, 83 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/coaldrill rotate: false - xy: 734, 366 + xy: 234, 83 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/coalgenerator rotate: false - xy: 734, 356 + xy: 244, 83 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/coalgenerator-top rotate: false - xy: 734, 346 + xy: 254, 83 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/coalpurifier rotate: false - xy: 406, 99 + xy: 264, 83 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/combustiongenerator rotate: false - xy: 416, 99 + xy: 274, 83 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/compositewall rotate: false - xy: 165, 76 + xy: 284, 83 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conduit rotate: false - xy: 175, 79 + xy: 294, 83 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conduitbottom rotate: false - xy: 185, 79 + xy: 304, 83 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conduitliquid rotate: false - xy: 195, 79 + xy: 314, 83 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conduittop rotate: false - xy: 205, 79 + xy: 324, 83 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conveyor rotate: false - xy: 215, 79 + xy: 334, 83 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conveyormove rotate: false - xy: 225, 83 + xy: 344, 83 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conveyortunnel rotate: false - xy: 235, 83 + xy: 354, 83 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -237,42 +237,42 @@ blocks/core index: -1 blocks/cross rotate: false - xy: 245, 83 + xy: 364, 83 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/crucible rotate: false - xy: 255, 83 + xy: 374, 83 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/deepwater rotate: false - xy: 265, 83 + xy: 384, 83 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/dirt1 rotate: false - xy: 275, 83 + xy: 394, 83 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/dirt2 rotate: false - xy: 285, 83 + xy: 404, 89 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/dirt3 rotate: false - xy: 295, 83 + xy: 414, 89 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -286,7 +286,7 @@ blocks/dirtedge index: -1 blocks/door rotate: false - xy: 305, 83 + xy: 404, 79 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -300,7 +300,7 @@ blocks/door-large index: -1 blocks/door-large-icon rotate: false - xy: 315, 83 + xy: 414, 79 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -314,7 +314,7 @@ blocks/door-large-open index: -1 blocks/door-open rotate: false - xy: 325, 83 + xy: 115, 4 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -328,7 +328,7 @@ blocks/doubleturret index: -1 blocks/duriumwall rotate: false - xy: 335, 83 + xy: 163, 30 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -342,7 +342,7 @@ blocks/duriumwall-large index: -1 blocks/duriumwall-large-icon rotate: false - xy: 345, 83 + xy: 163, 20 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -356,42 +356,42 @@ blocks/flameturret index: -1 blocks/fluxpump rotate: false - xy: 365, 83 + xy: 732, 381 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/grass1 rotate: false - xy: 375, 83 + xy: 734, 371 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/grass2 rotate: false - xy: 385, 83 + xy: 734, 361 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/grass3 rotate: false - xy: 395, 83 + xy: 734, 351 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/grassblock1 rotate: false - xy: 115, 4 + xy: 428, 103 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/grassblock2 rotate: false - xy: 163, 30 + xy: 438, 103 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -405,21 +405,21 @@ blocks/grassedge index: -1 blocks/ice1 rotate: false - xy: 163, 20 + xy: 448, 103 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/ice2 rotate: false - xy: 167, 10 + xy: 458, 103 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/ice3 rotate: false - xy: 428, 103 + xy: 468, 103 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -433,98 +433,98 @@ blocks/iceedge index: -1 blocks/icerock1 rotate: false - xy: 438, 103 + xy: 518, 114 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/icerock2 rotate: false - xy: 448, 103 + xy: 175, 76 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/icerockshadow1 rotate: false - xy: 458, 103 + xy: 185, 79 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/rockshadow1 rotate: false - xy: 458, 103 + xy: 185, 79 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/icerockshadow2 rotate: false - xy: 468, 103 + xy: 195, 79 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/rockshadow2 rotate: false - xy: 468, 103 + xy: 195, 79 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/iron1 rotate: false - xy: 285, 73 + xy: 498, 90 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/iron2 rotate: false - xy: 295, 73 + xy: 508, 90 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/iron3 rotate: false - xy: 305, 73 + xy: 518, 94 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/irondrill rotate: false - xy: 315, 73 + xy: 518, 84 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/ironwall rotate: false - xy: 325, 73 + xy: 592, 238 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/junction rotate: false - xy: 335, 73 + xy: 602, 238 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/laserturret rotate: false - xy: 380, 93 + xy: 131, 8 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/lava rotate: false - xy: 345, 73 + xy: 612, 238 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -538,63 +538,63 @@ blocks/lavaedge index: -1 blocks/lavasmelter rotate: false - xy: 355, 73 + xy: 622, 238 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/liquiditemjunction rotate: false - xy: 365, 73 + xy: 632, 238 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/liquidjunction rotate: false - xy: 375, 73 + xy: 642, 238 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/liquidrouter rotate: false - xy: 385, 73 + xy: 591, 228 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/machineturret rotate: false - xy: 392, 93 + xy: 143, 8 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/megarepairturret rotate: false - xy: 131, 8 + xy: 155, 8 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/mortarturret rotate: false - xy: 143, 8 + xy: 709, 279 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/mossblock rotate: false - xy: 478, 103 + xy: 611, 228 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/mossstone rotate: false - xy: 478, 103 + xy: 611, 228 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -615,7 +615,7 @@ blocks/nuclearreactor-center index: -1 blocks/nuclearreactor-icon rotate: false - xy: 498, 100 + xy: 631, 228 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -636,7 +636,7 @@ blocks/nuclearreactor-small index: -1 blocks/oil rotate: false - xy: 508, 100 + xy: 641, 228 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -650,175 +650,175 @@ blocks/oiledge index: -1 blocks/oilrefinery rotate: false - xy: 518, 104 + xy: 595, 218 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/omnidrill rotate: false - xy: 488, 95 + xy: 605, 218 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/plasmaturret rotate: false - xy: 155, 8 + xy: 721, 281 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/powerbooster rotate: false - xy: 498, 90 + xy: 615, 218 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/poweredconveyor rotate: false - xy: 508, 90 + xy: 625, 218 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/poweredconveyormove rotate: false - xy: 518, 94 + xy: 635, 218 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/powerlaser rotate: false - xy: 518, 84 + xy: 645, 218 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/powerlasercorner rotate: false - xy: 592, 238 + xy: 651, 228 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/powerlaserrouter rotate: false - xy: 602, 238 + xy: 655, 218 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/pulseconduit rotate: false - xy: 612, 238 + xy: 661, 234 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/pulseconduitbottom rotate: false - xy: 622, 238 + xy: 671, 234 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/pulseconduittop rotate: false - xy: 632, 238 + xy: 681, 234 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/pump rotate: false - xy: 642, 238 + xy: 691, 235 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/repairturret rotate: false - xy: 709, 279 + xy: 541, 177 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/rock1 rotate: false - xy: 601, 228 + xy: 665, 224 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/rock2 rotate: false - xy: 611, 228 + xy: 675, 224 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/router rotate: false - xy: 621, 228 + xy: 665, 214 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/rtgenerator rotate: false - xy: 631, 228 + xy: 675, 214 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/rtgenerator-top rotate: false - xy: 641, 228 + xy: 685, 224 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/sand1 rotate: false - xy: 595, 218 + xy: 685, 214 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/sand2 rotate: false - xy: 605, 218 + xy: 695, 225 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/sand3 rotate: false - xy: 615, 218 + xy: 695, 215 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/sandblock1 rotate: false - xy: 625, 218 + xy: 705, 225 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/sandblock2 rotate: false - xy: 635, 218 + xy: 705, 215 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/sandblock3 rotate: false - xy: 645, 218 + xy: 711, 235 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -832,91 +832,91 @@ blocks/sandedge index: -1 blocks/shadow rotate: false - xy: 721, 281 + xy: 722, 415 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/shieldgenerator rotate: false - xy: 655, 218 + xy: 715, 225 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/shotgunturret rotate: false - xy: 541, 177 + xy: 722, 403 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/shrub rotate: false - xy: 681, 234 + xy: 725, 225 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/shrubshadow rotate: false - xy: 691, 235 + xy: 725, 215 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/smelter rotate: false - xy: 701, 235 + xy: 742, 382 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/sniperturret rotate: false - xy: 722, 415 + xy: 722, 391 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/snow1 rotate: false - xy: 665, 224 + xy: 744, 372 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/snow2 rotate: false - xy: 675, 224 + xy: 744, 362 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/snow3 rotate: false - xy: 665, 214 + xy: 744, 352 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/snowblock1 rotate: false - xy: 675, 214 + xy: 185, 69 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/snowblock2 rotate: false - xy: 685, 224 + xy: 195, 69 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/snowblock3 rotate: false - xy: 685, 214 + xy: 205, 69 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -930,28 +930,28 @@ blocks/snowedge index: -1 blocks/sorter rotate: false - xy: 695, 225 + xy: 595, 208 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/steelconveyor rotate: false - xy: 695, 215 + xy: 605, 208 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/steelconveyormove rotate: false - xy: 705, 225 + xy: 615, 208 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/steelwall rotate: false - xy: 705, 215 + xy: 625, 208 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -965,56 +965,56 @@ blocks/steelwall-large index: -1 blocks/steelwall-large-icon rotate: false - xy: 711, 235 + xy: 635, 208 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stone1 rotate: false - xy: 712, 245 + xy: 645, 208 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stone2 rotate: false - xy: 715, 225 + xy: 655, 208 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stone3 rotate: false - xy: 715, 215 + xy: 665, 204 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stoneblock1 rotate: false - xy: 721, 235 + xy: 675, 204 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stoneblock2 rotate: false - xy: 725, 225 + xy: 685, 204 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stoneblock3 rotate: false - xy: 725, 215 + xy: 695, 205 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stonedrill rotate: false - xy: 175, 69 + xy: 705, 205 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1028,35 +1028,35 @@ blocks/stoneedge index: -1 blocks/stoneformer rotate: false - xy: 185, 69 + xy: 715, 205 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stonewall rotate: false - xy: 195, 69 + xy: 725, 205 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/teleporter rotate: false - xy: 205, 69 + xy: 714, 269 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/teleporter-top rotate: false - xy: 215, 69 + xy: 714, 259 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/thermalgenerator rotate: false - xy: 171, 59 + xy: 724, 271 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1070,56 +1070,56 @@ blocks/titancannon index: -1 blocks/titancannon-icon rotate: false - xy: 722, 403 + xy: 734, 416 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/titanium1 rotate: false - xy: 171, 49 + xy: 724, 261 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titanium2 rotate: false - xy: 181, 59 + xy: 899, 487 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titanium3 rotate: false - xy: 181, 49 + xy: 909, 487 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titaniumdrill rotate: false - xy: 191, 59 + xy: 919, 487 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titaniumpurifier rotate: false - xy: 191, 49 + xy: 929, 487 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titaniumshieldwall rotate: false - xy: 201, 59 + xy: 939, 487 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titaniumwall rotate: false - xy: 201, 49 + xy: 949, 487 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1133,49 +1133,49 @@ blocks/titaniumwall-large index: -1 blocks/titaniumwall-large-icon rotate: false - xy: 211, 59 + xy: 959, 487 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/turret rotate: false - xy: 722, 391 + xy: 734, 404 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/uranium1 rotate: false - xy: 235, 63 + xy: 989, 487 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/uranium2 rotate: false - xy: 245, 63 + xy: 999, 487 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/uranium3 rotate: false - xy: 255, 63 + xy: 781, 446 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/uraniumdrill rotate: false - xy: 265, 63 + xy: 781, 436 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/water rotate: false - xy: 275, 63 + xy: 791, 446 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1189,14 +1189,14 @@ blocks/wateredge index: -1 blocks/waveturret rotate: false - xy: 734, 416 + xy: 734, 392 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 bullet rotate: false - xy: 704, 255 + xy: 406, 99 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1469,49 +1469,49 @@ enemyarrow index: -1 icon-coal rotate: false - xy: 518, 114 + xy: 205, 79 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-dirium rotate: false - xy: 225, 73 + xy: 478, 103 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-iron rotate: false - xy: 235, 73 + xy: 488, 105 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-steel rotate: false - xy: 245, 73 + xy: 498, 100 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-stone rotate: false - xy: 255, 73 + xy: 508, 100 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-titanium rotate: false - xy: 265, 73 + xy: 518, 104 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-uranium rotate: false - xy: 275, 73 + xy: 488, 95 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1546,28 +1546,28 @@ mechs/mech-standard index: -1 shell rotate: false - xy: 651, 228 + xy: 712, 245 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 shot rotate: false - xy: 661, 234 + xy: 715, 215 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 shot-long rotate: false - xy: 671, 234 + xy: 721, 235 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanshell rotate: false - xy: 211, 49 + xy: 969, 487 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1671,20 +1671,27 @@ ui/cursor orig: 4, 4 offset: 0, 0 index: -1 -ui/icon-arrow-left +ui/icon-areaDelete rotate: false xy: 200, 89 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 -ui/icon-arrow-right +ui/icon-arrow-left rotate: false xy: 212, 89 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 +ui/icon-arrow-right + rotate: false + xy: 224, 93 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 ui/icon-cancel rotate: false xy: 597, 280 @@ -1722,28 +1729,28 @@ ui/icon-close-over index: -1 ui/icon-crafting rotate: false - xy: 224, 93 + xy: 236, 93 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-cursor rotate: false - xy: 236, 93 + xy: 248, 93 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-defense rotate: false - xy: 248, 93 + xy: 260, 93 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-distribution rotate: false - xy: 260, 93 + xy: 272, 93 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -1755,9 +1762,16 @@ ui/icon-donate orig: 14, 14 offset: 0, 0 index: -1 +ui/icon-hold + rotate: false + xy: 284, 93 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 ui/icon-info rotate: false - xy: 272, 93 + xy: 296, 93 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -1771,21 +1785,21 @@ ui/icon-load index: -1 ui/icon-menu rotate: false - xy: 284, 93 + xy: 308, 93 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-pause rotate: false - xy: 296, 93 + xy: 320, 93 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-play rotate: false - xy: 308, 93 + xy: 332, 93 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -1799,14 +1813,14 @@ ui/icon-play-2 index: -1 ui/icon-power rotate: false - xy: 320, 93 + xy: 344, 93 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-production rotate: false - xy: 332, 93 + xy: 356, 93 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -1841,7 +1855,7 @@ ui/icon-save index: -1 ui/icon-settings rotate: false - xy: 344, 93 + xy: 368, 93 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -1855,7 +1869,7 @@ ui/icon-tools index: -1 ui/icon-touch rotate: false - xy: 356, 93 + xy: 380, 93 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -1869,7 +1883,7 @@ ui/icon-tutorial index: -1 ui/icon-weapon rotate: false - xy: 368, 93 + xy: 392, 93 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -1947,7 +1961,7 @@ ui/selection index: -1 ui/separator rotate: false - xy: 169, 86 + xy: 179, 86 size: 1, 1 orig: 1, 1 offset: 0, 0 @@ -1982,7 +1996,7 @@ ui/slider-knob-over index: -1 ui/slider-vertical rotate: false - xy: 724, 348 + xy: 169, 86 size: 8, 1 orig: 8, 1 offset: 0, 0 @@ -2084,42 +2098,42 @@ ui/window-empty index: -1 weapons/blaster rotate: false - xy: 508, 110 + xy: 704, 255 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/flamer rotate: false - xy: 355, 83 + xy: 167, 10 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/mortar rotate: false - xy: 395, 73 + xy: 601, 228 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/multigun rotate: false - xy: 488, 105 + xy: 621, 228 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/railgun rotate: false - xy: 591, 228 + xy: 701, 235 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/triblaster rotate: false - xy: 225, 63 + xy: 979, 487 size: 8, 8 orig: 8, 8 offset: 0, 0 diff --git a/core/assets/sprites/sprites.png b/core/assets/sprites/sprites.png index 90d1fa32f7a4580c052b116b5d36188700bdc051..56c1f842b0148af750e65b4d9cfc6f794353b14e 100644 GIT binary patch literal 80549 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 Lb*%WP?;rmM;UFLB literal 79590 zcmZ5|2|SeD`~G!SoZMl0RXUQs9(GW04?%Q z8o+=?{yNxtxC{UoXk1je?lCx5Y1@6M$4#_c?WM$uGVblN$qH%VlY3OZXP;Oge|zKl zlQYE<#T-21!L;Yu6ZRIRJLv@NOwRWB&M2)X?Atv#9`JEe$ImJ zf1dy_1W*ZffHXT$X*_LO;i2oh(s(@Pqvnu}y!w)NeBwS1usi!duYE&c%ch$pFzR}X zoD1nFGhkm3Ts!Gcu;_4kyk$7b9~KKO&A+jicIxkpzf^SqE3>rp7dQ03PXlpa2Gmh_ zCe`cSTGbWIz>&t`lS~KT{_8L9qyN6k40JQz7xTAef&1&#Xt53`yuikgYphV9-|A}t zsD>HF%~0xfVz}L!)!x5a8lB+_`sV_G8OCRmS@I2k0&x})%Lq{a{+If(j-*uD$B#E7 z2f+=Q!fIYwho~4C`!_LiPH{q_UBy|s<(GXYrQ$Qb*9LOfU!<-~H21jm-8SrN|C-GL z*oi9PKo<=dNlp)NkLs$9KdwGLl)S}%Zb^}g7`KlS_bv4a*~!o4WROp&362;+iE$aK zchb_EA}A$Ztz36@81r5bSjbAP25nc>oav!gq<)Pq+_ zt?Q6$3R6UrsNrbvfiM{Rak|=X-tD=1bB|*cgi+g03-QqkqBMTNWe0q`HDX`^_7OZ? zv$=>phO@<(<@UQMxK5e*pTU7U8k;Q)866aJLM0q+TD_AFEiDrGZ+|I8!!N*C-x*|L zM5mx{)L=e2ubyyRS$3{1PbT`sh^bV$wtxK2bv4RF0spbTT(l#VI|-B>hAU}=K(*jU3lz+F8 zor~mEri+4)LIMAL78`=bJ`clj1E@y1i6P7qXbE6f%7f)@HiLpCs_JGR=^Hg-=v+mp z(oVy<`_7+`Cnp<1vu~B;`$0SJ!0B5ZuZBtq?}Kl4dy9>vvVa*2UhpyaO-B2y6Cp3L zR#~j;J~;Z%#gMIU%M66qTJ305RI#^E@L(=sSh)jWR(x>mM8Q#wEe_jgWDwWp$KLkL zaMoc@wFoup#Mw=$Iwdt|X}a2W&&5lCVWt-TXGp9C8fy&22R{5um>2vroF6Df>lQXuvIu+H(d14S%`ha8ja>Ts_mY2ZR?myI$b&g*saEfzc%gui1F z19aKIu$(O|{FdfF=O6(>VZI3ZMGLZ3bTh*zmiet{wsdKVXb9)Z?i6G)*lQW5I?AHP zVte+0x3pmwl|wgH3&Lshg|_(_{YHh-Pz?vc+hx{?F_I9@v~l zjXmSYm3vZUEuI05RrV+vD^|Fqj+bp9LB&oJp7FEd!G^Ep2|;5ltJb~xklB&;JEpm@ z`k*cTVD4Q(_~3S4agRQfAK=IR@3ORvWl2LOpAg!x?0b57CTI3#F=PI7X1GCR4G?GR10H@~9Q4_UGb6!2K0??UYMGL+ zv~6^;F5mk5s#FM*1YXcS^y7Q@nEd#hQg-xSya3td9dV!f7LGXlX-;iz5E- zWL9Ls!K;i6oFs9;D+koO`EL+vgkUb>DN3}%9v%LfE5v*VFNEbj_IQjn<)S{RFJFYh z!RQz9?+DCrsx)|c6-p4q-M)Pr$32j@$5*kB5@Rpzc@`8oCxiJ5#27S|u)x<7w(!}m zW$;^!Uhh?d)xNeq;=UwiSXiJv%hNsnx?}UHd>ou)VuiowNsG`A!!} zv1q{LBgG1rjYxx*Z`=A=1|MuTjYh13(PQhym09b4^EVB8=i7%eeY+o~#qE^=r;dUD zyBF`FuvV+AiElTZq`-rZZ3g=0iz6j>K1eo$61w%khi4@}M?=cVwtPj)5*r5~Z(0$`cVcJuZ>(hQcItjiEuXMs%AC(dd z1L6PNoID@cdx63i$KDak0yk3@#WHYPUpFOxR1cp~U+0s)H6rWq!q2jE=UvkA^uR8w z%;L7wMV8H0MZQFXBJWLKJ1T{~heKN-v&^d1PWdc+@obQXkqTVmO8dFMvU$z-m=s)F z!MSZtER^481#Z;-H^Xp)R!cyNY{yCHE%QJ7@>SE|WN-F5U3FtzT(Hb*+8fi&A~feo zeLq=kY;C_a_ZZ@Eh0O1V<2N7voA`C!LScchws(af8jCvB4bmA_&fj3$sm|+^N*AEH zI|{~P;_$`fy9!t}$ycyR>^6T=Irjz>dO1{?#RlYed&fi*vzfdh{;Z|B?zW;l5 zG_%0kdqe%9ut$*i{q8gChNcxHJ=By`)16+tT3wH#`8-6KFi&=H5<)PaonV>CFMBJy2g3Gd2JB z9i1O|a zcI_G}K?KPz$lurk?Wy&LXuw0;mpjY!ZcRk-g^tM-4%0u%@=U zz9RQid^M$go)FQ6@}c=>)XHvv=Y(DOK<#cknMUG?fi<|HN>Nm?JT;pRJBd}J{{_5Q zCpi#Co4!?8>ABq^}u^ufHRA&UkALQXmYU&V9o z)f{=R+UB7i9OD;XURa=Xck70X$C8=M-G+TK4*lY8Q}5ho3{CjYJ;;uccTF`ezn?KP zGt=qdP!jRbuagpIXkSo35K9?n;r9=Y@zjwnKxJ{2A-4q%7_K z-7st=1ro!0L4dChH<*wFBG(B!y(J&hO}jtT9@r8U6|G{^xt;rqqYp5|?CroUVBG2h z%IvmY&Bs^>mDrdg*tS=#{an)5mj0AJ4U&{wyoe_s59mtMHq6P%F10jy(}LhyYMa1fhTN#fh04{o zb2C3em3xyd2On(A8Id*r+49mU&_0=C7{LnUp^AwE?$oWwn)vWk<}t^@wFci`Eb#Go zq7D-|=zv(Jw$k>+-Bo+W@5k`Z=K(iThQ$m4b^pgg@PgVAqTqO-;6@4~9u2yNg@}z4 zx=E_GZ8zO@Bj~EjPG6#A7wgHqa+E#<#~HDc_kUhgZa{Ec`uuzeq1WnPl$v0~4BybB zDL8YO8Ft|XJ5n<|+1uaC*=Bw|Z?q$?c<`H4e!bEj53`4St>V-dmlkMtpSGCgi_C4T&IpAovY&wg?S^h$0$m zuG7k*vGb&8_Ltn?(Q(!ZT0b`$0&+n2kQ3%lZ8Xx38JfJ&qe+I$u0ml$Hp!+Tq}Z_s z|6|%7TiK+pA;|fXvXJ8PM?1S$z6Re~H#+?`_3vEIhJr3OD;0y`*Xh z2g!1)G!2&jj)DJOM`LQhG@-hB=X=bDsx4f~%}|Or66v~-XZTeJtRMT_j)q0e$KIW+ zw`p>eGPcgtbsx!TrVd=JK=4V(($ESm?F15={iCKJZCy4l`pb{KZ3By>TvG7)Ao7ge=EdY65-V-i1O&;#?i(bsTHNE4?8W`=qS zK3ct^wzLJ#Y#zV2viW)&HT`-popt@4l5hDPmA3cW$4lI8R?bQ_(TYca6~D=H$31W~ zZHG9ZA@W=oRm}VTjQ-Cm!JWLoNSl#?dAs^LGjQt5c_N+zE%oI2=?A$qt+gMGH!&hf zS>7xQ+L@(xCd+mVxY15XW?zx;FVn3025#|v~f=dYOVTx%ua z_EOUfxu`C&(e!v};8APJOJAUMoaXHr-RSq*4j`&#t~3BnV(H&SYq5j5t0k8Sq7wko#4PJJHIKJ9X0OP*Q5i3j>a+kn0hV%!WamA=lo8 zYU(%=k7x4aSahc^e_2y{mF?W0Z$8s@Zm~P>qlsw7jSDxc*#uP6h4oU?Q?5j2_GB4m zH4%$kCStVgRGJ^iczr$WHe2dD^Hi7q&i`^4{E`RkMe4CVNR2ij3q-OdfXAB2Bs69z z&w@v`Nw}Z9FZL=+hp)AEjs%!qch6()`}xhAYeJ=m#y=B;^~*Jb%P4q?s7DwoujIXU zjtN(I%S=Zan}kMYIjmy$eIY!?^^=g@XC>!vI+az+!-7TQ4bqN4-C5f=N_LsQHZCU1Qzt;V$WA#mW@}VTcMK)XLD!Uw zTf1xp>E08FK?5gNDe!X*m_(xSi3^MLJRq)2^Js-g!@65LE;+trDrZ|pkI#e8DO8H? z=sjhrnIi%Fb@?Oz%>ihHcCwNLhaKX-TQ3j@GB=|GNgjM321}kwu2z@j>9QppLBVR& zl=KwKRC^T0<}AMAb$iAWdw&)f!63p%`9N2y)(>6J|HhMPQ8a!w$I$w+AsP?+$#n-C z-@Lrt^TH<2c;necxcQA})r#b*Z2`F>iGqYam3Jj2;kl6xd1a z2pzm9#qzVjgx*c87DVG)c-*tzym`~f2Lu;B$u1buANJK#Tpw4Pi8l0mABS5f^lUR#>pGFv zN_Mv2pn*0NrU5+n03M*?y7A>aY2YBk6?Se*P7EXF&!hi4h2cdg(Sn_26$Dq`9gk0{ zA=fV&b4^gLPj#l0<8HM?NnDW16}Nov6yO>^tmL_JS4);gvjDWWJ`&aIUN{yZGNhLENtL;)i~lJzPvTP+zEsyE z9Vc@P(=K&)^oE)U2aY3Qx2LnIu(zitWngqPSL4`$U)xy~^sRAmhmiu8tH`2$Z;|WN zRiwyW;Jr6gthIO{{`N#%#acw<@Wt6HC3sKLM?hZ znBM+1yd)z;UTRH7_gce1q4h4Gely?fVJ^exWY;e5AFIgENt^QS3%5q%Go7=I3RPpT ztc?cl;v`23X*i6cJ zVTmt2A)Y^EZdz+~`1^jVmGB}D^hkA+MfE;Hm^#IE^TAr&4P{A?svVyzpf}BPtWz?t zaLc*?GJB2_n!j+=yXG;Y@m$1Ku7d0C@})bjkNFu7(+A>&5MJ!ANcQbd1~`6^_QYL^ z)-K87<(Bp8X9Y3GB-!#}dDlss8yNxaBGdzS!Spv$+f^<0ty3h876TR#UlF{MeXFb> zmD7aNK?7?2>3c1zi2*8W69Re1Wx%wD;EpHGST>a|y?)d~MTzRx-2Lovb%I(pFO+Go ztsPvNq7KJh$eAhXGg%F|pJ&Ubw{a|dXJg38`y#um3i*b#_ATk_t)qVDv}AO;ymn^& zENW4{xYf(*(i&B3qp`ycWL4dalCKE~&iN#vBpVB4%(a!Xu}?LzzP za9l!sh)4oMVCMAHFA=YsZ+|KLy<%7~DR4fO{frbSm`pJP6-AyN;}?B(HAo)O7c&lS zN2Y+V(LKY+{#n)s*W(%ABBnAj zHXV+B&y!uG_R9gAccnfP7wmMKxn#U`Lt{QoDix6)&d+=Z?dx-1jyv@Fhg7Q0QZ;t<4@-8vQ(u=C7UB!a;y3ep_k!9M`JFAJ;8}&s`18 zA`>_5mDaoUj7iEH{T4AFNu5{3Y&pj24wzoIZhQMJ*^QmD|J&kf<>qMDR}c$H=Mm$) z7mj>i)Hkv~4_BH!<5k`~()uJTzHdCfiKl?Eqj2#8x$M4!?}cimtq4owIet$ZU8Psc zOu6v~>$tsjQ+J>IQ;>ZnxA^++uuZrOzhx`5YVCX>iB9gX+L_6+KQT0pkgKJER&jd< zgoyoZ_8T`Vz1*@LPi<^hsq4Y&T~Owv$?by6gR1S!e6-?!(7#tav@hzTSW>dTI5@}) zj(uv5nk0wX?+w^1GwUCv{WDrkb zM3SZ~7rU`V8dsa{SP&U!n}r-8o%rQUIf7!jqX?@V(8{#Ucj|< zJ^r{K{CB~1HE7la+}b5%r09X@YJ<4|8hhQPywnm50EVM{P%30*5^)Mu>UF#1tjAKq zS?BSKEVei6bJu0i*f7R?N@YEw7-2YI7Fdnnw_D&PBfiEo2I7R45J7e}*<=559)e&w zV1$cj3iYb}{l@+6FRo|B^Jg{hAJhbr;3p?&ObDZ5!uj!AQYoGOl)7SKhPw8=NxTg!N8E)_5%37I4g*k0VTmb54 zFhjIPl8ih%A~8y_!-=4QHvKscVcmm4Ipz6M-%oWQNu#Ovlm$-FX6|I9Z3H&*zR#5D zu)Lrk<{{^diaELSVAvfKRkkR3I{#FF2kO?~`a-ZQ^~PKwginP7j`~A?&OIu@88sH{ zO>Y}F(%;_vNX1{#p34>}RCu|(yD?R^J?W*x7xW;L=U(#>Gb?gQAkNk6bN@z;-PX_f z!{6STwyz~YG%us*97B&D8~o8}FC=^`Zn8zswy1PU=1buP^>I_JGaVU8Py>V6vT4eU zCnceWHcS-(Q(_fM{vqNC3gEbQ+*%qcj13eC;8fIv$vLb<+V?lmQ zn_m0{a0J)us*Tq?aCIrPDQs9Ycug$~bmi&geLE6SzzgUoZG6XAi|Q~wE=&1o|d|9+SX|OS*)+M zgFGW)r~aKZNy6D;`UgGsU@vVE5w>xsD}84vXH`a?7ylZ zP)nC(qSFa(EKRpov0=1eBCg=#2WX#k34wFdTpsu*()C}=KgQvZDhL!**foDKaT>?q+>pLKJm6UQ3V1KFw4J}RKbk`e0I`AMa4%Omas z&h5soS~>6I8F{{lTWp!Iv#MrOF4Y?f`;fy}yhdff#%Np^`4m$C%5=xx;nH^&$Q4#@1v zXo^z)hsN}cd6BqXGK(Zem4mmseZJkOi=hcuCX z2te19mTNk?CruBv>r3DaF&@F4L8Y>H`JXf1^_VRv9 zWP#gK3NOfe?_A^tT6Tc>7x(*J5`U!3Me`km9ZJ_?w^8c%GZn0V!ILC(^=-PqqiMOP ze#igjZgvZdj)Q2}*g%V79kLs79R)Ufe7~GXW9()?Tf{CX7rB-3RwZgJ2PiX969i%A z*e$2WEch1N?|Fs`h7Ksq!u5ywkDpmxefV5QKh%eur;kwWJIjXDc;1CWQZMSNQ!J_Av7n~`Kzo+fobV|lkHC9c5v=u6|O~lU*o3MSq#D*}gG9bVKQR)A14!;Qp zBU)HqPWhC5^_=~co&Dwvk5_VKf;31(G;Afqi|5*J#<3);vWN#d=Hv0__FIAu{^^U7 zKy$hMF|-c>Q#$&;y1|W|CX*r`*T{m2o&?9B$OoC0@6MS6fKUSOtL2V9Or5c-q?g;f zd-h?6Bg|lGF8Z5VaK*NL=FyIKE1#P@X=*(WXE#EaV8FGFWTr;S;=pAnb+@WkE`~4{ zh>qig9!^+};G_3!Td!0(M{i46n=ZjE=5RhzzxK0%mi(&P_1V6@4rzu`LdW|H`@bC} zRf@>hnlh2dX$n;R0$oHKnpLS$%$=4CwLGl-d|U0XXY$iigDHPaxfP1(ZQv%xWVxuB z<#Q#?!<>?mPx_4dU6oDb(u&0!!PsKW^Zh4%9_5ykY-_JhU9CGG-(Nmn#oHvy_4CmN zi@kb-Tsc28e5D@rf3kf#IHZXBGu26HaP|J^7#|?)4B}jcC~{g`djqL8EWn5kuB$ls zJ#w7TTc1sX@c*Ts?8Bv@wfiuiYTI?{Qt+Z@3$!_$ByvYXbfD_;`Wr!5W7oq|;c)Vt z;rkfpFGVWjrhK4Bo=UNyHqIZC5k$d5e8GT$uSolB6Thn8VWXuhO^&CA10{L!!_Pw9 zU5I-`N%6{V=k;R1#V#OjD+L_p5!*#@nYUr_$);TGWJ}pWV|T)$8VDPUe2UVI0fJ*j zwa53bI&U)BJcBx}FoVKdlZz%iCSMGTLk<6gaSUzskhAM|H2#Br#Eb|OB|uD_W<9~0 z{^s;;V<|d}>OENf>dg-qMb(f(H8DW8pY<3N_0$Q7CdCshG#RS0sen3V|;`ybU)_HQnQwv9T&36%lL0g^v2L*ngByAwH+}r8B4Y- z3iP=LAIu1-Xq%{OS@(PN^d<}Z@R8aK+gvsaJnx9idvQ)zjNk8z2t_!{@8v3z!XF1x zM@mM=hJm`k^lctc?B@W~%Vj}7t=apwA>$CoZv+l55^^GsU>#lM9>_}p-e4{)E!KHV z&z)u<0!9s)_D$%$e=-> zuPi{2sXj~3VlQhw{cmuwkD6dhqkd$&*}6Dm(*S2!IqFqpNc(G8`#y6{V{iL-dSRg+ z-HWwZS=TjXK@wqZYKqMag>MknDQQPk_Iya^ORoOxjex9YhrQGrmwb5Z@>J<26q6O#Jkj5cR2CBb0sNK!CZbuX4MGz}gNCu=fCT|(?V?M|^n@j`bJ*if*kWiFf`4DQn8vzf)xn1%eL*Mcy* zrz2ba3NE9AaJDq!t-|0Xf-xSIk;TDfJFss6h}S9W@qt*8aVnlEbG{`|Tci2w&RUth z+3u4Cpq479z@(2aPM|o4emlkdNz6?MmX9G(mO~IL-ku&QN4cA7v$oNb>&>3ji-T4h zL6YFb38?xdewjkHC5PVCP#IE+NFBW`KvKIJm2z0YLzC|A_Y$jVW#65TXI*{<3|4xV z2$Om;KYJHVn@aqZceK;REw%@g{`K8oMslq2czn0z;B;I|ys~M~EK-TxB*vX_KJPeC za4CrT!JiLhRik915Wkf78?1yB-(;%DE>(`w?mFY62mAW^;hGkJVym zvQK7vfZ14El5Q-*(PBwucU7=XoYd;GO1){EcxF9@=6RK7bKheQI2pn+$K;76fuGaW1EHI*^Dlwx#BDZk7wkjC`Z#|*@{ta$~cz5*QiC&zZ)^RBK@XKJtzz`i~;)yG3wdBEb3nAvvx8kmonp%-)>08vsE{z`gY(qrWi`y%g5MQdX+O9TyoCRp@Ig&d`+mSpm!wJb`96dw-V(vOZ@ieIj z71S>hZCqerUbHujuDzw<61vbjJ@FzhCh5iWL$Kt*pM}Iu%q;ZV!BucJOve zv$13!|G<75{QThRK0a`k9agu5G9*Fx8&6`xrNZunwr|htJoeGI+)Pm&SqWE5o=B&x z9xzF|Izrk!9R7xQkB__mfX%_pL&TK!L(fJHV>hc3rZ?o^f?guD-U~8I z9l689=~PWF_S&9^Eb35nn|XEi{&d*PuV3HTXaw&Ie>gfJb7r|#*lq4x*UZC5+F9QG z9;%KbMEVEWI8CjXO_+;HIMkoP0@EKpbKO+_`}74F|98DVstiZv+LZFDJye5MeP_>g z_b!}vn+#N&-64(9D|Z|GAu`&*A2@09Ydyc_7vH9701S^3unkJ}1qb!K`%Zw9{^pZ>kF{g7@}yF!AM(g)pn z;8PjVG3!rJ!^HUz0Xm3KjPbQm2^Oy|vkWP>XcJ%mXA5h~T+g&{fmFow?gAS%JM+AmY%<>6FWklbLcD;5ll z-`p|XkjP@zp{ahs0*d@PPS*(`ZY}(H^`KgrG+uoR zs>V+%aQEGuxazT|7!-Vx_C_7$iGA+3kI^)VM`31aJNqD*KIoO_MDtgvvY6ozBE#N& zLo5EYA=HkEBf^Lqe4urH$u_Nelv(mQ$d92z&TtT~v-Yxr2cwptnBA@?d3l3z(H=FH zsW!UIvRfYZ$PxfX>Fk6oZY^HG>dc;m!PLfMLI=c5vM=;}DleBF8XA(xxT-jHJ;Bn| zTZhGaGQ~gTg1;j3Ma0jdZ-qFhej#Pf&vv)*40x3gm%Z zq20|Wziv+<3`WSqP2ogNYEIvxiwRmBTS^zW{So~rf&u1EB9>hOf>Hi#YAy7t+=85I z8LqOAi|Q)l_$zn#jXOfi))SR?+Wq5ACM4A$9YU*I`}zf{ZFl?=Wj^R2BjRmE$~g6Y z4$pecgL_ff40$GlOdi+4*PJAm+IaOL(l5Rv`_JE%uP%L0)?ohQJg@u$(xo5= z4Ir8{?l$!3jh2K1(?ols=ucx*DBBOk%rI{~Lv;QCGkm5?zQqnCJ~kU8`E>z?CXTUA zkWk=vYRPeqS`;`FPpOLEArWqWcOC1Hu(Naz)o*Dt$6DnhG3?YwW_>*X z)FmZHhM0laQ>a7z>eKVga6~9&kiREhfmH9erCjMk3lAI23nT$jI4+I`KZ{)CVwyfG z;oj+T(JY@~ht^cbflap}A`gZfL>GEMR{<$d9J8y2*vc zwkSPB!&)RnN_S@G5c(BS*ZojXpVwhA!bTNDslw9G-9+q7H()3a?w-dVF@2|Ze00?+ zFb&y}sDx}iaA&wL#s?C10Y4?^FiTs{HYlHzSK80Vf1!HvX`}X)0R>yIlwSP;gf)Ud zLF1IaoN`%ZNi|3o2Q#Cea@b*`aqWAo5@5~wYMjEaT42U-WMO};LIe=nUmH9LPFUc0LLcQvvODMjZjQ5at&&43fZKl^T2zj^+kJm#x50 zeYAKk<^d0+^IQ^k7GUFsh=OJD(UH)L2->A5X}F|1Qvbunp4Z@&E>ysYS-{w6-BO{j>m<2C2>Vv{Q__1u7&(Y1Pz<{_Cl28` z$CZCpS=oVFjh9jSdtnU9tRq3C_XKF7y(dK%&~3#>KF%%~g-(dUgMj8*HsDn0WlUac z;aXqJV)&TK@OcN@6HPe?IE>howG1yTAv`FKFpivw?jg?`NrWWo<-K}hg%=9 zj%JOXahKd!_B8bhp4rtAV(vPBytnb*=H=~A4|?vtRYpL-0&zS@Y{pP1PkCoLN#^|& zkG^6+ELQRtXJA8>;9UI(<*Jq-Xx*Hu017KO>I$)^FxDW0b+5Lb@~<+zcQ=*r{1bAG ztmnt9 zpt61(w{l#jS{NeVCp3#yzipqbdw+0UZi?h82ulNpE*e1u5E(d}%`rCM|IB}7cliK7 z2;BU)sNhK{hAS^^t~`j6)ku;C_bQgZmLn_L)^>IOecx^&qAEAY)Lk}JMI|ieJnDHP zdb1nBh20AypK^wAKPA?e^sIYkmC3a`qZ$~)O9e&qjr4|DeXMP(b>%1HMx<`f50zrw z+}&q4YimqbTE4N&yh}5Fz1ei|B;vH{->}?RTRY)pHGVgAN^{l9YUd2kl;gk@Dv>#R zTv-f-2|S__77i5JO;1Nmv;H_)n3p95aU->=iQl4cRsxP1fm@AizwM!SduzZuTnPLS zqppbAKPFo%tw!^HZyzVjsUf`;7WE-+_dx&3DM7?1WO{Y0p?=cs-r|C%dd`p!pl1B- zk>WJp-9+3%Gg9iE=`9MNLet-IqUm*N$EMBA9*{otOoG&~$SVWcZM^^SsuheWC!aj8 z{3^}Fv%M*u993{DvmYO|SobaSfr0C65HIvqPO~mpy`M?&?MuG6a(d1nw5;63_BjAQC z<(S*z_yyzsYWKvh1EfX8-oyaPPMYIP&Lh`sA$*jCh5C!$V-WM@J=}7Pm`jcoNH>~D z>Q)~b|E0Y;!6YMq_#EHoA7`3UirXOB&$MJIcOcrM1ZA$BqRHefJg6lAH~O|z4Ywgk zz`Y^GQ`I}~|r8~0S2r^Qv(pn<5j}*wIdpK2tpj;@7tS;9q%9F zod5el?+Q6uNIsK*&a;3r9Fpja3axCPMgx^`UUVU*YP`9Y|*LfPW(w!{!-*@kCI#W*YoSXv_0=xjYBg{wS|uG0KqlU zJA|`zh`zQ*QFuWMH5M4zo*7|nn(^y^8Q7{()a<8U|ABPx;QdW`!P7E)O?4YE8)OEa zxXlU~g7q~Nrh(Qh7qKwpm{juq{YbEdM{NA05h|+mCp)Ix$Ab-WzpQ zc%?$zZwvAn%>;s)N{1YE>6|0t>SXB7Z!FW53s?LISSlqle4krWxJEKnP$CHZT$ifz zCkPht=%MUFCYnIP<`DtFD*+tXKxoz0OM+N}Q#yjWy<_o+JFP{DlLaHdBvQ?knUr*a zi7IoGe}x5@q{?PigcTwDE@fis?p4Mpq>~XbR0~t|ew!GPT5MMiM~K2x{g0U8e8))& zQtq~ddke3n^vjhDY%ocIn%YWE71=NNVYwE-z%kOD=CW5SHcW1lMGD+{SI{z}2)hua{ z>08s{e-?$&?ANQeyMt|)ZC7pr;%QtBKEi@q^ovWG= z77g_F_%$XV4O3jIRy*2vfI1|0o;=G8G_KIX)nc(A)QR*cAzs|vKSshrbtVHF#3g#| z+}^|Yy1|kb5SpONN4&)Q@pJX!PZafdGyr2fdCq!P6D({_h~bPH$rGGl^efUyfI+%- zC=J!pAfWp}-);AdSf{E1fxSGEg0D)L$#IzsB%P4MipGuNxYbYo!oTnIufX@30{Bun ztdkV*Kfm=O|DiA_;{g@Hbrte6Vo6X7MS}%S&v%IkM)(tfJ{5;Ibb|*C(_C(F*T|?y&LyDY=&VoRk zWekImJYsKqwg05SH1Wt2Z6#cUa)+Uf}wXAk^XM zt#cjw_8@SfhOtL^dB0ta+BIcMqu~!YL=igwy6MSt_INKc(lO_Qg5Nm$diZwbD$b~1 z>Zq3ihrPGe?5N@O*Cz(@ejrY)o?l&QJ!P&_AEBkm-m;l`#lr5B^d%XHfYW;!33@^I z7WJ$FV)Ux_dYgwM&&v2d+j}T;=z%ErfgzBd|8?I7o!dC_`b_z3?rK0MErU4i{gkJ1 zadG9z{vUU3SkG&A9-XH+T7tmelfA`zzL%*{)%5s-h=3m^;;c%&mCiQIQ5qTk#q<&y zgaSnD2}B_H>UPrLOF>AQPI-hL;r&Ze5CN!I68BMSL--T)*YfvEGW&r88ia1R5-=z{ z!;d_+>xR&TEUC)UH)%n6}_JrW}0gsD$gh;{}Sy-$?I56jJ+ zk#>8C1ira5NVCF0o&+@O;cV3x-0#&%Oek!iw_f2bHcA!J4G3!>yqP65=(IZ7S_NSd zil~J-x>f>-8`gG+dvq&_ad%c;kG3M;SE3Tc(+dKYf5(63E@7S z`7Oc4CnUL-9C#}bb&PsPQ7Nr*Iv+zncAikhvzrl~TUe}cx0Ok>54q)4rZa(sBpG4$|G!7j;)nGjB9^`u618=<~NW)E~R2gZt)~fPFKI63EQUeZ$jr97hPs+eeB~><@;)1B#m)12gbotU34xs^Z)E+?%t%lwj0ZTDCG(}|0XV8X?oQ2g}4GC z4HW3`(opgis}$sa8Rf$7T5F<8o8OQoTjr1(D-ZRb39G;7=%{~@tIH)>X>2n`=oH}% z2ONwlybMdzzxdJjWXF{NXF!zgmenvUZnL8Wk+Os@Rmrck&ms;FBH|#emsO*B*2YJ+ zuII~grSAWp=PzPK`?`@i^TlVH;e&y!yyTMLwOEA`=MXQe_OtBUF}sF~I%Uz-jV{)E z`kl0x84~o#n1c_z`Y09*VXiPYF`(Efwbhi_>QuwLqonA|?7Qb<*WTF|S@o|CNXBvoDL4 zQn%6^1t}WC@nuBA4RQ*LnSQ^8=3E;CF3Eg1OXahXRMY6A!r77Zbe$86>|o*iA1{{Vcqik# zfes{3d;R$@2|1#^l9`;=JN5!ppEt_o_&x&1pUA5zAw zot=^fp7l*QtM^B2rEQZ=Z8_fMz#e{7a<{g z2?-gevnHA&`*;v7v;WUmK-jpTFd~AA_iVg%rhPm2Q9q)w{oC8V&m1FONV#EtT@O6b zb?hVxD`^{mL!QnYX|iarSmSH-S;W?gPeFu;Hv)(kIf`cN!5-`@Xy0pEqzfIRwuyX= zK&KUZ0|P9-%7vJdUoJi;UF~NEN5)VB;BIUy=>K4$_O3(D6-3SVC_sKS_yci1*KyU; z)QDim_&wy}Vp-~8gGe{Nb=z7*vOj)|bJ8D&ODRK0piYKAwzA3=5FifSc~U%d(PLNy zXna}Va}2To{Vf5d2nNVt*VQ{+AP$nv3?#CEAj>Chd1Ly)) zc!4Yj2BE`r?%)9mev+d9cUNGnFh+#NX0)*Mg3QY855C7W5rE2^ALv)+v$bSSrGloA z_VKu0$EUEUGAwA0>$_G-eV*NHI+2V9thQ1Se!}5!etN!zzKy@L!U} zwh~4NP#@e}B$#s8BARjkW95j^DYEElk85-4H;D=Y!8ZcOYGXvGzr5ROFZ)^9wISGU zs{7`vKB@jD!<+Z?jvH!**aPI-08DuR`u9B6jtana=~}O1gkZs{XmabkIU1JlbmAjN&La7Y={};PZ&A%+rRmqJO9 zc+n%u$gJ2BDV~3EAWK+_>riZCu>JqoxZgTjLq3jcyLcZ?Z!DI~CjnaC0+pdIB*)1^ zcVA(RSin$2^}%0qEa2wp|Hssq#zXmq{ht|QO_pd=mZG$wL?X>?G?bF&GRDhFSkd{hsIf&kG+fm~-FfoNNDH-;1zcAI1p+ zXdiPWmSqYvsE7aPdgRExdjxnff(J0$uFEZd<_^iJ+)TfN z<*iccaHQ_%eAahq#bqO8XoDz4b?DLb)cvYW3hdHrChhoytNjcve?*D(p`prqe^(N~ zjNslrJZ$zQ`Sq-cyrg*pK7e^i{d4_#_!mW`CU>~?`Zgz5Vf2fYb%a$e6Eik~<8vvE zyZ9qIh=AnS1cz0aD|@xM>ef(-TKwa|GiaA%A!h6n>R=KAvsob67@@TSXLAp4Q}!=I zc!BaV?h_A@n&~5g>F*u2@Jdg753wD20CvZgSZ%m>0VDr6SmoX_wUPx8*a;FU!T z!>VEc@}s`=iaDsyQO|(IYuNPcYLx80RGx+g{A?nLPJ5S4{h67#+wrbI9%KLnSCcSBsHs@M-O!&wI}hH|zK>>y@r zonF2QSN`kjm8q1esLw!;=Bebc%a<<86TTs2 zN(VObXcyjLrY0v(W)~HPKRpFO!M@qsG4&Z2l0`61@4hXh1qXS$TCMqcyuWWV3^8lS zhRx%m<v6Ux45-+;}=i_@R|d%lY+d*F62KpBpyCp!t6XYiv5K59E5Y=CNeS2$dmIYG?~fh_C3|fo(l=DBKU@cGT%ouP2*7CsY082G4QK{nOQAG0&LhLPH}w-v?G}rDk(R^oaeZ z9k#}q7?*$Hf1G%mFG4u>yZ-SBp^LfX%BV&C3zrJ;}58jn7sZcfj&W?dTOMDB5x+Yu|)wWB;Eqe)(F(xs`+gk7n;; zgsty?ccT`8=al2~3Mzg{VCz=u9$g#pxb#jq5XGgY4V{+6i6A%pJ_EZ9Xr2z6#0yfvpkc4q8Z(wv!w?*`-W z3esoO-urWdV^0PfEBuGU+c__B{mrcN%TYv$k5ac!jzd-AK}JGvuImeqnPO}~)5!dm z2tnEKmJqzBXF9PUHhsVkN9%H~GN!}S~i%{p1zgu3=u=c^N4Sr!T5P;DGr^f+~L_bMS+YEql~^5fjk7E|C`r}OuA zkC`m?(~M~wz+9xLxZ5hyt_;sKfy}0MWtCl-=J_5P-^Y?5Or^UpP-^?&5_>Ur(zMT_ zzeBlUZpSC|BT1>A=K2@j!^7IIG;)n5BC-e26TtWTqcB`|La%G2wD%6-foVGuuk3ImUmCJ>A_gx@Wb_c zYc^b|c%R2T_v?1xB!tww9DVkUZrNw-MgeRg>ep8%awfcUxi?;JFSIH!D>d6Q#kZ>u zh={O=^`jHjo0uIQyU+n!eTgsu6*S-F5SHkCJvj(g=e^qv9`*h*RQ4>?vJPvV@B5ni z<;&1V<@?V$u<=)Smd)>o&>4}bmFKvexcHzi>_&7D+ARgz*{JaN`^OVI% zpi}jXaZkJ&#}8XK3BE=+YyJQ7!KN6ZxiovE7?=Bq zpi{7%0^1EFw87ojrCW>YG0%!IzLRGPZeG(!(qEHX=n4AU{lDoU_KPnUZruK!Fvbts z`;D;XEhji9g6UL7`}g&LqWi%lQpwasfJz3tGM%^xniqbl{+wO+T2^d#NsHMUR-~~j zlc~3oK#Jga2@x#lNA`g~TyDGzzSn@}bST!v<_ZI{Q#qCA)Z!dJSZPC}$Kh6Taan)g z_0xPMKO$g>^PA0TTE}DU$aFoP0*()9Iaifv#@?)qZUphUf?tn0-p9aEcD)6{ksF}= z_hB_*Z|QCH-ZAO1U8Y43bU@aWj|ZKl=L z{C{*Ky0Dr5i*dZ5TfnlKzr%=$>p*yk&HkkVsug>JmNd+40%9=9u&LGY4b2^(qWP9W zDoqWi`s2EEI63Qkj)p~envFUcq5X4`e;iZUi=>!(f(kxYp%!-n)V~REDccUBUGR`V z!O_sweO+?UYR92JOHIS9rupT&P~OTQ?*@GS*F2#+5o@@UU3Dt_WqY2Xw*g#|f(;{C z>oL%t%SM^@x=VqSxWoYN249cakI18%DY78?VZYi^-QFgC^n%6mbA0|I5h8T}UHg?r zFeiq!i-AO<>*;D8#5a1ZL`tkgj>iq_-;;|qn!+`C3nkskC1^hz4rheTdDPtyYS&T- zuVy#drT|aPjA?lkrf-|__fVi8B!rQ;6#7JjU;&HRM{_^k{G_%b$RZ@dv(M`1MFpg1 z4*31Vc1K>@o0`MkOo@;f1M*V;?B4ZyNXk5IZI@CY&+f(OxfkQG5!`+Dca;ws%cOc= z>d`DD_9Zx>JAB|ZE5@N8Nb!Pr+$wl+c*_@OuV09yI9l4coO$-f4(pR2`$;@8RQ;Z2FY2ylc}XIzr#H2?fRN^@>}rMevKua}*VQ z=awGIA>uwQIZtY-LYP7;69)-3x--LIUmHm*XJi>jg|MFTk!Za>UB7t%8`jH8>}GL} zbNNH8ricUoHN+l=hnY#vP$Qgk2MG^tdsof%jLzuw!c`AifV!_>)H$bm5?kR+L^BLV zEmT2!I@&kwPX_PSS6~|bpiwR4cyPj)`XB8T{z}QT>-xtTRYp@B@829}2ol~ElSpIO z^wO$xJ?-67V%!=xKvnVgqYlf~hLNyrZKm_5;g2$0%pJhoxpwEcW`N?AZd#CYeSf%d z$0%rE^R|TGK70itPd>d{4|b7W%6K3&S0Z|vRp&MPdTyID`SCcibL`ltKQ56 zyjaHEUv-_2``m{QznZi|+Lr+l*V4>JqfXm!{w{+T{j;Ck$gpW^Gbv#B*>#EC?7f9L zAi$?T{r4gAW5^$WcaZ9?$Sk7my@JB@wzPa|c%=gt z?e8{@qlzm!*I^cKiffatu%`Fz}WACqQoek)^5{6gD z1%BxBg`YqjF$!R zyT)D?`ISJ4c!_X}KSnTINw`$7`~W7mpM~b-H-7idS@vF)Ai57hg zsJN-oYf4k2oENeJ-r5D2uqZKtH4%0gqbjC`PAkZ5#s6Jb^gj{2vmRW-8AdKf?(uz! zJv(mvr3C)(p6!-`*|LzFh$K-D~Eq9Dsr#mZ@c##M?>%PmzZ0p!RvQ-o$0;D`U&TXZzh? z^4tmFGcxOg4C&0Zb0On+u;NmX0JN&os3%(5l$z2If)ClCLTRMs7gK}H8JO%QmU$gY z+LKz(6Ze8e#pMsiONer6w8dW0(-ZvICX9PA1!WKF)U&H78QO%9i^bNx(^WA+etGW{ zSzJdGAa5UOv`sui{{1xr$ULI7;)+s)$1`MY?sX}S-Y3D^pxAM9;PoOEoU;HOIO75| zHH+h6yoTcw%5D?X$}Dbo&>^D#*|oE6Q)PDeW`2ug7~VY<8Fwex ziplx;hg*Or7V~+}X{x!$d=vuK+5df00D-Py=h@sM)ZhZMiU(5vIqDdg3CTtbWyS=$KzS6G*~iuj02Qx?Q%f&jwX3i0q5J5C z^40Xg*VB=Z_3kuC`IWSt^B8vSiwpc4KX={3OE77+0yTzK6tx_d5%bMrn8xHrs(LpW z4f96ZqzO?Rx$jc{$zSKP{9Qs}zGJig&k~kD(Jiq;456ogYx5pC+_f9m>9$=k=qaH4 zYzFtl1A-XHpI#nXG4Bu zs;0R8+rqf}2o>RgUYVX;1NyH1Esm|0=ct#f!_iyEc@{zxHQw{JLDoKwhXsu;>V4R> zDIHp@975*g)`#X1AC6xB>=_%z&A{2c;GcUj;sbWOn;RF>x~{BP%E2nl3v#CMbA`^D zX0_x@2olomO*^HscHY?OnTMmYD~|j%{)ha3GV*FA!H}-lG3)!1qc##AvG$<>dRg4C zq#jW5*kW_4>970bF!zeBg>tv1HzX`{bKYp5HjtiIAo zEb}!c^>{;Ks++_ZlfrA2)zt?&-QEXn@VWls-wUghBI1J5uu8Ag-}=f88y?p(sdien zi~I`gpmTSRW|-nkakoXR!QD5_dXEnAJhKMo>2W=WYpS0Pj*v&OgSie05#-6@Mjgkw z#(7u%5U$B=G@8|XB{`3=MT2?0ml!Ryou6E-w`;bU;ak`P@nq>ny^d@D2;QIAStIS@ z`jY`M^ntE(mJmc63zdJp7Mu0+xF2+#h5s{WG!X***c@yKx^Q|Gdd;k7--~9d`BPRt z-G}CEc7RUbS!Er1I_zW`qXfzR)2JowtG;OFmokPxbI=N3`y>O z(O?IpspL}$pE!lm8XY2(8&isBW;(Q)i*K(m-iw~8U2ELWi#&plWnJd8`-^QHdmuZH zy~yG+c>3_#@@3Y97iB8Y_h1x8&4ebBrEAj)5+pD2ICuVni2%433$EJd7+J4|)GnIB zxMvHw%oGt!8@9~3yX}g|Y~0AaN!OCKYKCJ?r1+w79q00N3HOCLxT2nrajyZanz)EW z-RDsG3+2y$PMs0VsfX|5_EwK{@+fJC(G6XFQ?|1~};!lAxI;=Hp z@@;*MU_UPdwuS3V*nA+GLz~r5WgWK0efm!*Y0r7aw4g8(NB;dk9G(qLpkedHQad5c zU1pB2Unki1y19&Q(Ce-dFgC%?oCt^T(j-`RFT;}g zC@)%!C(;CbRnnrml77w6DEvN|ELg@DG>HNI)hcw4ol{KOj-MVbG{4aW!yQ!>d|v!k zk^ggy94}srsaArVW^(XI6BK|+SI>1vv%dNHC(o@zPwIcoFrbD!EJ=u?CjTOOid|g4 zUByh`3oAUu!RkM)A8+FJoob#R#08fIjbReey)9Y37eUeqF_@b)U+lIALR8k);_h>B}2RoXc@DV$BTwQI~ zBO=^iB`D<#$G^Z zsUdv-uIs8qJfd^o6V?n>CyQ?@N3HI??l!*8^>M-&b!IMfnUDedM0&>us{8?ehEOCY zr7`$!0-9E#+;sT=?BavhC#>)f|CraxPmONG?L+un!gTVTw&wTHkF9kUt?8jZUTa_9 zXL2Amb1%&=mDnIZ#Jd=8)B!T=u4{wSla_LXa$gdCpV1*34w-*BHt6T46N6f~*%gd$ zZxwY#C_g#VZI3yPBfCs1qXx;}>ea7}TQ*0?22C9Cd!^8tPsRUVc<}gTj1erXzU0En z6I3(@2g#3Q3v24mG@cTz8KXBE_>?yo42Il^PRRy)V%Ae$2+Gt5spp9Bx_f6a*1!}C z-(n8UnS3|6WaHA==!29QKa+L8)rUx=)6n$cK6c~p#CEaEPicK43Q>mn%Hyw`)xuhR*K^_@n=@s|6TSM|H-SEAX!Fi-*6K0oCs(sO{{;a%Gx#4 zQd`-<=`MF^{YBgiNhc)11Ieqpna-mI(H}xd9rk@=YbdUQx_bY!>sVm;K4}MVW1FY#{w_G|~^Y6By9fR4844{`@w7Y z@jha$-kp5Uk0yI>^Q#M9q&ZXsoI%(vT=jQgXf-YMfFarNHPbcGknl>3wEf2yncb|! z`sY(MWUJqe!<+i4ybuKqeDAlGAiu@`-M@fkXR$4se`CBV#=y(smRk)&S)IFr!~by% zwL^3pQ+TFK$g+M&>6S|Nza57l29?*=f$;_%WlJwjy8Wk{u%yPT+|0tld~8k1bLXdH z@0!}Ay=fl_2RRq*OEVqm6~jwYimbw1&i~LRtHTz;`67chJJow-k{ynhlAAN7uBT(C zQ+SK+g)h?QX(_CdC~Ygf`>PmsQ{e@sqjQNPOFKCwpqm;y=yK;dWDnF~XdNl?u=*!l z%PhXR+IDtGW8dWMiP%(U_m1WXt~(mnL(iqnE>-0RxCDmv-y@jz)qUl->z<$Zv$XSY zT4-W7gT1spRG`hpxi9hE{=HsYGJ=A?sIz0JiTC2`u@U?F%G`_LwcB5vPL|6X`S)E< zz2x?_Daq@~c4?O1v6sAjS9VOh^Hop?uORPr~D0MwJhcvb}FAaH^ z#Yv2~SUdSh+~oUqt>Weo7c3 zU|cZ{U%MPmeGC_hG)0k)H zE*9P!POOcoqPKKo6&aa*F9uy(H{z3Lv^>M&#%#Q~72$lS7a44}Ga7BeaGhfgvw83T zZ2;vy?8VzbO#CffZ@OSMhJRbH6{d*oCi*FjnyiQ1`>dP7wZ7?i+v+!D9n{y21V{=#?D|K4AI>%l(JG0J zk19B*dHl!otTxy-_ncji=bB-=>>XZx^~+Y!zG%J@3L1w;_Pnd{4srF$5@fuu zg+%{e*W|(MY#&MLA5`G$dGPpEa}}L#*qqH{IhS$Pzi!GjWyXm}5B3(+blSg;KMhrY($Hg?PMgk~+`ZSyemc zwa&30omdZj;1dhBn`=B-~s<1a>K zKSbp&{6|C`vJPm{FIE>MINi+(%qB?he6bF;hjn7M6+eTkKUS|5G{yO}kFZo>S>blr z4|zh-^}QBu3UZWx>tB57ZgY8p&B~eV_LxqIL|~o^U^PHJ^hk$TkrkrI1i(<;@GIn< zHRZjWN$k6L9`jGs_H~o)S36UXytGg9R#pda8X#x(H7c=PFYb>>C!^iT zB&a(OcHsL)2*iN3y<{N@%dXI z@+n=R#~MhL23U6mux%p+)SJ2F+&j*FA*r(bc=8v4&SAyTT;oeiHCfo9cln2jtR<~^ zgN4LHiouC2J?nVP`ca}zo9o`rN-g%1Sy&|lZ`b0XBtn7296PND3f9%ky9z=oh_0Q| z*jI9I_Ii&lS{~vq2WFUN5llL^x#PQIY_IG0n|gPGm3|Idv=FiTuYSi)b||4^4Hn$R zR%nKu#y;b0P~$_`;yWDLJ=FL?fhv*3JaKpYq$UGDNVf4TKuZe^Ra1EdYdEf)-tJBs zTCilGSxfKzC_<68p0>3ig`Z;netqZ0*5y|MK-dJzxHYzYxbN%OC)pv#T0s`AiPyqh`c?;26f&uM z9d!};+_w8G)#i*wEp3z^(@C;JAxeCi<(DKttX-3K739gXa~~@Hwvax@4Y?>3lx9Wp zfy?A~xCH7x*gTQNgeRYSqd0bVHHoC{uyeb&?#*Jg$z6x%Zs~0Lvl|q^x`Vk8rpzy? z%ZB&+(Y`HaOE7Pj-)Ove_^%y$up2y3s0^|f?cYWAkQ>sZ2iEK3T{gXPbU$tr%FU$z zs4nQ3hL*6~LVD+{NBZ6-&d%cIh_)7dFC7+Jp4QJ-k_09KW8F|*$a=8nBR);mO)O07 zriAI=?Rwk_w$(M*zWAAT{Ptd}S;n8l#SP z#;p15DvOAgVar{L{M!dXAEb7`S-3gph;^RE)N?FM4#rrKs&Qwq&FV!rFt z@xBjtR{Yie?Zr+s-*Z!T^({Lj$?Gi`wYyk03M&c*^BRY5sfdkQb&Ft-KV9oYZvV&f zzbyeV^x7Jps!qI*YH75B?pJzuA#tllBX(7;9sHUc@5^@$IyGZ#7`2kD*vn7N9v?D_ z9j-1=b^X2V6`i&>%I=3{ZF6{Ai$hy|P=w$sju&0V+AIW4{N3sdb0L*NgE{}r;B?%d zF`W+Bvfu0c&`te~kn?AQ;cSHMZ{CXwNn2LEI~KnV%gv_;(wx=%-P2}wrQ57+@k^el zSK*x!P5bESKh)%)8?np@b&DXsao=Eh4w+@(Wownpa(h`!fB0Wk z-9LylYT`u&aPu1rp zEKjlm05;29wev8vfFT5|oWu~_PaaODKg_W}j8I_qS;wK@WTE^~wqeiSCu;g`z^uVe!aURUJrb+cKcWjcw9Mw9{_T?PwS4WagR!d=io?&_@^4?t ze=)d=sMQ-rWk95J3)F+FzS-e6yqqa)PcU4xjU`8CqF@qb=lq>z(*qSQY-vxp`f2rQ zi)$du0-3Zgs+MjrpgG}GZ}o@vi$7vVJ7BS@ZdcwqoePRfIxWfr%4db|6sbjfQi=4U zrTn^u4jj30pT-NlV;8n_;F8pqns{)@6Rhi-VE?^0ws4e$N!nBe_VMr$aM4a=w}m3d zaDqUyk33+VOwMPxrejG>tmWRrYP@T<+(ij~H*9DvxV87B6$)Zz!ksbx8at zX#?P@W4*y&d6@k55LCYwa=EBDogWYG4v;GtjV5V~3Rs{B=Qp{S8RyYjbP&Hxaapx^ z#{q$9ACrx%u3CPrZ~wiP8)QL+X}q!$AC*~#tY>oh38L?YzRYXjqxS!4;LZKou(}4X zYzcO{@(C zlConeIlnvdsvz8$oJk@=7j^h^bb>1H%wnwKeEe3JE1r1g9XDm|_}Rh}Fv=b6%+n zD$O+ICv_Q<*w2k;A`J`aJ2^{X0jK!;sV&85yh(X=C_ZEaD1EBz7pX?YN4Sd0fMHI#03)#_Yq;=cYWO=4te}W zDG6G{=ubH=`Z?*GpRt`wLAck0{6*RXjm(c`cQN=m?0LZ-uf;~eVj6oUk$l`QV&-`$ zvo>lXO&WcCtzcem{-+jh{W9~f%70xisAkF*%k+D~;oiC~uDD5jbL0mtSdl*;nKQ)td_YRO-s-}S)HCET?ZHa(WY zhvgIX=PN>e7?+w}R2y$8RIbEF8vGHwV`*Z7?7NeP3SK3jth!XSwd={r_=4##ap^<1 z6>@gGwMcD^nYyALm$h1D-NR^;-6G;eGDyU)O)hJ+YU6IF8wx)S7Guhri`+u3y8#aF z6597M>#B_p4I_0WHRy)QE*jRyU7S`<<;6 zj)`EVP){!NG4_)24fD?1}clVI8ox3ILdK~!s&r!5PTYc~N3;O3uxd*}^pet831B7I52)}`}&NKB$m zdUd^KMx&HgC@7d8(Bf70F8vtTx5`byZl?dG`s>6N_QTMrxw+MxLHkz|Ygm_gx7^qZZ#t-w@pE*hgh>WI8!jGT{9A z^Sm?424lvu;3alaxFM%@^s(2w@o#iCdkvz*NZ>Ra%Zqu;#f@Cndeh;;;Re1`bv?6n z_v)l-5-}oz|Jied{E?Msi6m?g=5D3V&i6e;0YZ3+Xg)XW5lE-FZV(?r^6xf?=Af_k z*-t#Gc6hB`R_MF2>>SZgFjemQMyZyiFyDWnJC9))R?X&H_I0`9S?A_&bt@^(>bds3 zBC$TydI|K(bJr@7O?XQQXS>RYgV`>FVXS-Pxo^%BePLJpV!}LId?&hS)2FCmvxxab zYUt&UuA!qY^NY=IyyzMmy6(<*zlI!qda^2Yf&eq_dq2b8+Y59GpB0HwPMz*!4mfPc zQ6t321kc@B`|mfISTG44VQ*!aL$FxL&=1!hB`6=<}19aAT}O zEAVTF$Bvqjbl}BS%hnONML4y`3j64Fce3+-5qXPPOtez>pJdb(ny6I1H}N#7dzk z<>@u{My#>ul?cjvw1Et`+HYy&>njGN_-!}9;)E5w^XrqH8<2!s_&Kxm@Z;kYQZ&G< z0`JkWk{Beg0CKVfL3iJpJ(TSYcvze>but4L#sTW-!RLo*sR7MmLo~)6AR{N2X8`YZ zS&2=|KEcl~te#Zp@)lH&bN4ny9Qy4$SiVo65Po`G)C>uzOfis;mwAm;(bUv*c>yON z7|-6f*><)5D;Xx>@N<>*UAOxDj#n2rW-Q=F)aKiJ>TLlXygdtH6Q#pd3SJZS9Ckr?WP)->tu?55W8s%e2!8Ydg>g3W+D0%HM`goiAF zo1G9b3WaNOXtJfVGJVI!e^$NZ1PE1Vc zNNyZd;`FZE8ImNR{G1>@ZMI|7@(JwTXotwV{POL9NUT03j@a#j0_uok+rdUIO$ETN zcWDHLOx!o4g(4&+oi0UTUdOy;NGl9T7=7*Y2S@u(G#5sJTq{x1PQ{5hF;IZGva`K= zb;gVa@}BlRbL0$-S}qmgsmSR!nAE@6?8WAHW?vv4&^Ty}9^mtu{m~>7bxS#L*nzy@ zO&)#shhc&YMhcz+FcV7(nR56X4~lMt`9vWEC5*#o*Xk9hBF8v=dg)yTs}KfNZ;detLFaT9N1OUys)fJr_Jj5j5Zh5+unJHlhG829BwLeLh>ap3*?r7WeA=(SW@B zVsOm$V{hNc5Y8q@g(n(xl4OB_`0m7GuAXUAGV3wngWJB0h4LdNTDzUBj3b-FJr(CQ z1A8qee$W=fyPP)R`_br^M8DjigMgsE3PdM}0YBu>K(q&9Q8}YN{*bdAkWZykB79Qr zpTr;u2_RK+2t~M$`g?^>9099<7<-BHSRPoTC}o;RLJpGRJuVN{T3oh74528(Yn@cU z5vZk=kQq^3>s`UoI+pWxu!mM?AxdgIf0Bd}R|h`Y5zcova8`lmEo2)-cJG$v<2#EJ zHFx|7YWvWB;oHl5Dn#P7fbJ2GB6Xyj%rH#xe+-ZTvL@hw6~Y|ONkoC0cqQ2kA%Q`+ zEU1zP5{n_{M&*%|-{vA$;m^t_aQtTLLdXjg>^^!7g>MM5PdN-hb$i}E3j~&48(o13 z;iK`yP(BGe#5ohP;y!3KL3G-pTGfRq>c}iVMK($G@bS;xcdWz488$?Ng;&hPVMby& z?iYs^OnS>auoXpMH?Cg$`ZSWz3p*ZLqa@wdqA(J66bAuzh$@fBP!&1`Au;lxiXE$l zS&70tlvFVl%199d)Xf9~v(0Xc2acwNO;;i@A3uI%zcW5{>CmY$#9YT2uxLEbji6Il zuMR677lK+NP>RplrZajL)vAZgSl+DC<_p+SOL}e)mVbQt!PX*uMwkf#PGZ8k`<3-S zseA6I)Mj-b0^HvN%Ij7me1?ceU~kuqYq1E%T#cY{h+qoF?g3{MhV&mzs0iiZN1Xj1Bf^c;UONmFK4>i_r-mbt-*}VDM96d_X3;r{hu4H zP?%kd(nivv0&bT)g5qi=3%I&3#oQ91kVFtx2!+1~{fXOVc-7i|gEgPwz}&HG!kSy5 z-1tghUddcp3z|l3xhr>2ZgueXI*JZPswAT#Cj{AL$z1NIPaef}LCOvb!6SZ&9ro{y zIaC~HY66CJ^xt}ib|7TzP*)WYzzY-_zSX@42&+SjY?0twBB-F{S-xukpN}H`z+qBH zz!ne~GY%euR(*AFEGDZ)t4Qkzni|Ni|gGSCz2mnF0x!pjq? zBq|nbeudac#FSlt7;EfnPV4i9O>Wn|;faNh7u!l{P?G5ny9?@EIE$R`A&hGL+TyfQ zXJrznq&?`~1+p>c)^d$`VmT|&jly_n69j?dKJzUsC*94WV$BYVSgB841&~_*dz)k% zc%$VMK46ZXHmDAxKl^+K%&3EK0_py`|B>yOx)MN`T1=^52)k)ISHaJYfXqXF8!fS_e+fJIjLI#MIr-3kwzs zTxNSxdLJz!T4uQ?h&EFOBc=3`Za(j81izhUSHj< zz@hML<}`VJ^L%unhJEZnwUbdG$K6Y8u2gDDYjQ9@J$w=|59cDRq;$VID|$h}ACxWg zulALpbA5)Wkz%`Lp{)tn3}{EnTMyznw^xAz@;P_~D*rlnU9!OWoIb`vQ9sJ>mt&(57)s7w2-&1B(`}={cIN)q_Wn z+oa$~+R8WjxDI83N2%|3#_?5{9twIRTF`1!*8NgS#4Q|7a`ozZuqIWYb)rxpH!J87 z>7O+m^8TLh*{s*E6vveGp}mht*>?rZP*;JX+9kIA#Avj`>oGZ*_plNRh zm)BRSJzs@h?eoG?zpwVHdu>@-f5R0wz8UqyQJnBR@4&volZBIg`fn&dqr#>=-wUSG zQV?@`d^WwX97XB8K8z7b#j(d%77c{gD+0d#BS}*#rUwG!>{& z5o&+Ee=lfPyuNJ(4~7PhKr*aa&5zW1h1c$`hf7&bUcv=pAju~6gxpM7X^`TC^4^$M z8j&6D)xEtC2FVKyhm|eCPAiUHkMOky6(44o_H3jC4JeC)8BK985%tt*&moXsv-Ewz zsAQa-;W}@o+zsEI`dvDFzn|CqM3=@@YVprvkqTuRFD*>=XlxS^cmAaclqtNM!Yeu* zJ<>kKddC`#XC*xLyL@2fCqZwDWp7+~e>RE&Dcr4YpwBS*^=SUvP-c@}7c93v#E=pE z%Zp0A4SU4+3F5$7#1=`2hpp@xmPkw@@~@cwIQk=Rz}pR8$*mS7Nx&ybC-JvZ0#3G;=G`+IFZYnxc4W zetWCgSu!rd5}ALd^tDk7$?=^?b&S!e8+B#lhUQ|&Zt&ihmODp&JY2of_o^faRYTkb zcu*k3%1OQU;Mrae>#&ETr?HU0edmA|dW&%I0f0+WMHIoIM>(CFT$gB{RS`ZYg5O&- zRSb}(EWz)ih~02d$0jiJZWGk|-&3BPSt{r4?m*a9eV_^hD`(v~-p{4vlo;<+znqC9 zIb)YOx!{-qVyHSZb%*__f0E`LP1Z_dkvNH03f;rA$xuDhKg?o7I9mY~E3nuMkj;6c z&1roEKOne>C2az^%V+vvn=PDMwn2PJw7#-_7%_LEJI!Of{pC~$!JJ?(7?F0)X%<9n z5E&|3$;nt5D};0#Gj)^3{kpHd54&>F|Mw5mg-1f+Rex;6f#i~&32-}*wJYukUWzYz z8>}0nkTq9j>_k#Vvwz)wWdfY>e%ltiWfA58QzBZCl$7-2<0?@4wRLGU>+{5E)gO8x z4nIlzV7$Nn^BJR(p>zwg{+Gjwd3&cPT>mibZdr#p3@2U{d|APYg~m!HHS%X42zTJY z_Y3^or-P!DkmQFBGx3*_-N?iVTBMfM>nn$2NLc6 zpNKajNW{_Ey?%Z0cVgspcbe!IF~IvFUB2CM2)QtHqW*HMB2%95oyGga>I@nT&-4HB zUGV}l#|39%#7kqm-bB%3e|~eeYx`k0=L2wT@IUup3&QqHb9Lx8#=d*T zS-j~<@~57{Qpht*%Hb$kd zWQ9-DEawd3#nTw= zKR+&?&pj~a#b+Dfr^(8d4>Cuqa9)o-p2=b#74Y`0M*LPuNeC?1jB}n>_CNwo5<7V_ zDh`|`g;!>V2*f(6`?)ipW%D~0UKy*#(4G^NU1kjfm9GqkXx7dh$MQvwB2?9Yy7*89 z91d%vVL+2qr1*t5{@L4AMlU>Beud=XjO$Xs4hkoh``XI6z22QsH5Q+D^CGCc&_Fib zYWv2y+|GzScA?`GpJl|$s+!N<(D~ZlHh5MfM^a_~!T=eM59nu+1rhVHg2mVgI4`iv zbS=f7y3`!>%wf9Kn9FNjTpN@sk%7n5Y(hx620Uc9GL*CUQ)Ev0%0lHmQdLyXWH*cnmqa|7QG31i&c z6fr`pz2FB&%hAfX{=o%bgI`;3?yBcKNhcdOQ$JB-J2^I$xR|A;c~o$fsWY@_N~|iqgZhB3TnD!x0|^HFcLLN)D(7`{q;#~YgZ*L{XjGzMA(if##H}$ zuv38?#=J8z^2XyetGvmcQAqsrbAcX2EL5uYtLzOP(3t35dA9RwX;3cRFXHq-h=A!u z8^-r6-!sdn`CqL;zGKjfDzEVg)3+Jhy(&TydPC?{pU-U&L(T*=>pL{D6I45IC>vZ3 zc3r!(<0~4;DW~G95wmz!5Wai=WXB^AyirEDuKWFC8&xnABvKKBN;)&|Aehy|zd{J+ z)&)zW5G9cf+t>{OH#fBFKK!KgS3NuhGfR)mRDo^1qB%H=qU@J%@?vNqQLHyFl;l1Q zRez-li`!P6kANFzEUWGOdUYp`ugS+{4dRu(RyfBzZ=rc?2Ky^b9ddouoQb?gU>%?6 zxDo*_=-!@|4i^JTs|gGke(FdN3i+HYF!Ndf{WTLXwjxguuIor!cRiNRZwwGUJcOR8 zixB%9IYge{G^6Z)Hswo1OXP5!zhNmBJFIpzV|LS`U&I5{WyR>5VW*cwG14Mxpr+dd z(K_q{RaK}d>fvo3{T}imYX9%J!=_%_h9WXM6eQ+29#JB#UDu0V87+JM_7}Eb)2$dG zD}f4v;wuYu3-ZUOwE|0P{1mZ+=rs+TifO)O0e7U;ztG-nqc?b5L2hSucP&{8cny0< z@sBL_Pz9+iId^F}-g>gZ8^d34Rs}oHi&Ect#Ii^A$c`owK$u>z8h1hh0}!ou868ge z33)F4gJ5=JO)nZP?I21C5J$9DWWszKpm>O9D2aj7BYN@*KCvkeP`gcmN=1El0%?z* z0(7?|iqhmjOT_4Kbe|YF`&jAC_&?v`h%DF=SR7#w*qwH@OBqq7 zyXT2zRnF_UOpaFRwWO%ix%OuLK`!UfoGrA%C}yHdWs5H9_|D-?9}i8F8M;Pj=L7b$ zVj3S_ajq=133@z;_REw(x+p?kJ2?sz$qT&2!M0!7JAdUQFy7^Jy_pN1KhbAoY!j(1 z;y`NdY!P}S*r_^}fS=eJ*UWMapZ(-A9cGME7F%2jvj&8KjvJg;tNGbm2`0W7MpE9$ zF?d(RXI>WK;m~i&{hKG@=*E{Y>kWh8O<>trZ5CD;iA*V!z%)GW0(Q@W;i@)DtpO)KB&oWoK914ouH|g)#lMW zu64hz_SH>)9X!{jyzzrTIeg~5ix_B{;1bIHuVK0)r%v3BP_;hDeWvRzFT~Nf7r8HV z*RvSZkE=cIpP85q>T)XeL^%-nGF2!dbmJt^bk#A%ND8k>SxUrgqyG{5V!BXxs3g|M z71uOBai7LFJt(LrE|ID@?`az%Sz+Y)>mAp5*-fgfgNKKgYE4!F)k?nRmxH*C8c6f^ zMvI-szJGIND1wayLE~skz&siHP64XWciOjr!dS0f7RDc5RUT_u2DZU9E1os7tshm)uaxD15jX2HbX`PQ9`O z^Z<+xC*QT)y?hq25#}z24}!;?=N9gRbwP^WQr9C6Qv>Y#S^9(5d5?eLhRm)kPMYsY zw_TMXlEyrP{TQ)BK1D)eGh(-t!Jq6Un_B$17ViYRnlH$-?+xj?4(zv24SA&cn|kbg zkP3#LFU4Fxp-heF-2)R6wV|ckYh0V)IES>WAH==jJf;qA#c+&w){kA|h%=GKt*jNU zi#KI}qAXB}yo?kKDKCBS(;I?pVvkT6#-&>3BCSWj)l~#JU~mX*G*`X42O8@8_kelZ zxn@~JYbj(JO`GaeK<+DIoPACWOoB^D%X(~zA^A)#Hqd5dDOKd;PLmj ztYm0&68Y`umt?v?3$@NrFI9+}bbSU6Uw26h|MO+v8aH z;q%YPyokDxTQt<~mBIHa*(a8tr-(5WtJuF20f<(AA8Lm

uUL9MyDMW2rULSZDv@ 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%0AJ{36$h zcWmIr1PCfwn>$OCR3)~ypVcjt8oBn=U0L_kq8d0qVM{TsWxm>us;?iltqXhN{Ec2{ ze0eH*u|}?B+}Ehf)ZRg2SO$% z-}bGi_x13x>)Ai}Oqh&bVkv>}oxOZ!*Yaj8Cg!jPI6s+hViB`mvs|?CxpZsAHOajV zCwr_84L2WBrt7-B`Qog9T|6jju}u7ZB?~6TiHsKOwET@O<1P4>G-<4qBp%{JfWlA< zO0DjIx^xo`&YdomoFlv7=DiGazk+(#n2qoNxHGrzFvV*e^;i0{-q%2c><%fbvCoksQBB@EahCFNA3?p8LpH&C#^?fhMD2v-uXAg|;5~ zf%7Whq{(tt^{l3g&T)C~iqD;auF>jh*X8OMrVD4qQ6Po?Cq1Wp2Qrf72Pj*^)Zh%u z{E`%S72ZOnq&T;q@;4D!!ItOTUR>K`4Fx`*NzpzUlvmFguv*Il#ZW0#;s>LJyn)*7 zOx=e}-4MEj&^ufA2qt^qyqpH1)PmE9QcOU$GpOMtbLQyuQana}dK;7Rdp2MI{w^XU zywqLDABRD()O}ZsC+36ar!;H%hHjT1Z6=FlY180oNw<;}n0C6x*TpeFn8%bs`I7im zFro!kmM(^(0`nqGhTDlr{N<_4l5)8CZ?mZ{Ubw=Xb~Kf}rMSLKy~m;KT@`^! zE3HcB+j=-lj5G_h*lqE*JMI(ruSO4RqJ`eohjZq-GaCP45MeaAh@rl-YM0;AUXoK` z¥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 P@MCk_;aHJ{_wD}&dAaLl diff --git a/core/src/io/anuke/mindustry/Mindustry.java b/core/src/io/anuke/mindustry/Mindustry.java index 8013577925..90512df26f 100644 --- a/core/src/io/anuke/mindustry/Mindustry.java +++ b/core/src/io/anuke/mindustry/Mindustry.java @@ -2,7 +2,6 @@ package io.anuke.mindustry; import java.util.Date; -import com.badlogic.gdx.graphics.profiling.GLProfiler; import com.badlogic.gdx.utils.Array; import io.anuke.mindustry.core.*; @@ -14,7 +13,6 @@ import io.anuke.ucore.core.Inputs; import io.anuke.ucore.core.Timers; import io.anuke.ucore.function.Callable; import io.anuke.ucore.modules.ModuleCore; -import io.anuke.ucore.util.Profiler; public class Mindustry extends ModuleCore { public static Callable donationsCallable; @@ -43,15 +41,11 @@ public class Mindustry extends ModuleCore { @Override public void postInit(){ - if(Vars.debug && Vars.debugGL){ - GLProfiler.enable(); - } Vars.control.reset(); } @Override public void render(){ - Profiler.begin("total"); try{ super.render(); @@ -66,7 +60,5 @@ public class Mindustry extends ModuleCore { } Inputs.update(); - - Profiler.end("total"); } } diff --git a/core/src/io/anuke/mindustry/Vars.java b/core/src/io/anuke/mindustry/Vars.java index 75f9fffaf0..feb127324a 100644 --- a/core/src/io/anuke/mindustry/Vars.java +++ b/core/src/io/anuke/mindustry/Vars.java @@ -9,7 +9,7 @@ import io.anuke.mindustry.entities.Player; import io.anuke.ucore.scene.ui.layout.Unit; public class Vars{ - public static final boolean testAndroid = false; + public static final boolean testAndroid = true; //shorthand for whether or not this is running on android public static final boolean android = (Gdx.app.getType() == ApplicationType.Android) || testAndroid; //shorthand for whether or not this is running on GWT @@ -34,10 +34,6 @@ public class Vars{ public static final int zoomScale = Math.round(Unit.dp.inPixels(1)); //if true, player speed will be increased, massive amounts of resources will be given on start, and other debug options will be available public static boolean debug = false; - //whether to debug openGL info - public static boolean debugGL = false; - //whether profiling is shown - public static boolean profile = false; //whether the player can clip through walls public static boolean noclip = false; //whether to draw chunk borders diff --git a/core/src/io/anuke/mindustry/core/Control.java b/core/src/io/anuke/mindustry/core/Control.java index 20dbe4403b..4258c8df6a 100644 --- a/core/src/io/anuke/mindustry/core/Control.java +++ b/core/src/io/anuke/mindustry/core/Control.java @@ -19,7 +19,7 @@ import io.anuke.mindustry.entities.enemies.BlastEnemy; import io.anuke.mindustry.entities.enemies.Enemy; import io.anuke.mindustry.entities.enemies.HealerEnemy; import io.anuke.mindustry.input.AndroidInput; -import io.anuke.mindustry.input.Input; +import io.anuke.mindustry.input.DesktopInput; import io.anuke.mindustry.input.InputHandler; import io.anuke.mindustry.resource.Item; import io.anuke.mindustry.resource.ItemStack; @@ -32,7 +32,6 @@ import io.anuke.ucore.entities.EntityGroup; import io.anuke.ucore.graphics.Atlas; import io.anuke.ucore.modules.Module; import io.anuke.ucore.util.Mathf; -import io.anuke.ucore.util.Profiler; public class Control extends Module{ int targetscale = baseCameraScale; @@ -65,10 +64,6 @@ public class Control extends Module{ public Control(){ if(Mindustry.args.contains("-debug", false)) Vars.debug = true; - if(Mindustry.args.contains("-profile", false)) - Vars.profile = true; - if(Mindustry.args.contains("-debugGL", false)) - Vars.debugGL = true; UCore.log("Total blocks loaded: " + Block.getAllBlocks().size); @@ -83,7 +78,7 @@ public class Control extends Module{ if(android){ input = new AndroidInput(); }else{ - input = new Input(); + input = new DesktopInput(); } Inputs.addProcessor(input); @@ -111,7 +106,8 @@ public class Control extends Module{ "pause", Keys.SPACE, "dash", Keys.SHIFT_LEFT, "rotate_right", Keys.R, - "rotate_left", Keys.E + "rotate_left", Keys.E, + "area_delete_mode", Keys.Q ); for(int i = 0; i < Vars.saveSlots; i ++){ @@ -165,7 +161,7 @@ public class Control extends Module{ renderer.clearTiles(); player.x = core.worldx(); - player.y = core.worldy() - Vars.tilesize*2 - ((int)(Gdx.graphics.getWidth() / (float)Core.cameraScale * 2) % 2 == 0 ? 0.5f : 0); + player.y = core.worldy() - Vars.tilesize*2; Core.camera.position.set(player.x, player.y, 0); @@ -282,7 +278,7 @@ public class Control extends Module{ int last = Settings.getInt("hiscore" + world.getMap().name()); - if(wave > last){ + if(wave > last && mode != GameMode.sandbox){ Settings.putInt("hiscore" + world.getMap().name(), wave); Settings.save(); hiscore = true; @@ -522,10 +518,7 @@ public class Control extends Module{ if(wavetime <= 0){ runWave(); } - - Profiler.begin("entityUpdate"); - //TODO Entities.update(Entities.defaultGroup()); Entities.update(bulletGroup); Entities.update(enemyGroup); @@ -533,8 +526,6 @@ public class Control extends Module{ Entities.collideGroups(enemyGroup, bulletGroup); Entities.collideGroups(Entities.defaultGroup(), bulletGroup); - - Profiler.end("entityUpdate"); } } } diff --git a/core/src/io/anuke/mindustry/core/Renderer.java b/core/src/io/anuke/mindustry/core/Renderer.java index c43b4dbcf5..d99fac4c12 100644 --- a/core/src/io/anuke/mindustry/core/Renderer.java +++ b/core/src/io/anuke/mindustry/core/Renderer.java @@ -1,11 +1,12 @@ package io.anuke.mindustry.core; import static io.anuke.mindustry.Vars.*; -import static io.anuke.ucore.core.Core.camera; +import static io.anuke.ucore.core.Core.*; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.*; -import com.badlogic.gdx.graphics.profiling.GLProfiler; +import com.badlogic.gdx.graphics.Pixmap.Format; +import com.badlogic.gdx.graphics.glutils.FrameBuffer; import com.badlogic.gdx.math.Rectangle; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.utils.FloatArray; @@ -22,16 +23,18 @@ import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.blocks.Blocks; import io.anuke.mindustry.world.blocks.ProductionBlocks; import io.anuke.mindustry.world.blocks.types.StaticBlock; -import io.anuke.ucore.UCore; import io.anuke.ucore.core.*; import io.anuke.ucore.entities.DestructibleEntity; import io.anuke.ucore.entities.EffectEntity; import io.anuke.ucore.entities.Entities; import io.anuke.ucore.graphics.CacheBatch; +import io.anuke.ucore.graphics.Hue; import io.anuke.ucore.graphics.Surface; import io.anuke.ucore.modules.RendererModule; import io.anuke.ucore.scene.ui.layout.Unit; -import io.anuke.ucore.util.*; +import io.anuke.ucore.util.Angles; +import io.anuke.ucore.util.Mathf; +import io.anuke.ucore.util.Tmp; public class Renderer extends RendererModule{ private final static int chunksize = 32; @@ -56,6 +59,8 @@ public class Renderer extends RendererModule{ } } }); + + clearColor = Hue.lightness(0.4f); } @Override @@ -131,7 +136,7 @@ public class Renderer extends RendererModule{ if(Vars.snapCamera && smoothcam && Settings.getBool("pixelate")){ camera.position.set((int) camera.position.x, (int) camera.position.y, 0); } - + if(Gdx.graphics.getHeight() / Core.cameraScale % 2 == 1){ camera.position.add(0, -0.5f, 0); } @@ -139,47 +144,82 @@ public class Renderer extends RendererModule{ if(Gdx.graphics.getWidth() / Core.cameraScale % 2 == 1){ camera.position.add(-0.5f, 0, 0); } - - Profiler.begin("draw"); - - drawDefault(); - - Profiler.end("draw"); - if(Profiler.updating()) - Profiler.getTimes().put("draw", Profiler.getTimes().get("draw") - Profiler.getTimes().get("blockDraw") - Profiler.getTimes().get("entityDraw")); - - if(Vars.debug && Vars.debugGL && Timers.get("profile", 60)){ - UCore.log("shaders: " + GLProfiler.shaderSwitches, "calls: " + GLProfiler.drawCalls, "bindings: " + GLProfiler.textureBindings, "vertices: " + GLProfiler.vertexCount.average); - } + + draw(); camera.position.set(lastx - deltax, lasty - deltay, 0); record(); //this only does something if GdxGifRecorder is on the class path, which it usually isn't } } + FrameBuffer buffer = new FrameBuffer(Format.RGBA8888, Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), false); + + void drawTest(){ + camera.update(); + + clearScreen(clearColor); + + Core.batch.setProjectionMatrix(camera.combined); + + Graphics.surface(pixelSurface, false); + + Draw.color(1f, 1f, 1f, Mathf.absin(Timers.time(), 10f, 1f)); + Draw.rect("blank", camera.position.x, camera.position.y, camera.viewportWidth, camera.viewportHeight); + Draw.color(); + + Graphics.surface(shadowSurface); + Draw.color(Color.RED); + Draw.alpha(0.5f); + Draw.rect("blank", camera.position.x, camera.position.y, 100, 100); + Draw.color(); + Graphics.flushSurface(); + + Graphics.flushSurface(); + Graphics.end(); + } + + void drawTest2(){ + camera.update(); + + clearScreen(clearColor); + Core.batch.setProjectionMatrix(camera.combined); + + Graphics.surface(pixelSurface, false); + + Draw.color(1f, 1f, 1f, 0.3f); + Draw.rect("blank", camera.position.x, camera.position.y, camera.viewportWidth, camera.viewportHeight); + Draw.color(); + + Graphics.flushSurface(); + } @Override public void draw(){ + camera.update(); + + clearScreen(clearColor); + + batch.setProjectionMatrix(camera.combined); + + if(pixelate) + Graphics.surface(pixelSurface, false); + else + batch.begin(); + //clears shield surface Graphics.surface(shieldSurface); Graphics.surface(); boolean optimize = false; - - Profiler.begin("blockDraw"); + drawFloor(); drawBlocks(false, optimize); - Profiler.end("blockDraw"); - - Profiler.begin("entityDraw"); Graphics.shader(Shaders.outline, false); Entities.draw(control.enemyGroup); Graphics.shader(); Entities.draw(Entities.defaultGroup()); - - Profiler.end("entityDraw"); if(!optimize) drawBlocks(true, false); @@ -192,6 +232,12 @@ public class Renderer extends RendererModule{ if(Settings.getBool("indicators") && Vars.showUI){ drawEnemyMarkers(); } + + + if(pixelate) + Graphics.flushSurface(); + + batch.end(); } @Override @@ -476,9 +522,10 @@ public class Renderer extends RendererModule{ int tiley = control.input.getBlockY(); //draw placement box - if(player.recipe != null && Vars.control.hasItems(player.recipe.requirements) && (!ui.hasMouse() || android)){ + if((player.recipe != null && Vars.control.hasItems(player.recipe.requirements) && (!ui.hasMouse() || android) + && control.input.drawPlace()) || (player.placeMode.delete && Inputs.keyDown("area_delete_mode"))){ - player.placeMode.draw(tilex, tiley, control.input.getBlockEndX(), control.input.getBlockEndY()); //TODO proper end points + player.placeMode.draw(tilex, tiley, control.input.getBlockEndX(), control.input.getBlockEndY()); Draw.thickness(1f); Draw.color(Color.SCARLET); diff --git a/core/src/io/anuke/mindustry/core/UI.java b/core/src/io/anuke/mindustry/core/UI.java index 6057a492da..30408bf64d 100644 --- a/core/src/io/anuke/mindustry/core/UI.java +++ b/core/src/io/anuke/mindustry/core/UI.java @@ -32,7 +32,6 @@ import io.anuke.ucore.scene.ui.*; import io.anuke.ucore.scene.ui.Window.WindowStyle; import io.anuke.ucore.scene.ui.layout.Table; import io.anuke.ucore.scene.ui.layout.Unit; -import io.anuke.ucore.util.Profiler; public class UI extends SceneModule{ Table loadingtable, desctable, configtable; @@ -99,6 +98,12 @@ public class UI extends SceneModule{ Colors.put("healthstats", Color.SCARLET); Colors.put("interact", Color.ORANGE); Colors.put("accent", Color.valueOf("f4ba6e")); + Colors.put("place", Color.PURPLE); + Colors.put("placeInvalid", Color.RED); + Colors.put("placeRotate", Color.ORANGE); + Colors.put("break", Color.CORAL); + Colors.put("breakStart", Color.YELLOW); + Colors.put("breakInvalid", Color.RED); } protected void loadSkin(){ @@ -133,8 +138,6 @@ public class UI extends SceneModule{ public void update(){ if(Vars.debug && !Vars.showUI) return; - Profiler.begin("ui"); - if(nplay.visible()){ scene.getBatch().getProjectionMatrix().setToOrtho2D(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); scene.getBatch().begin(); @@ -144,9 +147,8 @@ public class UI extends SceneModule{ scene.getBatch().end(); } - super.update(); - - Profiler.end("ui"); + scene.act(); + scene.draw(); } @Override diff --git a/core/src/io/anuke/mindustry/core/World.java b/core/src/io/anuke/mindustry/core/World.java index 81bd39c401..99e3996a42 100644 --- a/core/src/io/anuke/mindustry/core/World.java +++ b/core/src/io/anuke/mindustry/core/World.java @@ -5,26 +5,21 @@ 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.*; +import com.badlogic.gdx.math.GridPoint2; +import com.badlogic.gdx.math.MathUtils; +import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.utils.Array; import io.anuke.mindustry.Vars; import io.anuke.mindustry.ai.Pathfind; import io.anuke.mindustry.core.GameState.State; import io.anuke.mindustry.entities.TileEntity; -import io.anuke.mindustry.entities.effect.Fx; -import io.anuke.mindustry.resource.ItemStack; -import io.anuke.mindustry.resource.Recipe; import io.anuke.mindustry.world.*; import io.anuke.mindustry.world.blocks.*; -import io.anuke.ucore.core.Effects; -import io.anuke.ucore.core.Sounds; import io.anuke.ucore.entities.Entities; import io.anuke.ucore.entities.Entity; -import io.anuke.ucore.entities.SolidEntity; import io.anuke.ucore.modules.Module; import io.anuke.ucore.util.Mathf; -import io.anuke.ucore.util.Profiler; import io.anuke.ucore.util.Tmp; public class World extends Module{ @@ -43,9 +38,7 @@ public class World extends Module{ @Override public void update(){ - Profiler.begin("pathfind"); pathfind.update(); - Profiler.end("pathfind"); } @Override @@ -190,7 +183,7 @@ public class World extends Module{ Generator.generate(mapPixmaps[map.ordinal()], tiles); //TODO multiblock core - placeBlock(control.getCore().x, control.getCore().y, ProductionBlocks.core, 0, false); + control.getInput().placeBlock(control.getCore().x, control.getCore().y, ProductionBlocks.core, 0, false); if(map != Map.tutorial){ setDefaultBlocks(); @@ -239,146 +232,6 @@ public class World extends Module{ return seed; } - //TODO move to control or player? - public void placeBlock(int x, int y, Block result, int rotation, boolean effects){ - Tile tile = tile(x, y); - - //just in case - if(tile == null) - return; - - tile.setBlock(result, rotation); - - if(result.isMultiblock()){ - int offsetx = -(result.width-1)/2; - int offsety = -(result.height-1)/2; - - for(int dx = 0; dx < result.width; dx ++){ - for(int dy = 0; dy < result.height; dy ++){ - int worldx = dx + offsetx + x; - int worldy = dy + offsety + y; - if(!(worldx == x && worldy == y)){ - Tile toplace = tile(worldx, worldy); - toplace.setLinked((byte)(dx + offsetx), (byte)(dy + offsety)); - } - - if(effects) Effects.effect(Fx.place, worldx * Vars.tilesize, worldy * Vars.tilesize); - } - } - }else{ - if(effects) Effects.effect(Fx.place, x * Vars.tilesize, y * Vars.tilesize); - } - - //Effects.shake(2f, 2f, player); - if(effects) Sounds.play("place"); - } - - //TODO move this to control? - public boolean validPlace(int x, int y, Block type){ - - for(SpawnPoint spawn : control.getSpawnPoints()){ - if(Vector2.dst(x * tilesize, y * tilesize, spawn.start.worldx(), spawn.start.worldy()) < enemyspawnspace){ - return false; - } - } - - Tmp.r2.setSize(type.width * Vars.tilesize, type.height * Vars.tilesize); - Vector2 offset = type.getPlaceOffset(); - Tmp.r2.setCenter(offset.x + x * Vars.tilesize, offset.y + y * Vars.tilesize); - - for(SolidEntity e : Entities.getNearby(control.enemyGroup, x * tilesize, y * tilesize, tilesize * 2f)){ - Rectangle rect = e.hitbox.getRect(e.x, e.y); - - if(Tmp.r2.overlaps(rect)){ - return false; - } - } - - if(!Vars.android && Tmp.r2.overlaps(player.hitbox.getRect(player.x, player.y))){ - return false; - } - - Tile tile = tile(x, y); - - if(tile == null) return false; - - if(!type.isMultiblock() && Vars.control.getTutorial().active() && - Vars.control.getTutorial().showBlock()){ - - GridPoint2 point = Vars.control.getTutorial().getPlacePoint(); - int rotation = Vars.control.getTutorial().getPlaceRotation(); - Block block = Vars.control.getTutorial().getPlaceBlock(); - - if(type != block || point.x != x - control.getCore().x || point.y != y - control.getCore().y - || (rotation != -1 && rotation != Vars.player.rotation)){ - return false; - } - }else if(Vars.control.getTutorial().active()){ - return false; - } - - if(type.isMultiblock()){ - int offsetx = -(type.width-1)/2; - int offsety = -(type.height-1)/2; - for(int dx = 0; dx < type.width; dx ++){ - for(int dy = 0; dy < type.height; dy ++){ - Tile other = tile(x + dx + offsetx, y + dy + offsety); - if(other == null || other.block() != Blocks.air){ - return false; - } - } - } - return true; - }else{ - if(tile.block() != type && type.canReplace(tile.block()) && tile.block().isMultiblock() == type.isMultiblock()){ - return true; - } - return tile != null && tile.block() == Blocks.air; - } - } - - public void breakBlock(int x, int y){ - Tile tile = tile(x, y); - - if(tile == null) return; - - Block block = tile.isLinked() ? tile.getLinked().block() : tile.block(); - Recipe result = null; - - for(Recipe recipe : Recipe.values()){ - if(recipe.result == block){ - result = recipe; - break; - } - } - - if(result != null){ - for(ItemStack stack : result.requirements){ - Vars.control.addItem(stack.item, (int)(stack.amount * Vars.breakDropAmount)); - } - } - - if(tile.block().drops != null){ - Vars.control.addItem(tile.block().drops.item, tile.block().drops.amount); - } - - Effects.shake(3f, 1f, player); - Sounds.play("break"); - - if(!tile.block().isMultiblock() && !tile.isLinked()){ - tile.setBlock(Blocks.air); - Effects.effect(Fx.breakBlock, tile.worldx(), tile.worldy()); - }else{ - Tile target = tile.isLinked() ? tile.getLinked() : tile; - Array removals = target.getLinkedTiles(); - for(Tile toremove : removals){ - //note that setting a new block automatically unlinks it - toremove.setBlock(Blocks.air); - Effects.effect(Fx.breakBlock, toremove.worldx(), toremove.worldy()); - } - } - } - public void removeBlock(Tile tile){ if(!tile.block().isMultiblock() && !tile.isLinked()){ tile.setBlock(Blocks.air); @@ -392,34 +245,6 @@ public class World extends Module{ } } - public boolean validBreak(int x, int y){ - Tile tile = tile(x, y); - - if(tile == null || tile.block() == ProductionBlocks.core) return false; - - if(tile.isLinked() && tile.getLinked().block() == ProductionBlocks.core){ - return false; - } - - if(Vars.control.getTutorial().active()){ - - if(Vars.control.getTutorial().showBlock()){ - GridPoint2 point = Vars.control.getTutorial().getPlacePoint(); - int rotation = Vars.control.getTutorial().getPlaceRotation(); - Block block = Vars.control.getTutorial().getPlaceBlock(); - - if(block != Blocks.air || point.x != x - control.getCore().x || point.y != y - control.getCore().y - || (rotation != -1 && rotation != Vars.player.rotation)){ - return false; - } - }else{ - return false; - } - } - - return tile.breakable(); - } - public TileEntity findTileTarget(float x, float y, Tile tile, float range, boolean damaged){ Entity closest = null; float dst = 0; diff --git a/core/src/io/anuke/mindustry/entities/Player.java b/core/src/io/anuke/mindustry/entities/Player.java index 75829d569f..ae6b0c920b 100644 --- a/core/src/io/anuke/mindustry/entities/Player.java +++ b/core/src/io/anuke/mindustry/entities/Player.java @@ -26,7 +26,7 @@ public class Player extends DestructibleEntity{ public transient float breaktime = 0; public transient Recipe recipe; public transient int rotation; - public transient PlaceMode placeMode = PlaceMode.touch; + public transient PlaceMode placeMode = android ? PlaceMode.cursor : PlaceMode.hold; public Player(){ hitbox.setSize(5); @@ -86,7 +86,7 @@ public class Player extends DestructibleEntity{ vector.x += speed; boolean shooting = !Inputs.keyDown("dash") && Inputs.buttonDown(Buttons.LEFT) && recipe == null - && !ui.hasMouse() && !control.getInput().onConfigurable(); + && !ui.hasMouse() && !control.getInput().onConfigurable() && !Inputs.keyDown("area_delete_mode"); if(shooting && Timers.get(this, "reload", weapon.reload)){ weapon.shoot(this); @@ -108,7 +108,8 @@ public class Player extends DestructibleEntity{ } if(!shooting){ - angle = Mathf.lerpAngDelta(angle, vector.angle(), 0.13f); + if(!vector.isZero()) + angle = Mathf.lerpAngDelta(angle, vector.angle(), 0.13f); }else{ float angle = Angles.mouseAngle(x, y); this.angle = Mathf.lerpAngDelta(this.angle, angle, 0.1f); diff --git a/core/src/io/anuke/mindustry/input/AndroidInput.java b/core/src/io/anuke/mindustry/input/AndroidInput.java index 0f66669ea4..ba7aa18447 100644 --- a/core/src/io/anuke/mindustry/input/AndroidInput.java +++ b/core/src/io/anuke/mindustry/input/AndroidInput.java @@ -7,7 +7,6 @@ import com.badlogic.gdx.Input.Keys; import com.badlogic.gdx.input.GestureDetector; import com.badlogic.gdx.math.Vector2; -import io.anuke.mindustry.Vars; import io.anuke.mindustry.core.GameState; import io.anuke.mindustry.core.GameState.State; import io.anuke.mindustry.resource.ItemStack; @@ -20,9 +19,10 @@ import io.anuke.ucore.scene.ui.layout.Unit; import io.anuke.ucore.util.Mathf; public class AndroidInput extends InputHandler{ + public float lmousex, lmousey; public float mousex, mousey; public boolean brokeBlock = false; - private float lmousex, lmousey; + private boolean placing = true; private float warmup; private float warmupDelay = 20; @@ -34,11 +34,12 @@ public class AndroidInput extends InputHandler{ @Override public float getCursorEndY(){ return Gdx.input.getY(0); } @Override public float getCursorX(){ return mousex; } @Override public float getCursorY(){ return mousey; } + @Override public boolean drawPlace(){ return placing; } @Override public boolean keyDown(int keycode){ if(keycode == Keys.E){ - place(); + } return false; } @@ -46,26 +47,43 @@ public class AndroidInput extends InputHandler{ @Override public boolean touchUp(int screenX, int screenY, int pointer, int button){ brokeBlock = false; + if(placing && pointer == 0 && !player.placeMode.pan){ + player.placeMode.released(getBlockX(), getBlockY(), getBlockEndX(), getBlockEndY()); + placing = false; + } return false; } @Override public boolean touchDown(int screenX, int screenY, int pointer, int button){ + if(ui.hasMouse()) return false; + ui.hideTooltip(); - if(pointer == 0){ - lmousex = screenX; - lmousey = screenY; + lmousex = screenX; + lmousey = screenY; + + if(!player.placeMode.pan){ + if(pointer == 0){ + placing = true; + + mousex = screenX; + mousey = screenY; + + }else{ + placing = false; + } } + warmup = 0; if(!GameState.is(State.menu)){ - Tile cursor = Vars.world.tile(Mathf.scl2(Graphics.mouseWorld().x, tilesize), Mathf.scl2(Graphics.mouseWorld().y, tilesize)); - if(cursor != null && !Vars.ui.hasMouse()){ + Tile cursor = world.tile(Mathf.scl2(Graphics.mouseWorld().x, tilesize), Mathf.scl2(Graphics.mouseWorld().y, tilesize)); + if(cursor != null && !ui.hasMouse()){ Tile linked = cursor.isLinked() ? cursor.getLinked() : cursor; if(linked != null && linked.block() instanceof Configurable){ - Vars.ui.showConfig(linked); - }else if(!Vars.ui.hasConfigMouse()){ - Vars.ui.hideConfig(); + ui.showConfig(linked); + }else if(!ui.hasConfigMouse()){ + ui.hideConfig(); } } } @@ -85,7 +103,7 @@ public class AndroidInput extends InputHandler{ public Tile selected(){ Vector2 vec = Graphics.world(mousex, mousey); - return Vars.world.tile(Mathf.scl2(vec.x, tilesize), Mathf.scl2(vec.y, tilesize)); + return world.tile(Mathf.scl2(vec.x, tilesize), Mathf.scl2(vec.y, tilesize)); } public void breakBlock(){ @@ -94,23 +112,18 @@ public class AndroidInput extends InputHandler{ if(player.breaktime >= tile.block().breaktime){ brokeBlock = true; - Vars.world.breakBlock(tile.x, tile.y); + breakBlock(tile.x, tile.y); player.breaktime = 0f; } } + + public void tryPlaceBlock(int tilex, int tiley){ + if(player.recipe != null && control.hasItems(player.recipe.requirements) && validPlace(tilex, tiley, player.recipe.result)){ - public void place(){ - Vector2 vec = Graphics.world(mousex, mousey); - - int tilex = Mathf.scl2(vec.x, tilesize); - int tiley = Mathf.scl2(vec.y, tilesize); - - if(player.recipe != null && Vars.control.hasItems(player.recipe.requirements) && Vars.world.validPlace(tilex, tiley, player.recipe.result)){ - - Vars.world.placeBlock(tilex, tiley, player.recipe.result, player.rotation, true); + placeBlock(tilex, tiley, player.recipe.result, player.rotation, true); for(ItemStack stack : player.recipe.requirements){ - Vars.control.removeItem(stack); + control.removeItem(stack); } } } @@ -132,7 +145,7 @@ public class AndroidInput extends InputHandler{ if(sel == null) return; - if(warmup > warmupDelay && Vars.world.validBreak(sel.x, sel.y)){ + if(warmup > warmupDelay && validBreak(sel.x, sel.y)){ player.breaktime += Timers.delta(); if(player.breaktime > selected().block().breaktime){ @@ -145,8 +158,6 @@ public class AndroidInput extends InputHandler{ mousey = ly; }else{ warmup = 0; - //lmousex = Gdx.input.getX(0); - //lmousey = Gdx.input.getY(0); player.breaktime = 0; mousex = Mathf.clamp(mousex, 0, Gdx.graphics.getWidth()); diff --git a/core/src/io/anuke/mindustry/input/Input.java b/core/src/io/anuke/mindustry/input/DesktopInput.java similarity index 71% rename from core/src/io/anuke/mindustry/input/Input.java rename to core/src/io/anuke/mindustry/input/DesktopInput.java index ab3556f007..35dd95f448 100644 --- a/core/src/io/anuke/mindustry/input/Input.java +++ b/core/src/io/anuke/mindustry/input/DesktopInput.java @@ -7,7 +7,6 @@ import com.badlogic.gdx.Input.Buttons; import com.badlogic.gdx.Input.Keys; import com.badlogic.gdx.math.Vector2; -import io.anuke.mindustry.Vars; import io.anuke.mindustry.core.GameState; import io.anuke.mindustry.core.GameState.State; import io.anuke.mindustry.resource.ItemStack; @@ -20,27 +19,27 @@ import io.anuke.ucore.core.Timers; import io.anuke.ucore.scene.utils.Cursors; import io.anuke.ucore.util.Mathf; -public class Input extends InputHandler{ - float mousex, mousey; - float endx, endy; +public class DesktopInput extends InputHandler{ + int mousex, mousey; + int endx, endy; @Override public float getCursorEndX(){ return endx; } @Override public float getCursorEndY(){ return endy; } - @Override public float getCursorX(){ return Graphics.screen(mousex, mousey).x; } - @Override public float getCursorY(){ return Gdx.graphics.getHeight() - Graphics.screen(mousex, mousey).y; } + @Override public float getCursorX(){ return (int)(Graphics.screen(mousex, mousey).x + 2); } + @Override public float getCursorY(){ return (int)(Gdx.graphics.getHeight() - 1 - Graphics.screen(mousex, mousey).y); } @Override public boolean touchDown (int screenX, int screenY, int pointer, int button){ if(button == Buttons.LEFT){ Vector2 vec = Graphics.world(screenX, screenY); - mousex = vec.x; - mousey = vec.y; + mousex = (int)vec.x; + mousey = (int)vec.y; } return false; } public boolean touchUp(int screenX, int screenY, int pointer, int button){ - player.placeMode.tapped(getBlockX(), getBlockY(), getBlockEndX(), getBlockEndY()); + player.placeMode.released(getBlockX(), getBlockY(), getBlockEndX(), getBlockEndY()); return false; } @@ -49,15 +48,14 @@ public class Input extends InputHandler{ if(player.isDead()) return; if(!Inputs.buttonDown(Buttons.LEFT)){ - Vector2 vec = Graphics.world(Gdx.input.getX(), Gdx.input.getY()); - mousex = vec.x; - mousey = vec.y; + mousex = (int)Graphics.mouseWorld().x; + mousey = (int)Graphics.mouseWorld().y; } endx = Gdx.input.getX(); endy = Gdx.input.getY(); - if(Inputs.scrolled() && Inputs.keyDown("zoom_hold") && !GameState.is(State.menu) && !Vars.ui.onDialog()){ - Vars.renderer.scaleCamera(Inputs.scroll()); + if(Inputs.scrolled() && Inputs.keyDown("zoom_hold") && !GameState.is(State.menu) && !ui.onDialog()){ + renderer.scaleCamera(Inputs.scroll()); } if(Inputs.scrolled()){ @@ -72,6 +70,12 @@ public class Input extends InputHandler{ player.rotation ++; } + if(Inputs.keyDown("area_delete_mode")){ + player.placeMode = PlaceMode.areaDelete; + }else{ + player.placeMode = PlaceMode.hold; + } + player.rotation = Mathf.mod(player.rotation, 4); for(int i = 0; i < 9; i ++){ @@ -81,19 +85,19 @@ public class Input extends InputHandler{ } } - Tile cursor = Vars.world.tile(tilex(), tiley()); + Tile cursor = world.tile(tilex(), tiley()); if(Inputs.buttonUp(Buttons.LEFT) && cursor != null){ Tile linked = cursor.isLinked() ? cursor.getLinked() : cursor; if(linked != null && linked.block() instanceof Configurable){ - Vars.ui.showConfig(linked); - }else if(!Vars.ui.hasConfigMouse()){ - Vars.ui.hideConfig(); + ui.showConfig(linked); + }else if(!ui.hasConfigMouse()){ + ui.hideConfig(); } } if(Inputs.buttonUp(Buttons.RIGHT)){ - Vars.ui.hideConfig(); + ui.hideConfig(); } if(player.recipe != null && Inputs.buttonUp(Buttons.RIGHT)){ @@ -102,11 +106,11 @@ public class Input extends InputHandler{ } //block breaking - if(Inputs.buttonDown(Buttons.RIGHT) && cursor != null && Vars.world.validBreak(tilex(), tiley())){ + if(Inputs.buttonDown(Buttons.RIGHT) && cursor != null && validBreak(tilex(), tiley())){ Tile tile = cursor; player.breaktime += Timers.delta(); if(player.breaktime >= tile.getBreakTime()){ - Vars.world.breakBlock(cursor.x, cursor.y); + breakBlock(cursor.x, cursor.y); player.breaktime = 0f; } }else{ @@ -117,16 +121,16 @@ public class Input extends InputHandler{ public void tryPlaceBlock(int x, int y){ if(player.recipe != null && - Vars.world.validPlace(x, y, player.recipe.result) && !ui.hasMouse() && cursorNear() && - Vars.control.hasItems(player.recipe.requirements)){ + validPlace(x, y, player.recipe.result) && !ui.hasMouse() && cursorNear() && + control.hasItems(player.recipe.requirements)){ - Vars.world.placeBlock(x, y, player.recipe.result, player.rotation, true); + placeBlock(x, y, player.recipe.result, player.rotation, true); for(ItemStack stack : player.recipe.requirements){ - Vars.control.removeItem(stack); + control.removeItem(stack); } - if(!Vars.control.hasItems(player.recipe.requirements)){ + if(!control.hasItems(player.recipe.requirements)){ Cursors.restoreCursor(); } } diff --git a/core/src/io/anuke/mindustry/input/GestureHandler.java b/core/src/io/anuke/mindustry/input/GestureHandler.java index 50117222f8..bc2274eb8a 100644 --- a/core/src/io/anuke/mindustry/input/GestureHandler.java +++ b/core/src/io/anuke/mindustry/input/GestureHandler.java @@ -9,7 +9,6 @@ import com.badlogic.gdx.math.Vector2; import io.anuke.mindustry.Vars; import io.anuke.ucore.core.Core; import io.anuke.ucore.scene.ui.layout.Unit; -import io.anuke.ucore.util.Mathf; public class GestureHandler extends GestureAdapter{ AndroidInput input; @@ -29,14 +28,10 @@ public class GestureHandler extends GestureAdapter{ @Override public boolean tap (float x, float y, int count, int button) { - if(!ui.hasMouse() && player.recipe != null && - Vars.control.hasItems(player.recipe.requirements) && !Vars.ui.hasMouse() && !input.brokeBlock){ - - player.placeMode.tapped(Mathf.scl2(x, Vars.tilesize), Mathf.scl2(y, Vars.tilesize), Mathf.scl2(x, Vars.tilesize), Mathf.scl2(y, Vars.tilesize)); - + if(!player.placeMode.pan){ input.mousex = x; input.mousey = y; - return true; + player.placeMode.tapped(input.getBlockX(), input.getBlockY()); } return false; } diff --git a/core/src/io/anuke/mindustry/input/InputHandler.java b/core/src/io/anuke/mindustry/input/InputHandler.java index d77fa356fc..f5c83e089b 100644 --- a/core/src/io/anuke/mindustry/input/InputHandler.java +++ b/core/src/io/anuke/mindustry/input/InputHandler.java @@ -3,15 +3,29 @@ package io.anuke.mindustry.input; import static io.anuke.mindustry.Vars.*; import com.badlogic.gdx.InputAdapter; +import com.badlogic.gdx.math.GridPoint2; +import com.badlogic.gdx.math.Rectangle; import com.badlogic.gdx.math.Vector2; +import com.badlogic.gdx.utils.Array; import io.anuke.mindustry.Vars; +import io.anuke.mindustry.entities.effect.Fx; import io.anuke.mindustry.resource.ItemStack; +import io.anuke.mindustry.resource.Recipe; +import io.anuke.mindustry.world.Block; +import io.anuke.mindustry.world.SpawnPoint; import io.anuke.mindustry.world.Tile; +import io.anuke.mindustry.world.blocks.Blocks; +import io.anuke.mindustry.world.blocks.ProductionBlocks; import io.anuke.mindustry.world.blocks.types.Configurable; +import io.anuke.ucore.core.Effects; import io.anuke.ucore.core.Graphics; +import io.anuke.ucore.core.Sounds; +import io.anuke.ucore.entities.Entities; +import io.anuke.ucore.entities.SolidEntity; import io.anuke.ucore.scene.utils.Cursors; import io.anuke.ucore.util.Mathf; +import io.anuke.ucore.util.Tmp; public abstract class InputHandler extends InputAdapter{ public abstract void update(); @@ -24,6 +38,7 @@ public abstract class InputHandler extends InputAdapter{ public int getBlockEndX(){ return Mathf.sclb(Graphics.world(getCursorEndX(), getCursorEndY()).x, Vars.tilesize, round2()); } public int getBlockEndY(){ return Mathf.sclb(Graphics.world(getCursorEndX(), getCursorEndY()).y, Vars.tilesize, round2()); } public void resetCursor(){} + public boolean drawPlace(){ return true; } public boolean onConfigurable(){ Tile tile = Vars.world.tile(getBlockX(), getBlockY()); @@ -36,10 +51,10 @@ public abstract class InputHandler extends InputAdapter{ public void tryPlaceBlock(int x, int y){ if(player.recipe != null && - Vars.world.validPlace(x, y, player.recipe.result) && !ui.hasMouse() && cursorNear() && + validPlace(x, y, player.recipe.result) && !ui.hasMouse() && cursorNear() && Vars.control.hasItems(player.recipe.requirements)){ - Vars.world.placeBlock(x, y, player.recipe.result, player.rotation, true); + placeBlock(x, y, player.recipe.result, player.rotation, true); for(ItemStack stack : player.recipe.requirements){ Vars.control.removeItem(stack); @@ -51,7 +66,178 @@ public abstract class InputHandler extends InputAdapter{ } } + public void tryDeleteBlock(int x, int y){ + if(cursorNear() && validBreak(x, y)){ + breakBlock(x, y); + } + } + public boolean round2(){ return !(player.recipe != null && player.recipe.result.isMultiblock() && player.recipe.result.height % 2 == 0); } + + public boolean validPlace(int x, int y, Block type){ + + for(SpawnPoint spawn : control.getSpawnPoints()){ + if(Vector2.dst(x * tilesize, y * tilesize, spawn.start.worldx(), spawn.start.worldy()) < enemyspawnspace){ + return false; + } + } + + Tmp.r2.setSize(type.width * Vars.tilesize, type.height * Vars.tilesize); + Vector2 offset = type.getPlaceOffset(); + Tmp.r2.setCenter(offset.x + x * Vars.tilesize, offset.y + y * Vars.tilesize); + + for(SolidEntity e : Entities.getNearby(control.enemyGroup, x * tilesize, y * tilesize, tilesize * 2f)){ + Rectangle rect = e.hitbox.getRect(e.x, e.y); + + if(Tmp.r2.overlaps(rect)){ + return false; + } + } + + if(!Vars.android && Tmp.r2.overlaps(player.hitbox.getRect(player.x, player.y))){ + return false; + } + + Tile tile = world.tile(x, y); + + if(tile == null) return false; + + if(!type.isMultiblock() && Vars.control.getTutorial().active() && + Vars.control.getTutorial().showBlock()){ + + GridPoint2 point = Vars.control.getTutorial().getPlacePoint(); + int rotation = Vars.control.getTutorial().getPlaceRotation(); + Block block = Vars.control.getTutorial().getPlaceBlock(); + + if(type != block || point.x != x - control.getCore().x || point.y != y - control.getCore().y + || (rotation != -1 && rotation != Vars.player.rotation)){ + return false; + } + }else if(Vars.control.getTutorial().active()){ + return false; + } + + if(type.isMultiblock()){ + int offsetx = -(type.width-1)/2; + int offsety = -(type.height-1)/2; + for(int dx = 0; dx < type.width; dx ++){ + for(int dy = 0; dy < type.height; dy ++){ + Tile other = world.tile(x + dx + offsetx, y + dy + offsety); + if(other == null || other.block() != Blocks.air){ + return false; + } + } + } + return true; + }else{ + if(tile.block() != type && type.canReplace(tile.block()) && tile.block().isMultiblock() == type.isMultiblock()){ + return true; + } + return tile != null && tile.block() == Blocks.air; + } + } + + public boolean validBreak(int x, int y){ + Tile tile = world.tile(x, y); + + if(tile == null || tile.block() == ProductionBlocks.core) return false; + + if(tile.isLinked() && tile.getLinked().block() == ProductionBlocks.core){ + return false; + } + + if(Vars.control.getTutorial().active()){ + + if(Vars.control.getTutorial().showBlock()){ + GridPoint2 point = Vars.control.getTutorial().getPlacePoint(); + int rotation = Vars.control.getTutorial().getPlaceRotation(); + Block block = Vars.control.getTutorial().getPlaceBlock(); + + if(block != Blocks.air || point.x != x - control.getCore().x || point.y != y - control.getCore().y + || (rotation != -1 && rotation != Vars.player.rotation)){ + return false; + } + }else{ + return false; + } + } + + return tile.breakable(); + } + + public void placeBlock(int x, int y, Block result, int rotation, boolean effects){ + Tile tile = world.tile(x, y); + + //just in case + if(tile == null) + return; + + tile.setBlock(result, rotation); + + if(result.isMultiblock()){ + int offsetx = -(result.width-1)/2; + int offsety = -(result.height-1)/2; + + for(int dx = 0; dx < result.width; dx ++){ + for(int dy = 0; dy < result.height; dy ++){ + int worldx = dx + offsetx + x; + int worldy = dy + offsety + y; + if(!(worldx == x && worldy == y)){ + Tile toplace = world.tile(worldx, worldy); + toplace.setLinked((byte)(dx + offsetx), (byte)(dy + offsety)); + } + + if(effects) Effects.effect(Fx.place, worldx * Vars.tilesize, worldy * Vars.tilesize); + } + } + }else{ + if(effects) Effects.effect(Fx.place, x * Vars.tilesize, y * Vars.tilesize); + } + + if(effects) Sounds.play("place"); + } + + public void breakBlock(int x, int y){ + Tile tile = world.tile(x, y); + + if(tile == null) return; + + Block block = tile.isLinked() ? tile.getLinked().block() : tile.block(); + Recipe result = null; + + for(Recipe recipe : Recipe.values()){ + if(recipe.result == block){ + result = recipe; + break; + } + } + + if(result != null){ + for(ItemStack stack : result.requirements){ + Vars.control.addItem(stack.item, (int)(stack.amount * Vars.breakDropAmount)); + } + } + + if(tile.block().drops != null){ + Vars.control.addItem(tile.block().drops.item, tile.block().drops.amount); + } + + Effects.shake(3f, 1f, player); + Sounds.play("break"); + + if(!tile.block().isMultiblock() && !tile.isLinked()){ + tile.setBlock(Blocks.air); + Effects.effect(Fx.breakBlock, tile.worldx(), tile.worldy()); + }else{ + Tile target = tile.isLinked() ? tile.getLinked() : tile; + Array removals = target.getLinkedTiles(); + for(Tile toremove : removals){ + //note that setting a new block automatically unlinks it + toremove.setBlock(Blocks.air); + Effects.effect(Fx.breakBlock, toremove.worldx(), toremove.worldy()); + } + } + } } diff --git a/core/src/io/anuke/mindustry/input/PlaceMode.java b/core/src/io/anuke/mindustry/input/PlaceMode.java index 2ef562b6a2..35c9d207d2 100644 --- a/core/src/io/anuke/mindustry/input/PlaceMode.java +++ b/core/src/io/anuke/mindustry/input/PlaceMode.java @@ -2,12 +2,15 @@ package io.anuke.mindustry.input; import static io.anuke.mindustry.Vars.*; +import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Input.Buttons; import com.badlogic.gdx.graphics.Color; +import com.badlogic.gdx.graphics.Colors; import com.badlogic.gdx.math.MathUtils; import com.badlogic.gdx.math.Vector2; import io.anuke.mindustry.Vars; +import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Tile; import io.anuke.ucore.core.Draw; import io.anuke.ucore.core.Inputs; @@ -18,25 +21,32 @@ import io.anuke.ucore.util.Tmp; public enum PlaceMode{ cursor{ + { + shown = true; + lockCamera = true; + pan = true; + } + public void draw(int tilex, int tiley, int endx, int endy){ float x = tilex * Vars.tilesize; float y = tiley * Vars.tilesize; - boolean valid = world.validPlace(tilex, tiley, player.recipe.result) && (android || control.getInput().cursorNear()); + boolean valid = control.getInput().validPlace(tilex, tiley, player.recipe.result) && (android || control.getInput().cursorNear()); Vector2 offset = player.recipe.result.getPlaceOffset(); - float si = MathUtils.sin(Timers.time() / 6f) + 1; + float si = MathUtils.sin(Timers.time() / 6f) + 1.5f; - Draw.color(valid ? Color.PURPLE : Color.SCARLET); + Draw.color(valid ? Colors.get("place") : Colors.get("placeInvalid")); Draw.thickness(2f); - Draw.linecrect(x + offset.x, y + offset.y, tilesize * player.recipe.result.width + si, tilesize * player.recipe.result.height + si); + Draw.linecrect(x + offset.x, y + offset.y, tilesize * player.recipe.result.width + si, + tilesize * player.recipe.result.height + si); player.recipe.result.drawPlace(tilex, tiley, player.rotation, valid); Draw.thickness(2f); if(player.recipe.result.rotate){ - Draw.color(Color.ORANGE); + Draw.color(Colors.get("placeRotate")); Tmp.v1.set(7, 0).rotate(player.rotation * 90); Draw.line(x, y, x + Tmp.v1.x, y + Tmp.v1.y); } @@ -46,24 +56,42 @@ public enum PlaceMode{ else Cursors.restoreCursor(); } - }, + + public void tapped(int tilex, int tiley){ + System.out.println("tap " + tilex + " " + tiley); + control.getInput().tryPlaceBlock(tilex, tiley); + } + }, touch{ + { + shown = true; + lockCamera = false; + showRotate = true; + showCancel = true; + } + + public void tapped(int x, int y){ + control.getInput().tryPlaceBlock(x, y); + } + }, + areaDelete{ int maxlen = 10; int tilex; int tiley; int endx; int endy; - int rotation; { + shown = true; lockCamera = true; + delete = true; } public void draw(int tilex, int tiley, int endx, int endy){ - float t = Vars.tilesize; + float t = tilesize; process(tilex, tiley, endx, endy); - int tx = tilex, ty = tiley, ex = endx, ey = endy; + tilex = this.tilex; tiley = this.tiley; endx = this.endx; endy = this.endy; float x = this.tilex * t, y = this.tiley * t, @@ -79,16 +107,124 @@ public enum PlaceMode{ y2 += t/2; } + Draw.color(Colors.get("break")); + Draw.thick(1f); + for(int cx = tilex; cx <= endx; cx ++){ + for(int cy = tiley; cy <= endy; cy ++){ + Tile tile = Vars.world.tile(cx, cy); + if(tile != null && tile.getLinked() != null) + tile = tile.getLinked(); + if(tile != null && control.getInput().validBreak(tile.x, tile.y)){ + Vector2 offset = tile.block().getPlaceOffset(); + Draw.linecrect(tile.worldx() + offset.x, tile.worldy() + offset.y, + tile.block().width * t, tile.block().height * t); + } + } + } + + Draw.thick(2f); + Draw.color(control.getInput().cursorNear() ? Colors.get("break") : Colors.get("breakInvalid")); + Draw.linerect(x, y, x2 - x, y2 - y); + Draw.alpha(0.3f); + Draw.crect("blank", x, y, x2 - x, y2 - y); + Draw.reset(); + } + + public void released(int tilex, int tiley, int endx, int endy){ + process(tilex, tiley, endx, endy); + tilex = this.tilex; tiley = this.tiley; + endx = this.endx; endy = this.endy; + + for(int cx = tilex; cx <= endx; cx ++){ + for(int cy = tiley; cy <= endy; cy ++){ + control.getInput().tryDeleteBlock(cx, cy); + } + } + } + + void process(int tilex, int tiley, int endx, int endy){ + + if(Math.abs(endx - tilex) > maxlen){ + endx = Mathf.sign(endx - tilex) * maxlen + tilex; + } + + if(Math.abs(endy - tiley) > maxlen){ + endy = Mathf.sign(endy - tiley) * maxlen + tiley; + } + + if(endx < tilex){ + int t = endx; + endx = tilex; + tilex = t; + } + if(endy < tiley){ + int t = endy; + endy = tiley; + tiley = t; + } + + this.endx = endx; + this.endy = endy; + this.tilex = tilex; + this.tiley = tiley; + } + }, + hold{ //TODO multiblock support! + int maxlen = 10; + int tilex; + int tiley; + int endx; + int endy; + int rotation; + + { + lockCamera = true; + shown = true; + showCancel = true; + showRotate = true; + } + + public void draw(int tilex, int tiley, int endx, int endy){ + if(Vars.android && !Gdx.input.isTouched(0)){ + return; + } + + float t = Vars.tilesize; + Block block = player.recipe.result; + Vector2 offset = block.getPlaceOffset(); + + process(tilex, tiley, endx, endy); + int tx = tilex, ty = tiley, ex = endx, ey = endy; + tilex = this.tilex; tiley = this.tiley; + endx = this.endx; endy = this.endy; + float x = this.tilex * t, y = this.tiley * t, + x2 = this.endx * t, y2 = this.endy * t; + + if(x2 >= x){ + x -= block.width * t/2; + x2 += block.width * t/2; + } + + if(y2 >= y){ + y -= block.height * t/2; + y2 += block.height * t/2; + } + + x += offset.x; + y += offset.y; + x2 += offset.x; + y2 += offset.y; + if(tilex == endx && tiley == endy){ cursor.draw(tilex, tiley, endx, endy); }else{ Draw.thick(2f); - Draw.color(control.getInput().cursorNear() ? Color.PURPLE : Color.RED); + Draw.color(control.getInput().cursorNear() ? Colors.get("place") : Colors.get("placeInvalid")); Draw.linerect(x, y, x2 - x, y2 - y); Draw.alpha(0.3f); Draw.crect("blank", x, y, x2 - x, y2 - y); - - Draw.color(Color.RED); + + Draw.color(Colors.get("placeInvalid")); int amount = 1; for(int cx = 0; cx <= Math.abs(endx - tilex); cx ++){ @@ -96,17 +232,17 @@ public enum PlaceMode{ int px = tx + cx * Mathf.sign(ex - tx), py = ty + cy * Mathf.sign(ey - ty); - if(!world.validPlace(px, py, player.recipe.result) + if(!control.getInput().validPlace(px, py, player.recipe.result) || !control.hasItems(player.recipe.requirements, amount)){ - Draw.square(px * t, py * t, t/2); + Draw.linecrect(px * t + offset.x, py * t + offset.y, t*block.width, t*block.height); } amount ++; } } if(player.recipe.result.rotate){ - float cx = tilex * t, cy = tiley * t; - Draw.color(Color.ORANGE); + float cx = tx * t, cy = ty * t; + Draw.color(Colors.get("placeRotate")); Tmp.v1.set(7, 0).rotate(rotation * 90); Draw.line(cx, cy, cx + Tmp.v1.x, cy + Tmp.v1.y); } @@ -114,11 +250,8 @@ public enum PlaceMode{ } } - public void tapped(int tilex, int tiley, int endx, int endy){ - int prev = player.rotation; + public void released(int tilex, int tiley, int endx, int endy){ process(tilex, tiley, endx, endy); - //tilex = this.tilex; tiley = this.tiley; - //endx = this.endx; endy = this.endy; player.rotation = this.rotation; @@ -129,9 +262,6 @@ public enum PlaceMode{ tiley + y * Mathf.sign(endy - tiley)); } } - - player.rotation = prev; - } void process(int tilex, int tiley, int endx, int endy){ @@ -181,7 +311,7 @@ public enum PlaceMode{ public void draw(int tilex, int tiley, int endx, int endy){ Tile tile = world.tile(tilex, tiley); - if(tile != null && world.validBreak(tilex, tiley)){ + if(tile != null && control.getInput().validBreak(tilex, tiley)){ if(tile.isLinked()) tile = tile.getLinked(); Vector2 offset = tile.block().getPlaceOffset(); @@ -191,20 +321,29 @@ public enum PlaceMode{ Draw.color(Color.YELLOW, Color.SCARLET, fract); Draw.linecrect(tile.worldx() + offset.x, tile.worldy() + offset.y, tile.block().width * Vars.tilesize, tile.block().height * Vars.tilesize); }else if(android && player.breaktime > 0){ - Draw.color(Color.YELLOW, Color.SCARLET, fract); - Draw.circle(tile.worldx(), tile.worldy(), 4 + (1f - fract) * 26); + Draw.color(Colors.get("breakStart"), Colors.get("break"), fract); + Draw.polygon(25, tile.worldx() + offset.x, tile.worldy() + offset.y, 4 + (1f - fract) * 26); } Draw.reset(); } } }; public boolean lockCamera; + public boolean pan = false; + public boolean shown = false; + public boolean showRotate; + public boolean showCancel; + public boolean delete = false; public void draw(int tilex, int tiley, int endx, int endy){ } - public void tapped(int tilex, int tiley, int endx, int endy){ + public void released(int tilex, int tiley, int endx, int endy){ + + } + + public void tapped(int x, int y){ } } diff --git a/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java b/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java index e276f1e2b9..897b33de25 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java @@ -14,7 +14,6 @@ import io.anuke.mindustry.world.GameMode; import io.anuke.ucore.core.Core; import io.anuke.ucore.core.Draw; import io.anuke.ucore.core.Settings; -import io.anuke.ucore.function.StringSupplier; import io.anuke.ucore.scene.actions.Actions; import io.anuke.ucore.scene.builders.imagebutton; import io.anuke.ucore.scene.builders.label; @@ -25,7 +24,6 @@ import io.anuke.ucore.scene.ui.Label; import io.anuke.ucore.scene.ui.layout.Cell; import io.anuke.ucore.scene.ui.layout.Table; import io.anuke.ucore.scene.ui.layout.Unit; -import io.anuke.ucore.util.Profiler; public class HudFragment implements Fragment{ private Table itemtable, respawntable; @@ -137,26 +135,14 @@ public class HudFragment implements Fragment{ new table(){{ abottom(); aleft(); - new label((StringSupplier)()->"[purple]tiles: " + Vars.control.tileGroup.amount()).left(); + new label(()->"[purple]tiles: " + Vars.control.tileGroup.amount()).left(); row(); - new label((StringSupplier)()->"[purple]enemies: " + Vars.control.enemyGroup.amount()).left(); + new label(()->"[purple]enemies: " + Vars.control.enemyGroup.amount()).left(); row(); - new label((StringSupplier)()->"[orange]noclip: " + Vars.noclip).left(); + new label(()->"[orange]noclip: " + Vars.noclip).left(); row(); new label("[red]DEBUG MODE").scale(0.5f).left(); }}.end(); - - if(profile){ - new table(){{ - atop(); - new table("button"){{ - defaults().left().growX(); - atop(); - aleft(); - new label((StringSupplier)()->Profiler.formatDisplayTimes()); - }}.width(400f).units(Unit.dp).end(); - }}.end(); - } } } @@ -188,8 +174,6 @@ public class HudFragment implements Fragment{ }}.left().end(); playButton(uheight); - //get().padTop(Unit.dp.inPixels(1)); - //get().padBottom(Unit.dp.inPixels(1)); }}.height(uheight).units(Unit.dp).fillX().expandX().end(); } diff --git a/core/src/io/anuke/mindustry/ui/fragments/PlacementFragment.java b/core/src/io/anuke/mindustry/ui/fragments/PlacementFragment.java index 9b1bd0c0ca..4e20bc3c12 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/PlacementFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/PlacementFragment.java @@ -8,7 +8,6 @@ import io.anuke.mindustry.core.GameState; import io.anuke.mindustry.core.GameState.State; import io.anuke.mindustry.input.PlaceMode; import io.anuke.ucore.scene.builders.imagebutton; -import io.anuke.ucore.scene.builders.label; import io.anuke.ucore.scene.builders.table; import io.anuke.ucore.scene.event.Touchable; import io.anuke.ucore.scene.ui.ButtonGroup; @@ -28,8 +27,8 @@ public class PlacementFragment implements Fragment{ new table("pane"){{ get().setTouchable(Touchable.enabled); - new label(()->"Placement Mode: [orange]" + player.placeMode.name()).pad(4).units(Unit.dp); - row(); + //new label(()->"Placement Mode: [orange]" + player.placeMode.name()).pad(4).units(Unit.dp); + //row(); aleft(); @@ -37,19 +36,28 @@ public class PlacementFragment implements Fragment{ aleft(); ButtonGroup group = new ButtonGroup<>(); - defaults().size(58, 62).pad(6).units(Unit.dp); + defaults().size(52, 56).pad(0).units(Unit.dp); + + int d = 0; for(PlaceMode mode : PlaceMode.values()){ + if(!mode.shown) continue; + new imagebutton("icon-" + mode.name(), "toggle", Unit.dp.inPixels(10*3), ()->{ + control.getInput().resetCursor(); player.placeMode = mode; }){{ group.add(get()); - }}; + }}.padBottom(-5.5f).units(Unit.dp); + + if(++d % 2 == 0){ + row(); + } } new imagebutton("icon-cancel", Unit.dp.inPixels(14*3), ()->{ player.recipe = null; - }).visible(()->player.recipe != null && player.placeMode == PlaceMode.touch); + }).visible(()->player.recipe != null && player.placeMode.showCancel); new imagebutton("icon-rotate-arrow", Unit.dp.inPixels(14*3), ()->{ player.rotation ++; @@ -57,7 +65,7 @@ public class PlacementFragment implements Fragment{ }).update(i->{ i.getImage().setOrigin(Align.center); i.getImage().setRotation(player.rotation*90); - }).visible(()->player.recipe != null && player.placeMode == PlaceMode.touch + }).visible(() -> player.recipe != null && player.placeMode.showRotate && player.recipe.result.rotate); }}.left().end(); diff --git a/core/src/io/anuke/mindustry/ui/fragments/ToolFragment.java b/core/src/io/anuke/mindustry/ui/fragments/ToolFragment.java index 6bd0a66536..743eddec8e 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/ToolFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/ToolFragment.java @@ -27,8 +27,7 @@ public class ToolFragment implements Fragment{ }); tools.addIButton("icon-check", Unit.dp.inPixels(42), ()->{ - player.placeMode.tapped(control.getInput().getBlockX(), control.getInput().getBlockY(), - control.getInput().getBlockEndX(), control.getInput().getBlockEndY()); + player.placeMode.tapped(control.getInput().getBlockX(), control.getInput().getBlockY()); }); Core.scene.add(tools); diff --git a/core/src/io/anuke/mindustry/world/blocks/types/distribution/Sorter.java b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Sorter.java index 74e9e6dc2e..6ab0c04e03 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/distribution/Sorter.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Sorter.java @@ -17,7 +17,6 @@ import io.anuke.ucore.scene.ui.layout.Unit; import io.anuke.ucore.util.Mathf; import io.anuke.ucore.util.Tmp; -//TODO public class Sorter extends Junction implements Configurable{ public Sorter(String name) {