From d9a66278fffa75a8b7c6cb99004c6a99ec226d11 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 26 Nov 2017 22:40:43 -0500 Subject: [PATCH] Added sandbox mode and new fortress enemy --- .../sprites/enemies/fortressenemy-t1.png | Bin 0 -> 451 bytes .../sprites/enemies/fortressenemy-t2.png | Bin 0 -> 447 bytes .../sprites/enemies/fortressenemy-t3.png | Bin 0 -> 470 bytes core/assets/sprites/sprites.atlas | 477 +++++++++--------- core/assets/sprites/sprites.png | Bin 50433 -> 51732 bytes core/src/io/anuke/mindustry/Mindustry.java | 1 + core/src/io/anuke/mindustry/ai/Pathfind.java | 2 +- core/src/io/anuke/mindustry/core/Control.java | 27 +- .../anuke/mindustry/entities/BulletType.java | 34 +- .../mindustry/entities/effect/DamageArea.java | 2 +- .../anuke/mindustry/entities/effect/Fx.java | 34 ++ .../mindustry/entities/enemies/Enemy.java | 31 +- .../entities/enemies/FortressEnemy.java | 62 +++ .../entities/enemies/HealerEnemy.java | 1 + .../mindustry/entities/enemies/TankEnemy.java | 4 +- core/src/io/anuke/mindustry/io/SaveIO.java | 33 +- .../io/anuke/mindustry/ui/LevelDialog.java | 22 +- .../src/io/anuke/mindustry/ui/LoadDialog.java | 4 +- .../ui/fragments/BlocksFragment.java | 2 +- .../mindustry/ui/fragments/HudFragment.java | 16 +- .../io/anuke/mindustry/world/GameMode.java | 5 + .../mindustry/world/blocks/WeaponBlocks.java | 21 +- .../world/blocks/types/defense/Turret.java | 18 +- desktop/mindustry-saves/0.mins | Bin 2553 -> 1399 bytes desktop/mindustry-saves/1.mins | Bin 2338 -> 2085 bytes 25 files changed, 510 insertions(+), 286 deletions(-) create mode 100644 core/assets-raw/sprites/enemies/fortressenemy-t1.png create mode 100644 core/assets-raw/sprites/enemies/fortressenemy-t2.png create mode 100644 core/assets-raw/sprites/enemies/fortressenemy-t3.png create mode 100644 core/src/io/anuke/mindustry/entities/enemies/FortressEnemy.java create mode 100644 core/src/io/anuke/mindustry/world/GameMode.java diff --git a/core/assets-raw/sprites/enemies/fortressenemy-t1.png b/core/assets-raw/sprites/enemies/fortressenemy-t1.png new file mode 100644 index 0000000000000000000000000000000000000000..08af9a95b3f55d380c334e945302879447244e6a GIT binary patch literal 451 zcmeAS@N?(olHy`uVBq!ia0y~yU=RUe4mJh`hTcwDUIqpRwj^(N7l!{JxM1({$qWn( zoCO|{#S9GG!XV7ZFl&wk0|NtliKnkC`$KMNMo#ff*ROA6U|^6eag8W(&d<$F%`0JW zE=o--Nlj5G&n(GMaQE~L2yf&QXJBB|_H=O!u{eD-WMkoB1D=|XHjGA{+0*=JEoc{`6H`f(KW8VSZq|^wgTPwMs#AdCyOI z)!&eEu(WgI&FK>5>CSCB7r#BVIdA>f=6vtmt1l0Wv7A1YzV(3Zg19@J3`OUJXX+U~ zN^)R$pj-3wZ^U(3i`xf(uzBn{^UsU(d1c!wGXti{XSG#3X5XCiStO@&-ah^Fw_oJv zPM&XTojv9IZC-|g{c-%CJ?5s)cgvr|xawBJnz!cpJ1xI?$xeNDPwh~t z*3spHLKwf)-fLa+&YgLp^#A>|+rZ=UEKbKBX%xGuHx7=;LELTW5yJY4ji*0kH#frV& z?Y!2dn|`B~_Z#0H(OJQV<^+|8nza3%*16)Qy|#Bx`s};g-)xYn@;`qpZrPpWo6;wK w|9!XZe?bm2L(gLlhUUL4BD2%V?bYnH&YWv6tg6dmU|?YIboFyt=akR{0Ee5hFaQ7m literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/enemies/fortressenemy-t3.png b/core/assets-raw/sprites/enemies/fortressenemy-t3.png new file mode 100644 index 0000000000000000000000000000000000000000..7beb99e5f70a3f7b006775b24bf7b0175945fc26 GIT binary patch literal 470 zcmeAS@N?(olHy`uVBq!ia0y~yU=RUe4mJh`hTcwDUIqpRwj^(N7l!{JxM1({$qWn( zoCO|{#S9GG!XV7ZFl&wk0|NtliKnkC`$KMNMjr0l3+s0?Ffd4#xJHyX=jZ08=9Mrw z7o{eaq^2m8XO?6rxO@5rgg5euGcYjPdAc};Se)J(va#^60Z+{*6Go#>FM02&c54?( zS}>&*o;K5pte#ZBqUp-R%Chpt^W6)SJRW?kaA5j(c}8XWv%j(O414NSlp^X+{oFCT zh)vM3IpTiymmsclHEG|@CrLS+4fuVAhv9a-q3D9Ej<>d6ZJn4KoLmv@S#qh|WsC5| zymx%Hrrztd`!z$K2XS2!=zCz=@`~4?G*9B*^PMX_TqJ@I%?K*yXZT)em!4rNY+%TJ z>$Eh3!m$@yHb}8B*!}UpyFPdIfukz_8AKMueZ4m&SA3Fua>>*-p*34Y$_|BOFTcKG z^};od{Wm2qYd$YK6~(+#r)+o3u5@W_iDteCX9nA-sm2U7aqFF4o4>ob?B3;f(-)nY z%j;U6QhfL3c5jz;Q#O59)6XwkVCZIEa_u1FflWFL58n7YY_vYH$LPrRx6&-9pH9h| TqRYa-z`)??>gTe~DWM4fdycp` literal 0 HcmV?d00001 diff --git a/core/assets/sprites/sprites.atlas b/core/assets/sprites/sprites.atlas index 6b1f113a62..adb28767e7 100644 --- a/core/assets/sprites/sprites.atlas +++ b/core/assets/sprites/sprites.atlas @@ -13,77 +13,77 @@ backgrounds/background index: -1 blank rotate: false - xy: 473, 386 + xy: 308, 147 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 blocks/blackrock1 rotate: false - xy: 230, 67 + xy: 415, 313 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/blackrockshadow1 rotate: false - xy: 240, 67 + xy: 450, 480 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/blackstone1 rotate: false - xy: 450, 480 + xy: 348, 231 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/blackstone2 rotate: false - xy: 343, 199 + xy: 450, 470 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/blackstone3 rotate: false - xy: 450, 470 + xy: 348, 221 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/blackstoneblock1 rotate: false - xy: 333, 197 + xy: 374, 222 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/blackstoneblock2 rotate: false - xy: 343, 189 + xy: 374, 212 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/blackstoneblock3 rotate: false - xy: 333, 187 + xy: 325, 197 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/blackstoneedge rotate: false - xy: 499, 499 + xy: 206, 1 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 blocks/block rotate: false - xy: 443, 303 + xy: 337, 211 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -111,105 +111,105 @@ blocks/chainturret index: -1 blocks/chainturret-icon rotate: false - xy: 411, 323 + xy: 230, 67 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/coal1 rotate: false - xy: 443, 283 + xy: 327, 168 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/coal2 rotate: false - xy: 439, 273 + xy: 327, 158 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/coal3 rotate: false - xy: 439, 263 + xy: 327, 148 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/coaldrill rotate: false - xy: 439, 253 + xy: 431, 311 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/coalgenerator rotate: false - xy: 232, 11 + xy: 431, 301 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/coalpurifier rotate: false - xy: 232, 1 + xy: 441, 309 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/combustiongenerator rotate: false - xy: 242, 13 + xy: 451, 309 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/compositewall rotate: false - xy: 242, 3 + xy: 461, 309 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conduit rotate: false - xy: 469, 355 + xy: 471, 309 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conduitbottom rotate: false - xy: 449, 273 + xy: 481, 309 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conduitliquid rotate: false - xy: 449, 263 + xy: 441, 299 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conduittop rotate: false - xy: 449, 253 + xy: 451, 299 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conveyor rotate: false - xy: 476, 415 + xy: 461, 299 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conveyormove rotate: false - xy: 476, 405 + xy: 471, 299 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -223,294 +223,294 @@ blocks/core index: -1 blocks/cross rotate: false - xy: 476, 395 + xy: 481, 299 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/crucible rotate: false - xy: 476, 385 + xy: 431, 291 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/deepwater rotate: false - xy: 473, 375 + xy: 441, 289 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/dirt1 rotate: false - xy: 473, 365 + xy: 451, 289 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/dirt2 rotate: false - xy: 479, 355 + xy: 461, 289 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/dirt3 rotate: false - xy: 367, 174 + xy: 471, 289 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/dirtblock rotate: false - xy: 483, 375 + xy: 481, 289 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/dirtedge rotate: false - xy: 499, 485 + xy: 220, 1 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 blocks/doubleturret rotate: false - xy: 456, 425 + xy: 308, 132 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/duriumwall rotate: false - xy: 483, 365 + xy: 427, 281 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/duriumwall-large rotate: false - xy: 228, 113 + xy: 247, 116 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 blocks/duriumwall-large-icon rotate: false - xy: 489, 355 + xy: 427, 271 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/flameturret rotate: false - xy: 452, 413 + xy: 320, 132 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/fluxpump rotate: false - xy: 415, 198 + xy: 437, 279 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/grass1 rotate: false - xy: 427, 217 + xy: 447, 279 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/grass2 rotate: false - xy: 425, 207 + xy: 437, 269 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/grass3 rotate: false - xy: 425, 197 + xy: 457, 279 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/grassblock-edge-0 rotate: false - xy: 413, 178 + xy: 457, 269 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/grassblock-edge-1 rotate: false - xy: 423, 177 + xy: 477, 279 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/grassblock-edge-2 rotate: false - xy: 443, 341 + xy: 467, 269 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/grassblock-edge-3 rotate: false - xy: 453, 343 + xy: 477, 269 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/grassblock1 rotate: false - xy: 415, 188 + xy: 447, 269 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/grassblock2 rotate: false - xy: 425, 187 + xy: 467, 279 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/grassedge rotate: false - xy: 353, 181 + xy: 411, 247 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 blocks/iron1 rotate: false - xy: 503, 431 + xy: 355, 186 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/iron2 rotate: false - xy: 503, 421 + xy: 355, 176 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/iron3 rotate: false - xy: 503, 411 + xy: 487, 279 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/irondrill rotate: false - xy: 503, 401 + xy: 487, 269 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/ironwall rotate: false - xy: 503, 391 + xy: 264, 46 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/junction rotate: false - xy: 503, 381 + xy: 262, 36 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/laserturret rotate: false - xy: 317, 131 + xy: 459, 331 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/lava rotate: false - xy: 503, 371 + xy: 472, 439 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/lavaedge rotate: false - xy: 399, 179 + xy: 417, 233 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 blocks/lavasmelter rotate: false - xy: 503, 361 + xy: 472, 429 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/liquiditemjunction rotate: false - xy: 503, 351 + xy: 472, 419 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/liquidjunction rotate: false - xy: 503, 341 + xy: 490, 459 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/liquidrouter rotate: false - xy: 493, 443 + xy: 500, 459 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/machineturret rotate: false - xy: 329, 131 + xy: 457, 319 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/megarepairturret rotate: false - xy: 341, 131 + xy: 473, 355 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/mortarturret rotate: false - xy: 230, 21 + xy: 473, 343 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/mossblock rotate: false - xy: 493, 423 + xy: 485, 449 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/mossstone rotate: false - xy: 493, 423 + xy: 485, 449 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -524,385 +524,385 @@ blocks/nuclearreactor index: -1 blocks/nuclearreactor-icon rotate: false - xy: 493, 403 + xy: 495, 449 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/nuclearreactor-small rotate: false - xy: 247, 132 + xy: 265, 118 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 blocks/oil rotate: false - xy: 493, 393 + xy: 482, 429 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/oiledge rotate: false - xy: 460, 465 + xy: 417, 219 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 blocks/oilrefinery rotate: false - xy: 493, 383 + xy: 492, 439 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/omnidrill rotate: false - xy: 493, 373 + xy: 482, 419 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/plasmaturret rotate: false - xy: 242, 23 + xy: 471, 331 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/powerbooster rotate: false - xy: 301, 124 + xy: 492, 429 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/poweredconveyor rotate: false - xy: 439, 243 + xy: 492, 419 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/poweredconveyormove rotate: false - xy: 449, 243 + xy: 480, 409 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/powerlaser rotate: false - xy: 433, 233 + xy: 480, 399 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/powerlaserrouter rotate: false - xy: 443, 233 + xy: 490, 409 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/pulseconduit rotate: false - xy: 453, 233 + xy: 480, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/pulseconduitbottom rotate: false - xy: 437, 223 + xy: 480, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/pulseconduittop rotate: false - xy: 447, 223 + xy: 490, 399 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/pump rotate: false - xy: 437, 213 + xy: 490, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/repairturret rotate: false - xy: 464, 413 + xy: 469, 319 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/rock1 rotate: false - xy: 435, 203 + xy: 489, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/rock2 rotate: false - xy: 435, 193 + xy: 367, 202 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/rockshadow1 rotate: false - xy: 445, 203 + xy: 377, 202 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/rockshadow2 rotate: false - xy: 445, 193 + xy: 387, 203 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/router rotate: false - xy: 457, 223 + xy: 397, 203 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/rtgenerator rotate: false - xy: 457, 213 + xy: 367, 192 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/shadow rotate: false - xy: 464, 401 + xy: 477, 367 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/shieldgenerator rotate: false - xy: 455, 193 + xy: 387, 193 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/shotgunturret rotate: false - xy: 464, 389 + xy: 485, 355 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/shrub rotate: false - xy: 455, 183 + xy: 375, 182 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/shrubshadow rotate: false - xy: 433, 173 + xy: 365, 172 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/smelter rotate: false - xy: 443, 173 + xy: 375, 172 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/sniperturret rotate: false - xy: 461, 377 + xy: 485, 343 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/sorter rotate: false - xy: 453, 173 + xy: 502, 439 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/steelconveyor rotate: false - xy: 252, 13 + xy: 502, 429 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/steelconveyormove rotate: false - xy: 252, 3 + xy: 502, 419 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/steelwall rotate: false - xy: 343, 165 + xy: 500, 409 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/steelwall-large rotate: false - xy: 265, 132 + xy: 290, 132 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 blocks/steelwall-large-icon rotate: false - xy: 353, 171 + xy: 500, 399 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stone rotate: false - xy: 456, 451 + xy: 431, 233 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 blocks/stone1 rotate: false - xy: 353, 161 + xy: 500, 389 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stone2 rotate: false - xy: 353, 151 + xy: 500, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stone3 rotate: false - xy: 353, 141 + xy: 499, 369 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stoneblock-edge-0 rotate: false - xy: 363, 144 + xy: 495, 329 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stoneblock-edge-1 rotate: false - xy: 363, 134 + xy: 493, 319 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stoneblock-edge-2 rotate: false - xy: 373, 164 + xy: 503, 319 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stoneblock-edge-3 rotate: false - xy: 373, 154 + xy: 491, 309 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stoneblock-smooth1 rotate: false - xy: 373, 144 + xy: 491, 299 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stoneblock1 rotate: false - xy: 353, 131 + xy: 497, 359 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stoneblock2 rotate: false - xy: 363, 164 + xy: 497, 349 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stoneblock3 rotate: false - xy: 363, 154 + xy: 497, 339 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stonedrill rotate: false - xy: 373, 134 + xy: 491, 289 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stoneedge rotate: false - xy: 456, 437 + xy: 431, 219 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 blocks/stoneformer rotate: false - xy: 383, 167 + xy: 501, 309 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stonewall rotate: false - xy: 383, 157 + xy: 501, 299 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/teleporter rotate: false - xy: 383, 147 + xy: 501, 289 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/teleporter-top rotate: false - xy: 383, 137 + xy: 497, 279 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/thermalgenerator rotate: false - xy: 393, 167 + xy: 497, 269 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -916,147 +916,147 @@ blocks/titancannon index: -1 blocks/titancannon-icon rotate: false - xy: 461, 365 + xy: 483, 331 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/titanium1 rotate: false - xy: 393, 157 + xy: 265, 108 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titanium2 rotate: false - xy: 393, 147 + xy: 264, 98 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titanium3 rotate: false - xy: 393, 137 + xy: 264, 88 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titaniumdrill rotate: false - xy: 403, 169 + xy: 274, 46 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titaniumpurifier rotate: false - xy: 413, 168 + xy: 272, 36 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titaniumshieldwall rotate: false - xy: 423, 167 + xy: 270, 26 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titaniumwall rotate: false - xy: 403, 159 + xy: 439, 259 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titaniumwall-large rotate: false - xy: 317, 207 + xy: 230, 79 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 blocks/titaniumwall-large-icon rotate: false - xy: 403, 149 + xy: 449, 259 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/turret rotate: false - xy: 457, 353 + xy: 481, 319 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/uranium1 rotate: false - xy: 413, 148 + xy: 449, 249 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/uranium2 rotate: false - xy: 423, 157 + xy: 469, 259 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/uranium3 rotate: false - xy: 433, 163 + xy: 459, 249 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/uraniumdrill rotate: false - xy: 443, 163 + xy: 479, 259 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/water rotate: false - xy: 453, 163 + xy: 469, 249 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/wateredge rotate: false - xy: 470, 451 + xy: 250, 53 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 blocks/waveturret rotate: false - xy: 468, 425 + xy: 325, 207 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 bullet rotate: false - xy: 443, 293 + xy: 347, 211 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 chainbullet rotate: false - xy: 311, 150 + xy: 325, 178 size: 8, 7 orig: 8, 7 offset: 0, 0 index: -1 circle rotate: false - xy: 228, 131 + xy: 228, 115 size: 17, 17 orig: 17, 17 offset: 0, 0 @@ -1070,322 +1070,343 @@ circle2 index: -1 enemies/blastenemy-t1 rotate: false - xy: 342, 225 + xy: 248, 100 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/blastenemy-t2 rotate: false - xy: 317, 191 + xy: 248, 84 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/blastenemy-t3 rotate: false - xy: 335, 209 + xy: 385, 225 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/empenemy-t1 rotate: false - xy: 317, 175 + xy: 401, 225 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/empenemy-t2 rotate: false - xy: 433, 371 + xy: 413, 353 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/empenemy-t3 rotate: false - xy: 301, 134 + xy: 429, 353 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/enemy-t1 rotate: false - xy: 311, 159 + xy: 411, 337 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/targetenemy-t1 rotate: false - xy: 311, 159 + xy: 411, 337 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/enemy-t2 rotate: false - xy: 499, 471 + xy: 411, 323 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 enemies/enemy-t3 rotate: false - xy: 353, 195 + xy: 476, 465 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 enemies/fastenemy-t1 rotate: false - xy: 385, 225 + xy: 427, 337 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/fastenemy-t2 rotate: false - xy: 401, 225 + xy: 425, 321 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/fastenemy-t3 rotate: false - xy: 351, 209 + xy: 234, 51 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/flamerenemy-t1 rotate: false - xy: 367, 216 + xy: 234, 35 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/flamerenemy-t2 rotate: false - xy: 367, 200 + xy: 283, 116 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/flamerenemy-t3 rotate: false - xy: 383, 209 + xy: 299, 116 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 +enemies/fortressenemy-t1 + rotate: false + xy: 491, 491 + size: 20, 20 + orig: 20, 20 + offset: 0, 0 + index: -1 +enemies/fortressenemy-t2 + rotate: false + xy: 491, 469 + size: 20, 20 + orig: 20, 20 + offset: 0, 0 + index: -1 +enemies/fortressenemy-t3 + rotate: false + xy: 306, 219 + size: 20, 20 + orig: 20, 20 + offset: 0, 0 + index: -1 enemies/healerenemy-t1 rotate: false - xy: 399, 209 + xy: 415, 297 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/healerenemy-t2 rotate: false - xy: 383, 193 + xy: 311, 160 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/healerenemy-t3 rotate: false - xy: 399, 193 + xy: 311, 144 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/mortarenemy-t1 rotate: false - xy: 429, 351 + xy: 449, 367 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/mortarenemy-t2 rotate: false - xy: 417, 227 + xy: 445, 351 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/mortarenemy-t3 rotate: false - xy: 327, 159 + xy: 443, 335 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/rapidenemy-t1 rotate: false - xy: 321, 143 + xy: 441, 319 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/rapidenemy-t2 rotate: false - xy: 234, 51 + xy: 358, 216 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/rapidenemy-t3 rotate: false - xy: 234, 35 + xy: 230, 17 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/tankenemy-t1 rotate: false - xy: 337, 143 + xy: 234, 1 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/tankenemy-t2 rotate: false - xy: 367, 184 + xy: 411, 277 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/tankenemy-t3 rotate: false - xy: 383, 177 + xy: 411, 261 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/titanenemy-t1 rotate: false - xy: 283, 132 + xy: 413, 369 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 enemies/titanenemy-t2 rotate: false - xy: 230, 95 + xy: 431, 369 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 enemies/titanenemy-t3 rotate: false - xy: 230, 77 + xy: 230, 97 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 enemyarrow rotate: false - xy: 417, 218 + xy: 337, 202 size: 8, 7 orig: 8, 7 offset: 0, 0 index: -1 icon-coal rotate: false - xy: 463, 343 + xy: 347, 201 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-dirium rotate: false - xy: 473, 345 + xy: 357, 206 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-iron rotate: false - xy: 483, 345 + xy: 335, 192 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-steel rotate: false - xy: 493, 345 + xy: 335, 182 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-stone rotate: false - xy: 503, 461 + xy: 345, 191 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-titanium rotate: false - xy: 503, 451 + xy: 345, 181 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-uranium rotate: false - xy: 503, 441 + xy: 357, 196 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 laser rotate: false - xy: 488, 465 + xy: 472, 449 size: 1, 12 orig: 1, 12 offset: 0, 0 index: -1 laserend rotate: false - xy: 413, 367 + xy: 328, 221 size: 18, 18 orig: 18, 18 offset: 0, 0 index: -1 mechs/player rotate: false - xy: 474, 465 + xy: 425, 247 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 shell rotate: false - xy: 455, 203 + xy: 377, 192 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 shot rotate: false - xy: 435, 183 + xy: 397, 193 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 shot-long rotate: false - xy: 445, 183 + xy: 365, 182 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanshell rotate: false - xy: 413, 158 + xy: 439, 249 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1477,42 +1498,42 @@ ui/check-over index: -1 ui/clear rotate: false - xy: 423, 323 + xy: 242, 67 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/cursor rotate: false - xy: 377, 178 + xy: 411, 241 size: 4, 4 orig: 4, 4 offset: 0, 0 index: -1 ui/icon-arrow-left rotate: false - xy: 470, 439 + xy: 250, 41 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-arrow-right rotate: false - xy: 452, 401 + xy: 250, 29 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-cancel rotate: false - xy: 413, 351 + xy: 254, 68 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icon-check rotate: false - xy: 411, 335 + xy: 315, 116 size: 14, 14 orig: 14, 14 offset: 0, 0 @@ -1540,133 +1561,133 @@ ui/icon-close-over index: -1 ui/icon-crafting rotate: false - xy: 452, 389 + xy: 246, 17 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-cursor rotate: false - xy: 449, 377 + xy: 250, 5 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-defense rotate: false - xy: 333, 175 + xy: 258, 17 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-distribution rotate: false - xy: 435, 323 + xy: 262, 5 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-info rotate: false - xy: 431, 311 + xy: 264, 56 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-load rotate: false - xy: 415, 307 + xy: 460, 463 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icon-menu rotate: false - xy: 431, 299 + xy: 384, 213 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-pause rotate: false - xy: 431, 287 + xy: 396, 213 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-play rotate: false - xy: 427, 275 + xy: 468, 403 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-play-2 rotate: false - xy: 415, 291 + xy: 456, 447 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icon-power rotate: false - xy: 427, 263 + xy: 468, 391 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-production rotate: false - xy: 427, 251 + xy: 468, 379 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-rotate rotate: false - xy: 411, 275 + xy: 456, 431 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icon-rotate-arrow rotate: false - xy: 411, 259 + xy: 456, 415 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icon-settings rotate: false - xy: 484, 453 + xy: 465, 367 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-tools rotate: false - xy: 411, 243 + xy: 452, 399 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icon-touch rotate: false - xy: 449, 365 + xy: 461, 355 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-tutorial rotate: false - xy: 427, 335 + xy: 452, 383 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icon-weapon rotate: false - xy: 445, 353 + xy: 461, 343 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -1703,7 +1724,7 @@ ui/pane-button index: -1 ui/scroll rotate: false - xy: 306, 225 + xy: 228, 134 size: 34, 6 split: 4, 4, 2, 2 orig: 34, 6 @@ -1720,7 +1741,7 @@ ui/scroll-horizontal index: -1 ui/scroll-knob-horizontal rotate: false - xy: 491, 477 + xy: 317, 183 size: 6, 34 split: 2, 2, 0, 34 pad: 0, 5, 13, 12 @@ -1729,7 +1750,7 @@ ui/scroll-knob-horizontal index: -1 ui/scroll-knob-vertical rotate: false - xy: 306, 233 + xy: 228, 142 size: 34, 6 split: 12, 12, 2, 2 orig: 34, 6 @@ -1737,21 +1758,21 @@ ui/scroll-knob-vertical index: -1 ui/selection rotate: false - xy: 383, 391 + xy: 308, 144 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 ui/separator rotate: false - xy: 194, 35 + xy: 465, 380 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 ui/slider rotate: false - xy: 383, 394 + xy: 452, 415 size: 1, 8 orig: 1, 8 offset: 0, 0 @@ -1786,7 +1807,7 @@ ui/slider-vertical index: -1 ui/text-exit rotate: false - xy: 206, 1 + xy: 264, 136 size: 24, 12 orig: 24, 12 offset: 0, 0 @@ -1881,42 +1902,42 @@ ui/window-empty index: -1 weapons/blaster rotate: false - xy: 443, 313 + xy: 325, 187 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/flamer rotate: false - xy: 415, 208 + xy: 427, 261 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/mortar rotate: false - xy: 493, 433 + xy: 475, 449 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/multigun rotate: false - xy: 493, 413 + xy: 482, 439 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/railgun rotate: false - xy: 447, 213 + xy: 490, 379 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/triblaster rotate: false - xy: 403, 139 + xy: 459, 259 size: 8, 8 orig: 8, 8 offset: 0, 0 diff --git a/core/assets/sprites/sprites.png b/core/assets/sprites/sprites.png index 19b547ce5179faf24a5d745a12cee85817eed257..4c9e7658ba50c38da3ef0074d4f8c603b4752b2e 100644 GIT binary patch literal 51732 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 z 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

jl zn)(`M?mfC}3>#i1Gcjl>D%`X+<79lw!Z3xk;oO{aA69;z{&i*oy1!8nZpwozFlXn~=`DlyQgXfS+{@KG}Tokf^= z-15zeyXEF4i1({JsQA&}kjo;yDXT$~!NF@TPjo}SV8c33#`Y6zr;pu|@i*;bZV=FX zaM|B}uLVQImW+!m!VTx&?7SR)f%*OwMvt?}+fFiiME2kP{$rOa!>b3*w~|#gmp(Ck zzGC^jDE5VJ^XlIQ-7d9i{|j)|epm!{s(pncj6XPSs~CIi3ommpSQYK^P5-g)?Y5^a!Jj__e_r5yeogk1pSNrN zS1}ZP`QNO@uM?X1)k1B>rB)92fU{pFXn z*8OsLuI)932igC_t}-Nln33D!6ZH9puT6TW{i_2z1KZ!-&buVI;i}{c(}gQvFZ_RH z!4VdQG^wZl%MUjy9B^enV0LJlm%4Jno>0pN|0X^!yi<6*@v}Y~!-G5f|GnOS&+0v| zwAmIv`E7}@^Vj`uK4^FE{7#vITpfn#pO-)TI6d!uDa*2W?u1!qk33$!mEl6#B+z`~ ztID1^^??iwZY2!IdZzw<`m||h+kx5nI&FLn>!)OTfqMG?F1_7ZA`+B-bo#T*>DL@z z{Q6jX?6wEz<*bH`O){WG^X<6EG&9uGUZ53#jogBj#&@i(t!wdPl l3=Dr37X1rqKQH%R-tFU}n954^CI$uu22WQ%mvv4FO#of!-_rm9 literal 50433 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 D!lLS^ diff --git a/core/src/io/anuke/mindustry/Mindustry.java b/core/src/io/anuke/mindustry/Mindustry.java index 50a17523c1..def6b2be5d 100644 --- a/core/src/io/anuke/mindustry/Mindustry.java +++ b/core/src/io/anuke/mindustry/Mindustry.java @@ -31,6 +31,7 @@ public class Mindustry extends ModuleCore { } }; + //always initialize blocks in this order, otherwise there are ID errors public Block[] blockClasses = { Blocks.air, diff --git a/core/src/io/anuke/mindustry/ai/Pathfind.java b/core/src/io/anuke/mindustry/ai/Pathfind.java index 3f2b34cdaf..e239913791 100644 --- a/core/src/io/anuke/mindustry/ai/Pathfind.java +++ b/core/src/io/anuke/mindustry/ai/Pathfind.java @@ -82,7 +82,7 @@ public class Pathfind{ for(SpawnPoint point : Vars.control.getSpawnPoints()){ if(!point.request.pathFound){ - if(point.finder.search(point.request, ms*2)){ + if(point.finder.search(point.request, ms)){ smoother.smoothPath(point.path); point.pathTiles = point.path.nodes.toArray(Tile.class); } diff --git a/core/src/io/anuke/mindustry/core/Control.java b/core/src/io/anuke/mindustry/core/Control.java index 2495cd0f09..c93d7add2d 100644 --- a/core/src/io/anuke/mindustry/core/Control.java +++ b/core/src/io/anuke/mindustry/core/Control.java @@ -36,7 +36,7 @@ import io.anuke.ucore.util.Profiler; public class Control extends Module{ int targetscale = baseCameraScale; - public Tutorial tutorial = new Tutorial(); + Tutorial tutorial = new Tutorial(); boolean hiscore = false; final Array weapons = new Array<>(); @@ -51,6 +51,7 @@ public class Control extends Module{ float wavetime; float extrawavetime; int enemies = 0; + GameMode mode = GameMode.waves; Tile core; Array spawnpoints = new Array<>(); @@ -162,7 +163,7 @@ public class Control extends Module{ public void reset(){ weapons.clear(); - Vars.renderer.clearTiles(); + renderer.clearTiles(); weapons.add(Weapon.blaster); player.weapon = weapons.first(); @@ -187,7 +188,7 @@ public class Control extends Module{ } public void play(){ - Vars.renderer.clearTiles(); + 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); @@ -232,6 +233,14 @@ public class Control extends Module{ }); } + public GameMode getMode(){ + return mode; + } + + public void setMode(GameMode mode){ + this.mode = mode; + } + public boolean hasWeapon(Weapon weapon){ return weapons.contains(weapon, true); } @@ -443,7 +452,7 @@ public class Control extends Module{ if(Inputs.keyDown(Keys.SHIFT_LEFT)){ new HealerEnemy(0).set(player.x, player.y).add(); }else{ - new TitanEnemy(0).set(player.x, player.y).add(); + new FortressEnemy(0).set(player.x, player.y).add(); } } } @@ -479,17 +488,19 @@ public class Control extends Module{ } } - if(!tutorial.active()){ + if(tutorial.active()){ + tutorial.update(); + } + + if(!tutorial.active() && mode != GameMode.sandbox){ extrawavetime -= delta(); if(enemies <= 0){ wavetime -= delta(); } - }else{ - tutorial.update(); } - if(wavetime <= 0 || (debug && Inputs.keyUp(Keys.F)) || extrawavetime <= 0){ + if(wavetime <= 0){ runWave(); } diff --git a/core/src/io/anuke/mindustry/entities/BulletType.java b/core/src/io/anuke/mindustry/entities/BulletType.java index 0db38cca5a..12de2f69d5 100644 --- a/core/src/io/anuke/mindustry/entities/BulletType.java +++ b/core/src/io/anuke/mindustry/entities/BulletType.java @@ -20,6 +20,7 @@ public abstract class BulletType extends BaseBulletType{ static Color lightRed = Hue.mix(Color.WHITE, Color.FIREBRICK, 0.1f); static Color lightOrange = Color.valueOf("f68021"); static Color whiteOrange = Hue.mix(lightOrange, Color.WHITE, 0.6f); + static Color whiteYellow = Hue.mix(Color.YELLOW, Color.WHITE, 0.6f); public static final BulletType @@ -128,7 +129,7 @@ public abstract class BulletType extends BaseBulletType{ Effects.effect(Fx.shellsmoke, b); Effects.effect(Fx.shellexplosion, b); - DamageArea.damage(b.owner instanceof Enemy, b.x, b.y, 25f, (int)(damage * 2f/3f)); + DamageArea.damage(!(b.owner instanceof Enemy), b.x, b.y, 25f, (int)(damage * 2f/3f)); } }, titanshell = new BulletType(1.8f, 60){ @@ -162,6 +163,37 @@ public abstract class BulletType extends BaseBulletType{ DamageArea.damage(!(b.owner instanceof Enemy), b.x, b.y, 25f, (int)(damage * 2f/3f)); } }, + yellowshell = new BulletType(1.2f, 20){ + { + lifetime = 60f; + hitsize = 11f; + } + + public void draw(Bullet b){ + Draw.color(whiteYellow); + Draw.rect("titanshell", b.x, b.y, b.angle()); + Draw.reset(); + } + + public void update(Bullet b){ + if(Timers.get(b, "smoke", 4)){ + Effects.effect(Fx.smoke, b.x + Mathf.range(2), b.y + Mathf.range(2)); + } + } + + public void despawned(Bullet b){ + removed(b); + } + + public void removed(Bullet b){ + Effects.shake(3f, 3f, b); + + Effects.effect(Fx.shellsmoke, b); + Effects.effect(Fx.shockwaveSmall, b); + + DamageArea.damage(!(b.owner instanceof Enemy), b.x, b.y, 25f, (int)(damage * 2f/3f)); + } + }, blast = new BulletType(1.1f, 80){ { lifetime = 0f; diff --git a/core/src/io/anuke/mindustry/entities/effect/DamageArea.java b/core/src/io/anuke/mindustry/entities/effect/DamageArea.java index 0a270326c0..51f8415b2a 100644 --- a/core/src/io/anuke/mindustry/entities/effect/DamageArea.java +++ b/core/src/io/anuke/mindustry/entities/effect/DamageArea.java @@ -14,7 +14,7 @@ public class DamageArea{ public static void damage(boolean enemies, float x, float y, float radius, int damage){ if(enemies){ - Entities.getNearby(x, y, radius*2, entity->{ + Entities.getNearby(Entities.getGroup(Enemy.class), x, y, radius*2, entity->{ if(entity instanceof Enemy){ Enemy enemy = (Enemy)entity; if(enemy.distanceTo(x, y) > radius){ diff --git a/core/src/io/anuke/mindustry/entities/effect/Fx.java b/core/src/io/anuke/mindustry/entities/effect/Fx.java index f305b020a0..feec4f2403 100644 --- a/core/src/io/anuke/mindustry/entities/effect/Fx.java +++ b/core/src/io/anuke/mindustry/entities/effect/Fx.java @@ -13,6 +13,7 @@ public class Fx{ static Color lightRed = Hue.mix(Color.WHITE, Color.FIREBRICK, 0.1f); static Color lightOrange = Color.valueOf("f68021"); static Color whiteOrange = Hue.mix(lightOrange, Color.WHITE, 0.6f); + static Color whiteYellow = Hue.mix(Color.YELLOW, Color.WHITE, 0.6f); public static final Effect @@ -34,6 +35,28 @@ public class Fx{ Draw.reset(); }), + mortarshot = new Effect(10f, e -> { + Draw.color(Color.WHITE, Color.DARK_GRAY, e.ifract()); + Draw.thick(e.fract()*6f); + Draw.lineAngle(e.x, e.y, e.rotation, e.fract()*10f); + Draw.thick(e.fract()*5f); + Draw.lineAngle(e.x, e.y, e.rotation, e.fract()*14f); + Draw.thick(e.fract()*1f); + Draw.lineAngle(e.x, e.y, e.rotation, e.fract()*16f); + Draw.reset(); + }), + + railshot = new Effect(9f, e -> { + Draw.color(Color.WHITE, Color.DARK_GRAY, e.ifract()); + Draw.thick(e.fract()*5f); + Draw.lineAngle(e.x, e.y, e.rotation, e.fract()*8f); + Draw.thick(e.fract()*4f); + Draw.lineAngle(e.x, e.y, e.rotation, e.fract()*12f); + Draw.thick(e.fract()*1f); + Draw.lineAngle(e.x, e.y, e.rotation, e.fract()*14f); + Draw.reset(); + }), + titanshot = new Effect(12f, e -> { Draw.color(Color.WHITE, lightOrange, e.ifract()); Draw.thick(e.fract()*7f); @@ -45,6 +68,17 @@ public class Fx{ Draw.reset(); }), + largeCannonShot = new Effect(11f, e -> { + Draw.color(Color.WHITE, whiteYellow, e.ifract()); + Draw.thick(e.fract()*6f); + Draw.lineAngle(e.x, e.y, e.rotation, e.fract()*12f); + Draw.thick(e.fract()*3f); + Draw.lineAngle(e.x, e.y, e.rotation, e.fract()*16f); + Draw.thick(e.fract()*1f); + Draw.lineAngle(e.x, e.y, e.rotation, e.fract()*18f); + Draw.reset(); + }), + shockwave = new Effect(10f, e -> { Draw.color(Color.WHITE, Color.LIGHT_GRAY, e.ifract()); Draw.thick(e.fract()*2f + 0.2f); diff --git a/core/src/io/anuke/mindustry/entities/enemies/Enemy.java b/core/src/io/anuke/mindustry/entities/enemies/Enemy.java index e510681f7a..91ba5b1e25 100644 --- a/core/src/io/anuke/mindustry/entities/enemies/Enemy.java +++ b/core/src/io/anuke/mindustry/entities/enemies/Enemy.java @@ -11,8 +11,10 @@ import io.anuke.mindustry.entities.Player; import io.anuke.mindustry.entities.effect.Fx; import io.anuke.mindustry.entities.effect.Shaders; import io.anuke.mindustry.world.Tile; +import io.anuke.ucore.UCore; import io.anuke.ucore.core.*; import io.anuke.ucore.entities.*; +import io.anuke.ucore.util.Angles; import io.anuke.ucore.util.Mathf; import io.anuke.ucore.util.Tmp; @@ -24,18 +26,21 @@ public class Enemy extends DestructibleEntity{ protected float reload = 32; protected float range = 60; protected float length = 4; - protected float rotatespeed = 7f; + protected float rotatespeed = 0.1f; protected float turretrotatespeed = 0.2f; protected boolean alwaysRotate = false; protected BulletType bullet = BulletType.small; protected String shootsound = "enemyshoot"; protected int damage; + protected Enemy spawner; + protected int spawned = 0; + protected float angle; + protected boolean targetCore = false; public int spawn; public int node = -1; public Tile[] path; - public Vector2 direction = new Vector2(); public float xvelocity, yvelocity; public Entity target; public int tier = 1; @@ -63,7 +68,7 @@ public class Enemy extends DestructibleEntity{ if(nearCore){ vec = Tmp.v2.setZero(); - target = core.entity; + if(targetCore) target = core.entity; }else{ vec = Vars.world.pathfinder().find(this); vec.sub(x, y).setLength(speed); @@ -94,7 +99,6 @@ public class Enemy extends DestructibleEntity{ move(vec.x * Timers.delta(), vec.y * Timers.delta()); - updateTargeting(nearCore); } @@ -107,6 +111,10 @@ public class Enemy extends DestructibleEntity{ target = Entities.getClosest(Entities.defaultGroup(), x, y, range, e -> e instanceof Player); } } + + if(target instanceof Enemy){ + UCore.log(target); + } if(target != null && bullet != null){ updateShooting(); @@ -125,8 +133,8 @@ public class Enemy extends DestructibleEntity{ } void shoot(BulletType bullet, float rotation){ - vector.set(length, 0).rotate(direction.angle() + rotation); - Bullet out = new Bullet(bullet, this, x + vector.x, y + vector.y, direction.angle() + rotation).add(); + Angles.translation(angle + rotation, length); + Bullet out = new Bullet(bullet, this, x + Angles.x(), y + Angles.y(), this.angle + rotation).add(); out.damage = (int) (damage * Vars.multiplier); } @@ -195,6 +203,9 @@ public class Enemy extends DestructibleEntity{ public void removed(){ if(!dead){ Vars.control.enemyDeath(); + if(spawner != null){ + spawner.spawned --; + } } } @@ -208,11 +219,9 @@ public class Enemy extends DestructibleEntity{ yvelocity = (y - lasty) / Timers.delta(); if(target == null || alwaysRotate){ - direction.add(xvelocity * Timers.delta() / 3f, yvelocity * Timers.delta() / 3f); - direction.limit(speed * rotatespeed); + angle = Mathf.slerp(angle, 180f+Mathf.atan2(xvelocity, yvelocity), rotatespeed * Timers.delta()); }else{ - float angle = angleTo(target); - direction.lerp(vector.set(1f, 0f).rotate(angle), turretrotatespeed * Timers.delta()); + angle = Mathf.slerp(angle, angleTo(target), turretrotatespeed * Timers.delta()); } } @@ -226,7 +235,7 @@ public class Enemy extends DestructibleEntity{ Shaders.outline.apply(); Draw.color(); - Draw.rect(region, x, y, direction.angle() - 90); + Draw.rect(region, x, y, this.angle - 90); Graphics.flush(); diff --git a/core/src/io/anuke/mindustry/entities/enemies/FortressEnemy.java b/core/src/io/anuke/mindustry/entities/enemies/FortressEnemy.java new file mode 100644 index 0000000000..9a387c5c22 --- /dev/null +++ b/core/src/io/anuke/mindustry/entities/enemies/FortressEnemy.java @@ -0,0 +1,62 @@ +package io.anuke.mindustry.entities.enemies; + +import io.anuke.mindustry.Vars; +import io.anuke.mindustry.entities.BulletType; +import io.anuke.mindustry.entities.effect.Fx; +import io.anuke.ucore.core.Effects; +import io.anuke.ucore.core.Timers; +import io.anuke.ucore.util.Angles; + +public class FortressEnemy extends Enemy{ + static int maxSpawn = 6; + + float spawnTime = 240; + boolean deployed; + + public FortressEnemy(int spawn) { + super(spawn); + + speed = 0.1f; + reload = 90; + maxhealth = 700; + range = 70f; + bullet = BulletType.yellowshell; + hitbox.setSize(9f); + turretrotatespeed = rotatespeed = 0.08f; + length = 7f; + + heal(); + } + + @Override + public void move(){ + super.move(); + + if(deployed){ + + if(Timers.get(this, "spawn", spawnTime) && spawned < maxSpawn){ + Angles.translation(angle, 20f); + + FastEnemy enemy = new FastEnemy(spawn); + enemy.tier = this.tier; + enemy.spawner = this; + enemy.set(x + Angles.x(), y + Angles.y()); + Effects.effect(Fx.spawn, enemy); + enemy.add(); + spawned ++; + } + }else if(distanceTo(Vars.control.getCore().worldx(), + Vars.control.getCore().worldy()) <= 120f){ + deployed = true; + speed = 0.001f; + } + } + + @Override + public void shoot(BulletType type){ + super.shoot(bullet); + Effects.effect(Fx.largeCannonShot, x + Angles.x(), y + Angles.y(), angle); + Effects.shake(3f, 3f, this); + } + +} diff --git a/core/src/io/anuke/mindustry/entities/enemies/HealerEnemy.java b/core/src/io/anuke/mindustry/entities/enemies/HealerEnemy.java index 7f46b9c607..ae3ab9675c 100644 --- a/core/src/io/anuke/mindustry/entities/enemies/HealerEnemy.java +++ b/core/src/io/anuke/mindustry/entities/enemies/HealerEnemy.java @@ -23,6 +23,7 @@ public class HealerEnemy extends Enemy{ bullet = BulletType.shot; range = 30f; alwaysRotate = false; + targetCore = false; heal(); } diff --git a/core/src/io/anuke/mindustry/entities/enemies/TankEnemy.java b/core/src/io/anuke/mindustry/entities/enemies/TankEnemy.java index 0558d950c5..153e79471c 100644 --- a/core/src/io/anuke/mindustry/entities/enemies/TankEnemy.java +++ b/core/src/io/anuke/mindustry/entities/enemies/TankEnemy.java @@ -18,9 +18,9 @@ public class TankEnemy extends Enemy{ } void shoot(){ - vector.set(length, 0).rotate(direction.angle()); + Angles.translation(angle, 8f); - Angles.shotgun(3, 8f, direction.angle(), f->{ + Angles.shotgun(3, 8f, angle, f->{ Bullet out = new Bullet(bullet, this, x+vector.x, y+vector.y, f).add(); out.damage = (int)(damage*Vars.multiplier); }); diff --git a/core/src/io/anuke/mindustry/io/SaveIO.java b/core/src/io/anuke/mindustry/io/SaveIO.java index bdfbf2bddc..990ae1fac7 100644 --- a/core/src/io/anuke/mindustry/io/SaveIO.java +++ b/core/src/io/anuke/mindustry/io/SaveIO.java @@ -19,9 +19,7 @@ import io.anuke.mindustry.Vars; import io.anuke.mindustry.entities.enemies.*; import io.anuke.mindustry.resource.Item; import io.anuke.mindustry.resource.Weapon; -import io.anuke.mindustry.world.Block; -import io.anuke.mindustry.world.Map; -import io.anuke.mindustry.world.Tile; +import io.anuke.mindustry.world.*; import io.anuke.mindustry.world.blocks.Blocks; import io.anuke.ucore.core.Core; import io.anuke.ucore.entities.Entities; @@ -38,6 +36,8 @@ import io.anuke.ucore.entities.Entities; * Wave (int) * Wave countdown time (float) * + * Gamemode Ordinal (byte) + * * Player X (float) * Player Y (float) * Player health (int) @@ -82,7 +82,7 @@ import io.anuke.ucore.entities.Entities; */ public class SaveIO{ /**Save file version ID. Should be incremented every breaking release.*/ - private static final int fileVersionID = 9; + private static final int fileVersionID = 10; //TODO automatic registration of types? private static final Array> enemyIDs = Array.with( @@ -135,9 +135,21 @@ public class SaveIO{ public static int getWave(int slot){ try(DataInputStream stream = new DataInputStream(fileFor(slot).read())){ - stream.readInt(); - stream.readLong(); - return stream.readInt(); + stream.readInt(); //read version + stream.readLong(); //read last saved time + stream.readByte(); //read the gamemode + return stream.readInt(); //read the wave + }catch (IOException e){ + throw new RuntimeException(e); + } + } + + public static GameMode getMode(int slot){ + + try(DataInputStream stream = new DataInputStream(fileFor(slot).read())){ + stream.readInt(); //read version + stream.readLong(); //read last saved time + return GameMode.values()[stream.readByte()]; //read the gamemode }catch (IOException e){ throw new RuntimeException(e); } @@ -151,10 +163,13 @@ public class SaveIO{ try(DataOutputStream stream = new DataOutputStream(file.write(false))){ + //--META-- stream.writeInt(fileVersionID); //version id - stream.writeLong(TimeUtils.millis()); + stream.writeLong(TimeUtils.millis()); //last saved //--GENERAL STATE-- + stream.writeByte(Vars.control.getMode().ordinal()); //gamemode + stream.writeInt(Vars.control.getWave()); //wave stream.writeFloat(Vars.control.getWaveCountdown()); //wave countdown @@ -270,6 +285,7 @@ public class SaveIO{ } //general state + byte mode = stream.readByte(); int wave = stream.readInt(); float wavetime = stream.readFloat(); @@ -282,6 +298,7 @@ public class SaveIO{ Vars.player.x = playerx; Vars.player.y = playery; Vars.player.health = playerhealth; + Vars.control.setMode(GameMode.values()[mode]); Core.camera.position.set(playerx, playery, 0); //weapons diff --git a/core/src/io/anuke/mindustry/ui/LevelDialog.java b/core/src/io/anuke/mindustry/ui/LevelDialog.java index a6cd5f6c85..e19f697798 100644 --- a/core/src/io/anuke/mindustry/ui/LevelDialog.java +++ b/core/src/io/anuke/mindustry/ui/LevelDialog.java @@ -3,15 +3,16 @@ package io.anuke.mindustry.ui; import com.badlogic.gdx.graphics.g2d.TextureRegion; import io.anuke.mindustry.Vars; +import io.anuke.mindustry.world.GameMode; import io.anuke.mindustry.world.Map; import io.anuke.ucore.core.Core; import io.anuke.ucore.core.Settings; import io.anuke.ucore.core.Timers; import io.anuke.ucore.function.StringSupplier; -import io.anuke.ucore.scene.ui.ImageButton; -import io.anuke.ucore.scene.ui.ScrollPane; +import io.anuke.ucore.scene.ui.*; import io.anuke.ucore.scene.ui.layout.Table; import io.anuke.ucore.scene.ui.layout.Unit; +import io.anuke.ucore.scene.utils.Elements; public class LevelDialog extends FloatingDialog{ private Map selectedMap = Map.delta; @@ -31,6 +32,21 @@ public class LevelDialog extends FloatingDialog{ int maxwidth = 4; + Table selmode = new Table(); + ButtonGroup group = new ButtonGroup<>(); + selmode.add("Gamemode: ").padRight(10f).units(Unit.dp); + + for(GameMode mode : GameMode.values()){ + TextButton b = Elements.newButton(mode.toString(), "toggle", ()->{ + Vars.control.setMode(mode); + }); + group.add(b); + selmode.add(b).size(130f, 54f).units(Unit.dp); + } + + content().add(selmode); + content().row(); + for(int i = 0; i < Map.values().length; i ++){ Map map = Map.values()[i]; @@ -61,7 +77,7 @@ public class LevelDialog extends FloatingDialog{ maps.add(image).width(170).pad(4f).units(Unit.dp); } - content().add(pane); + content().add(pane).uniformX(); shown(()->{ //this is necessary for some reason? diff --git a/core/src/io/anuke/mindustry/ui/LoadDialog.java b/core/src/io/anuke/mindustry/ui/LoadDialog.java index 26b874ad68..1e69e792f6 100644 --- a/core/src/io/anuke/mindustry/ui/LoadDialog.java +++ b/core/src/io/anuke/mindustry/ui/LoadDialog.java @@ -46,8 +46,8 @@ public class LoadDialog extends FloatingDialog{ button.row(); - Label info = new Label("[gray]" + (!SaveIO.isSaveValid(i) ? "" : "Wave " + - SaveIO.getWave(slot)+"\nLast Saved: " + SaveIO.getTimeString(i))); + Label info = new Label("[gray]" + (!SaveIO.isSaveValid(i) ? "" : SaveIO.getMode(slot) + ", Wave " + + SaveIO.getWave(slot) + "\nLast Saved: " + SaveIO.getTimeString(i))); info.setAlignment(Align.center, Align.center); button.add(info).padBottom(2).padTop(6); diff --git a/core/src/io/anuke/mindustry/ui/fragments/BlocksFragment.java b/core/src/io/anuke/mindustry/ui/fragments/BlocksFragment.java index f7f7ab3261..e77c6ef22a 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/BlocksFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/BlocksFragment.java @@ -100,7 +100,7 @@ public class BlocksFragment implements Fragment{ image.update(()->{ - boolean canPlace = !control.tutorial.active() || control.tutorial.canPlace(); + boolean canPlace = !control.getTutorial().active() || control.getTutorial().canPlace(); boolean has = control.hasItems(r.requirements) && canPlace; //image.setDisabled(!has); image.setChecked(player.recipe == r); diff --git a/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java b/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java index 581e389c41..e6df62fe3c 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java @@ -12,6 +12,7 @@ import io.anuke.mindustry.core.GameState; import io.anuke.mindustry.core.GameState.State; import io.anuke.mindustry.entities.enemies.Enemy; import io.anuke.mindustry.resource.Item; +import io.anuke.mindustry.world.GameMode; import io.anuke.ucore.core.Core; import io.anuke.ucore.core.Draw; import io.anuke.ucore.core.Settings; @@ -73,9 +74,9 @@ public class HudFragment implements Fragment{ //ui table new table(){{ - control.tutorial.buildUI(this); + control.getTutorial().buildUI(this); - visible(()->control.tutorial.active()); + visible(()->control.getTutorial().active()); }}.end(); //paused table @@ -92,6 +93,13 @@ public class HudFragment implements Fragment{ new table(){{ atop(); aright(); + + float uheight = 72f; + + new imagebutton("icon-play", Unit.dp.inPixels(30f), ()->{ + Vars.control.runWave(); + }).size(uheight).uniformY().units(Unit.dp) + .visible(()-> Vars.control.getMode() == GameMode.sandbox && Vars.control.getEnemiesRemaining() <= 0); new table("button"){{ @@ -101,11 +109,11 @@ public class HudFragment implements Fragment{ new label(()-> control.getEnemiesRemaining() > 0 ? control.getEnemiesRemaining() + " Enemies remaining" : - control.tutorial.active() ? "waiting..." : "New wave in " + (int) (control.getWaveCountdown() / 60f)) + (control.getTutorial().active() || Vars.control.getMode() == GameMode.sandbox) ? "waiting..." : "New wave in " + (int) (control.getWaveCountdown() / 60f)) .minWidth(150); get().pad(Unit.dp.inPixels(12)); - }}; + }}.height(uheight).units(Unit.dp); visible(()->!GameState.is(State.menu)); }}.end(); diff --git a/core/src/io/anuke/mindustry/world/GameMode.java b/core/src/io/anuke/mindustry/world/GameMode.java new file mode 100644 index 0000000000..62405136fd --- /dev/null +++ b/core/src/io/anuke/mindustry/world/GameMode.java @@ -0,0 +1,5 @@ +package io.anuke.mindustry.world; + +public enum GameMode{ + waves, sandbox; +} diff --git a/core/src/io/anuke/mindustry/world/blocks/WeaponBlocks.java b/core/src/io/anuke/mindustry/world/blocks/WeaponBlocks.java index b205926b2d..ac4f3969fa 100644 --- a/core/src/io/anuke/mindustry/world/blocks/WeaponBlocks.java +++ b/core/src/io/anuke/mindustry/world/blocks/WeaponBlocks.java @@ -103,6 +103,7 @@ public class WeaponBlocks{ bullet = BulletType.sniper; ammo = Item.steel; health = 70; + shootEffect = Fx.railshot; fullDescription = "Advanced long-range turret. Uses steel for ammo. Very high damage, but low fire rate. " + "Expensive to use, but can be placed far away from enemy lines due to its range."; } @@ -121,6 +122,8 @@ public class WeaponBlocks{ fullDescription = "Advanced splash-damage turret. Uses coal for ammo. " + "Very slow fire rate and bullets, but very high single-target and splash damage. " + "Useful for large crowds of enemies."; + shootEffect = Fx.mortarshot; + shootShake = 2f; } }, @@ -189,6 +192,7 @@ public class WeaponBlocks{ shots = 2; fullDescription = "The ultimate rapid-fire turret. Uses uranium as ammo. Shoots large slugs at a high fire rate. " + "Medium range. Spans multiple tiles. Extremely tough."; + shootEffect = Fx.chainshot; } //TODO specify turret shoot effect in turret instead of doing it manually @@ -203,7 +207,7 @@ public class WeaponBlocks{ for(int i = -1; i < 1; i ++){ Angles.vector.set(len, Mathf.sign(i) * space).rotate(entity.rotation); bullet(tile, entity.rotation); - Effects.effect(Fx.chainshot, tile.worldx() + Angles.x() + offset.x, + Effects.effect(shootEffect, tile.worldx() + Angles.x() + offset.x, tile.worldy()+ Angles.y() + offset.y, entity.rotation); } @@ -225,19 +229,8 @@ public class WeaponBlocks{ shootCone = 9f; fullDescription = "The ultimate long-range turret. Uses uranium as ammo. Shoots large splash-damage shells at a medium rate of fire. " + "Long range. Spans multiple tiles. Extremely tough."; - } - - @Override - protected void shoot(Tile tile){ - TurretEntity entity = tile.entity(); - Vector2 offset = getPlaceOffset(); - - Angles.translation(entity.rotation, 14f); - bullet(tile, entity.rotation); - Effects.effect(Fx.titanshot, tile.worldx() + Angles.x() + offset.x, - tile.worldy()+ Angles.y() + offset.y, entity.rotation); - - Effects.shake(3f, 3f, tile.worldx(), tile.worldy()); + shootEffect = Fx.titanshot; + shootShake = 3f; } }; } diff --git a/core/src/io/anuke/mindustry/world/blocks/types/defense/Turret.java b/core/src/io/anuke/mindustry/world/blocks/types/defense/Turret.java index 83bab1a746..32ef2ec8e8 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/defense/Turret.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/defense/Turret.java @@ -19,6 +19,7 @@ import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Tile; import io.anuke.ucore.core.Draw; import io.anuke.ucore.core.Effects; +import io.anuke.ucore.core.Effects.Effect; import io.anuke.ucore.core.Timers; import io.anuke.ucore.entities.Entities; import io.anuke.ucore.util.Angles; @@ -41,6 +42,8 @@ public class Turret extends Block{ protected int maxammo = 400; protected float rotatespeed = 0.2f; protected float shootCone = 5f; + protected Effect shootEffect = null; + protected float shootShake = 0f; public Turret(String name) { super(name); @@ -216,6 +219,8 @@ public class Turret extends Block{ protected void shoot(Tile tile){ TurretEntity entity = tile.entity(); + Vector2 offset = getPlaceOffset(); + Angles.translation(entity.rotation, width * Vars.tilesize / 2f); for(int i = 0; i < shots; i ++){ @@ -228,12 +233,21 @@ public class Turret extends Block{ } } + + if(shootEffect != null){ + Effects.effect(shootEffect, tile.worldx() + Angles.x() + offset.x, + tile.worldy()+ Angles.y() + offset.y, entity.rotation); + } + + if(shootShake > 0){ + Effects.shake(shootShake, shootShake, tile.entity); + } } protected void bullet(Tile tile, float angle){ Vector2 offset = getPlaceOffset(); - Bullet out = new Bullet(bullet, tile.entity, tile.worldx() + Angles.x() + offset.x, tile.worldy() + Angles.y() + offset.y, angle).add(); - out.damage = (int)(bullet.damage*Vars.multiplier); + Bullet out = new Bullet(bullet, tile.entity, tile.worldx() + Angles.x() + offset.x, tile.worldy() + Angles.y() + offset.y, angle).add(); + out.damage = (int)(bullet.damage*Vars.multiplier); } public static class TurretEntity extends TileEntity{ diff --git a/desktop/mindustry-saves/0.mins b/desktop/mindustry-saves/0.mins index 7bf59da2b401cf2fffaca7fcf3a6b5da0f8dc37f..5df3888dda46cb0f06dc9b5ea5019507a7044e69 100644 GIT binary patch literal 1399 zcmZQzVBlh4V2uCWod1!5fq{Y1Rrr0H3ljr_^XCH~ehLFSBZFK^0~?5701?a}f(b;h zf(RB60aD4vz;O5=0|P@g1B1d+kN|@)1B1kJ7)wC|#u8ftW2x)FSaP~BmfAWPOI;tv zQrG}vsli!VaF+B&n5^6;7)#L@#!}bj5&;2t+V2Fc`yKC<;z~ zAXm#dK->gU0fq~WmG|FngQevDJPH+h$ZI)F^dW6Ymm6S({vC8a?zm~P?mzzOejn55QqWN zE9(r=3wIkM!$)w)AI1=Wm8Z|ZAO}?sw~LX1f#n(lgB(P?4a^*Qs5%%QWEx8y1A{z7 z9csu!)S`sEsx#b$E+D-~>FWq8Uk**4&lRRq;3$kG3uh_8Wi{bqoX245MBL%5<1m&M z*j=Eok~;|#6ZV3!6yYqLQ!p_DZy3wuG>m2J17q>~!dRMcmNuNldk!Wm=m%pd!o~Rg hVPb;kVJuZROB>FT4S>mV2f|n~aF!~ZrEv)&3jkX_Zqfh% literal 2553 zcmZQzVBln6V2u9|JZTjJ0|S%GGzJD28Q147rWN-X7#LC**jX6ln$IvZ$hG7!Fvzts zGcw4vM6fZ)wKT9Y$Tc5k0U;AR>D})T40t41A{7@C9)PKCZ!8zi83${(Wt|~<;VxugV30kG zDJBP1hir!&M4c^6uRK%@j1RIy9-;;{A|UF(5n%vQ%)s#f|Nkcp3@V2~T0qV+b_TOR z<%J8_F^F_`1eGs`Ca-b?tW%VMLGvh>CBneK?FMFvGB9XBSRxDzQpaIpauAjX1A{S~ zB@T8RD1tRkg4Kaa0f?9=1A_^i#d``SD-35DdVyUCE_tHB(hLlSr@&%P;55q!3Pc75 z2Km!qSrG;XH8@KX!V+a*(DH`K8hV2@BMf9@VmQ8rfx+-JSRB<*H6OS(AFwovwsa*1 z2E#L8aa3)hXW`m>!O{qA3=9m0XTf3+Ees3{T<5^5MHv`){9r77Kd>5b#L0lYDC8s+ zAi}_)e-1363GzEEJPaU;5n>=OU1ne~z@pX=T`kB#Sky`TgPkJ6z+eVvsa=4HX+v0| z3=CX>FfpBrFqVEG*p2$2)TqJWD9>ffz+eCs1F6wqaFlv5k%58l5{L&%p;AFGmLfz< zgn@zgGE7V^7|a5d>kyVG1B3V#uox(6L%=K%1_u7CU>2xu3kAC%0L1TMaGaNx%D`X% z5z_~S9L!amVIUPC7jVN_0uUCcz=5zt85mR`EKp5#4Xi_ifx!eKCd$Ad6%H4>4r3|a zfU%50B@F|}4uM->F;NBv-6&-D9Rk;vg3(}E5e5cfIE&*BOiTjKQi8BRb$KjIRvN+* zWnkclgNgA%SfUIJ0-y#D11SH=LRg{<42p1BeYlv(1GwHqFbh;1J_55u7#Nh2!7NZc z3t@rsIGiPz0+W?W1+zpL7!;nvSnBCu7N{o8gt25^!dQH-z$_642EJ@C3shUbhOwk_ bU@Qd)ON4*u!I>H5)8m%!VC;kAS@vU zh6F>H*gPXJONfDCIfNz5zz}H+6N`bfX2V&%rZCxVGZ)CAcuSb<5(rC}fg!>QCYEmlW(hMeIs}p8m z2oHg=)`!7ZA>lAqXatPaf?!3$#5TfNol!8cEzvMmcnplS0nX}4fQhY#vw{*~VzF>m z0-TivXSF23)cGdESRpAeRw|s;3TO4E!(>A;U@ZSE7^@4y5@KN32w@2`F!*G{WH;r& zSiZS1R!|-TDD{KmR)c|oAsCGxg2qqGgX_!(>r?}22k8Wf2V)Tnfr^3TVd_F5Vm8bS z3=AN#FbE&TtZ*!15fCwO+AsoH3^J5Kgn?mQKA0uUzz|XZaTbUVG8#mO6_kT0Mh1rP zf(j@rqM#DWN+|#_7(jXpA$mb3!}Nxti!m`U7_VVqU_Z;i5LVa@(h4#cq6(C8nLw#3 zqOcPxv#Jop0GaMp1Y?C1LF{3IdLJYnRx}+%fy^qJ0cAxL&4jY@AbN!u7`8xI!VC;S z#Sl}FT^o!=ECecsY+EQq%m$`648li^04!n=5HZXM2r2*1`-Nif-Ua8}%8m{`Iz7%LZ?T0pj~g|m{tsRbm~F$<<{Gn~~m2PW1w55~%x4`a11 zg0a@XS*gpxVxU9^VS#Fkm0&Sp28NtfV3rUA!di3L+AT0v%QhG*eJ707 z3}6 literal 2338 zcmZQzVBln6V2poX8Lr5{z`*V@je)_1S4PXlW7-=A28I*{b`}P?mIh`J!N4Hb@|h9D zVgnJZAc6@*FfcF(FfzDEdCqn*f4q#5fq_AelfgyhtcQy~*HT6X2F3{t3@*x>xme67ACO>eAMByw&Ww4ki1B2ia z7)u<^l2e6=X&_ijVPYc7z$_641`P;Hlz~BHIao}Tfk7J1QdS3xf&2jx6JcNwTmcpn zWnj?N0JB6G7z{PREKvpqQ7teFWHOwk4`=CV!(>HtU@UE27)wAO#?n|1W{EN|h#7!c zA`A>_aF(DUOiXtpjAaC2f&5_t787M)FoCo9K(WREiX(kfn5>K$j3uxg#uA6K_;-NC zL>L%MEnqBtOBhSk3eK{Iu@oRIQ3eLB-C!|M1_s_eFqRyICBnd<4`+$l!epi4ELjLk zgn>Z;&eDajKryoqtV4u>LDr4|lqA72plFcYhsu{jm$wJYtAjLw)Pu~C-H$0I2UQ1> zhpCf;sIz5eU|;}=$wSp3n%?dkhSM2S7G~Vn)sZ;u;ViWDAIvcPIx@j0_C&2P&W}1&2x~%MhYhgn@zU zAV>&gimW4;CBncU=Lj(m*_Cn!F~#H^+d*1Dc0go}85kItA{ZDL6dXIDGDZ;dMHm=_ zoj^jM+$rY-F^dTrDj;!rr|BRHWY(b>P?mxdxG-R3U{E*&5(4Sffv`jw7z`mSP`+}8 z$;vuIOh$IO>|snXIjA~h7sx@>*~0Y7L)F0eAUotCYEa{90|S47H3MIw1;ZD=Qw$20 z#SEWSPB8ovc+K$X?@Da$#JllC<6nh2aLsa0>(0eh>0*T$auoUU-V{b6EK7ho*o05A(wss_SXN)VO^0|Un;n3!-7m<1}4A!4AC8!n~@VTm#@ zXuxH4Az~s73}TmIdU>zGSccbOEbbdHmJ%otf@=bqNU)eF1B1d%7>hj$%o1T>5V!?n z2|-w*3=9U*U@=e$dI!cbgtN>bED;6I-nh(J&Q3eLRBp6FO6~+=y2eUwR;By#D4L%UvtTTq*I*XNmk<`H+=Q?|b!s+PR)m3pFCWYT)eaxPED;6&sFW^( Ku>_03ED-?hRNz+t