From 03a26f74c220eaa0328635b1d6d8303bf902d8e7 Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 23 Oct 2017 23:13:07 -0400 Subject: [PATCH] Added oil block, power section, more block types --- core/assets-raw/sprites/blocks/oil.png | Bin 0 -> 156 bytes core/assets-raw/sprites/blocks/oiledge.png | Bin 0 -> 239 bytes core/assets-raw/sprites/ui/icon-power.png | Bin 0 -> 151 bytes core/assets/maps/delta.png | Bin 2440 -> 2469 bytes core/assets/sprites/sprites.atlas | 515 +++++++++--------- core/assets/sprites/sprites.png | Bin 39589 -> 39489 bytes .../src/io/anuke/mindustry/EffectCreator.java | 8 + core/src/io/anuke/mindustry/Mindustry.java | 18 +- core/src/io/anuke/mindustry/Tutorial.java | 32 +- core/src/io/anuke/mindustry/ai/Pathfind.java | 3 +- .../io/anuke/mindustry/resource/Liquid.java | 3 +- .../io/anuke/mindustry/resource/Recipe.java | 41 +- .../io/anuke/mindustry/resource/Section.java | 2 +- .../io/anuke/mindustry/world/Generator.java | 3 +- core/src/io/anuke/mindustry/world/World.java | 48 +- .../anuke/mindustry/world/blocks/Blocks.java | 56 +- .../mindustry/world/blocks/DefenseBlocks.java | 66 +++ .../world/blocks/DistributionBlocks.java | 42 ++ .../world/blocks/ProductionBlocks.java | 60 +- .../mindustry/world/blocks/WeaponBlocks.java | 25 +- .../blocks/types/distribution/Junction.java | 43 ++ .../types/distribution/PowerBooster.java | 9 +- .../blocks/types/distribution/Sorter.java | 41 ++ .../blocks/types/distribution/Teleporter.java | 36 ++ .../production/LiquidPowerGenerator.java | 28 +- desktop/mindustry-saves/0.mins | Bin 10994 -> 9190 bytes 26 files changed, 640 insertions(+), 439 deletions(-) create mode 100644 core/assets-raw/sprites/blocks/oil.png create mode 100644 core/assets-raw/sprites/blocks/oiledge.png create mode 100644 core/assets-raw/sprites/ui/icon-power.png create mode 100644 core/src/io/anuke/mindustry/world/blocks/DefenseBlocks.java create mode 100644 core/src/io/anuke/mindustry/world/blocks/DistributionBlocks.java create mode 100644 core/src/io/anuke/mindustry/world/blocks/types/distribution/Junction.java create mode 100644 core/src/io/anuke/mindustry/world/blocks/types/distribution/Sorter.java create mode 100644 core/src/io/anuke/mindustry/world/blocks/types/distribution/Teleporter.java diff --git a/core/assets-raw/sprites/blocks/oil.png b/core/assets-raw/sprites/blocks/oil.png new file mode 100644 index 0000000000000000000000000000000000000000..fc632673d335b77d87ea7bb0378a28d3b9daf326 GIT binary patch literal 156 zcmeAS@N?(olHy`uVBq!ia0y~yVBi2@4mJh`h9ms@x)~T4I14-?iy0WWg+Z8+Vb&Z8 z1_lQ95>H=O_J>>&OxDW54gN(83=EPbt`Q~9`MJ5Nc_j?aMX8A;sVNHOnI#zt?w-B@ z;f;La3=9lno-U3d5|@*&T)Fb+d;`0Ip#Z~SXGVrDQ^u~hKT}H?7#J8lUHx3vIVCg! E0PTJ!n*aa+ literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/oiledge.png b/core/assets-raw/sprites/blocks/oiledge.png new file mode 100644 index 0000000000000000000000000000000000000000..cd971062a414df4b11283a565029ab500f87f85c GIT binary patch literal 239 zcmeAS@N?(olHy`uVBq!ia0y~yVBi5^4mJh`hOp9@=L`%CoCO|{#S9GG!XV7ZFl&wk z0|NtliKnkC`$H}XCToo&LDPOQFfd4#xJHyX=jZ08=9Mrw7o{eaq^2m8XO?6rxO@5r zgg5euGcYh@db&7#6-=mqlZTr5r;OO`x* zwK+aN^3IE2GfO4S@+?bT(la(xiGFFE?xtzT|Fk-SqiS~gte2~q!JAP^iDn%Qva o(YF50)0WKX^NKtC?djWXo0OjK7hf}nfq{X+)78&qol`;+03a$--~a#s literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/ui/icon-power.png b/core/assets-raw/sprites/ui/icon-power.png new file mode 100644 index 0000000000000000000000000000000000000000..bc8282d39a37444579f8a97bf119ce2f7b2c9758 GIT binary patch literal 151 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 delta 2364 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 diff --git a/core/assets/sprites/sprites.atlas b/core/assets/sprites/sprites.atlas index 4a3d88586e..54cf98a71d 100644 --- a/core/assets/sprites/sprites.atlas +++ b/core/assets/sprites/sprites.atlas @@ -41,133 +41,133 @@ blocks/coal2 index: -1 blocks/coal3 rotate: false - xy: 397, 324 + xy: 393, 372 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/coaldrill rotate: false - xy: 397, 314 + xy: 471, 443 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/coalgenerator rotate: false - xy: 397, 304 + xy: 481, 443 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/coalpurifier rotate: false - xy: 397, 294 + xy: 469, 433 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/compositewall rotate: false - xy: 397, 284 + xy: 469, 423 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conduit rotate: false - xy: 457, 451 + xy: 479, 433 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conduitbottom rotate: false - xy: 457, 441 + xy: 469, 413 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conduitliquid rotate: false - xy: 457, 431 + xy: 479, 423 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conduittop rotate: false - xy: 457, 421 + xy: 479, 413 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conveyor rotate: false - xy: 457, 411 + xy: 389, 276 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conveyormove rotate: false - xy: 117, 4 + xy: 389, 266 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/core rotate: false - xy: 230, 62 + xy: 389, 256 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/cross rotate: false - xy: 230, 52 + xy: 389, 246 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/crucible rotate: false - xy: 230, 42 + xy: 389, 236 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/deepwater rotate: false - xy: 228, 32 + xy: 117, 4 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/dirt1 rotate: false - xy: 409, 402 + xy: 230, 62 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/dirt2 rotate: false - xy: 405, 392 + xy: 230, 52 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/dirt3 rotate: false - xy: 405, 382 + xy: 230, 42 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/dirtblock rotate: false - xy: 405, 372 + xy: 228, 32 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -181,63 +181,63 @@ blocks/dirtedge index: -1 blocks/doubleturret rotate: false - xy: 105, 2 + xy: 471, 453 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/drill rotate: false - xy: 371, 224 + xy: 409, 402 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/duriumwall rotate: false - xy: 371, 214 + xy: 405, 392 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/flameturret rotate: false - xy: 204, 34 + xy: 457, 435 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/grass1 rotate: false - xy: 381, 226 + xy: 403, 372 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/grass2 rotate: false - xy: 381, 216 + xy: 397, 362 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/grass3 rotate: false - xy: 381, 206 + xy: 397, 352 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/grassblock rotate: false - xy: 471, 455 + xy: 397, 342 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/grassblock2 rotate: false - xy: 481, 455 + xy: 397, 332 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -251,56 +251,56 @@ blocks/grassedge index: -1 blocks/iron1 rotate: false - xy: 487, 445 + xy: 407, 342 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/iron2 rotate: false - xy: 467, 415 + xy: 407, 332 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/iron3 rotate: false - xy: 477, 425 + xy: 407, 322 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/irondrill rotate: false - xy: 487, 435 + xy: 407, 312 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/ironwall rotate: false - xy: 477, 415 + xy: 407, 302 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/junction rotate: false - xy: 487, 425 + xy: 407, 292 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/laserturret rotate: false - xy: 140, 26 + xy: 385, 310 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/lava rotate: false - xy: 487, 415 + xy: 413, 372 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -314,322 +314,336 @@ blocks/lavaedge index: -1 blocks/liquidrouter rotate: false - xy: 501, 453 + xy: 417, 362 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/machineturret rotate: false - xy: 152, 26 + xy: 385, 298 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/megarepairturret rotate: false - xy: 164, 26 + xy: 385, 286 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/mortarturret rotate: false - xy: 176, 26 + xy: 128, 26 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/mossblock rotate: false - xy: 497, 433 + xy: 417, 342 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/mossstone rotate: false - xy: 497, 433 + xy: 417, 342 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 -blocks/omnidrill +blocks/oil rotate: false - xy: 497, 413 + xy: 417, 322 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 -blocks/plasmaturret - rotate: false - xy: 188, 26 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -blocks/pump - rotate: false - xy: 132, 16 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -blocks/repairturret - rotate: false - xy: 393, 394 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -blocks/rock - rotate: false - xy: 152, 16 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -blocks/rock2 - rotate: false - xy: 162, 16 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -blocks/rock2shadow - rotate: false - xy: 172, 16 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -blocks/rockshadow - rotate: false - xy: 182, 16 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -blocks/router - rotate: false - xy: 127, 6 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -blocks/shadow - rotate: false - xy: 393, 382 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -blocks/shieldgenerator - rotate: false - xy: 137, 6 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -blocks/shotgunturret - rotate: false - xy: 393, 370 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -blocks/shrub - rotate: false - xy: 147, 6 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -blocks/shrubshadow - rotate: false - xy: 157, 6 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -blocks/smelter - rotate: false - xy: 167, 6 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -blocks/sniperturret - rotate: false - xy: 397, 358 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -blocks/steelconveyor - rotate: false - xy: 177, 6 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -blocks/steelconveyormove - rotate: false - xy: 192, 16 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -blocks/steelwall - rotate: false - xy: 187, 6 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -blocks/stone +blocks/oiledge rotate: false xy: 375, 236 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 -blocks/stone1 +blocks/omnidrill rotate: false - xy: 197, 6 + xy: 417, 312 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 -blocks/stone2 +blocks/plasmaturret rotate: false - xy: 415, 392 + xy: 140, 26 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 +blocks/pump + rotate: false + xy: 417, 292 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 -blocks/stone3 +blocks/repairturret rotate: false - xy: 415, 382 + xy: 152, 26 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 +blocks/rock + rotate: false + xy: 371, 214 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 -blocks/stoneblock +blocks/rock2 rotate: false - xy: 415, 372 + xy: 381, 226 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 -blocks/stoneblock2 +blocks/rock2shadow rotate: false - xy: 409, 362 + xy: 381, 216 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 -blocks/stoneblock3 +blocks/rockshadow rotate: false - xy: 409, 352 + xy: 371, 204 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 -blocks/stonedrill +blocks/router rotate: false - xy: 409, 342 + xy: 381, 206 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 -blocks/stoneedge +blocks/shadow + rotate: false + xy: 164, 26 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 +blocks/shieldgenerator + rotate: false + xy: 391, 226 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +blocks/shotgunturret + rotate: false + xy: 176, 26 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 +blocks/shrub + rotate: false + xy: 391, 216 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +blocks/shrubshadow + rotate: false + xy: 391, 206 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +blocks/smelter + rotate: false + xy: 491, 443 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +blocks/sniperturret + rotate: false + xy: 188, 26 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 +blocks/steelconveyor + rotate: false + xy: 489, 433 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +blocks/steelconveyormove + rotate: false + xy: 489, 423 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +blocks/steelwall + rotate: false + xy: 489, 413 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +blocks/stone rotate: false xy: 357, 220 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 -blocks/stonewall +blocks/stone1 rotate: false - xy: 409, 332 + xy: 495, 453 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 -blocks/titanium1 +blocks/stone2 rotate: false - xy: 407, 322 + xy: 122, 16 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 -blocks/titanium2 +blocks/stone3 rotate: false - xy: 407, 312 + xy: 132, 16 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 -blocks/titanium3 +blocks/stoneblock rotate: false - xy: 407, 302 + xy: 142, 16 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 -blocks/titaniumdrill +blocks/stoneblock2 rotate: false - xy: 407, 292 + xy: 152, 16 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 -blocks/titaniumpurifier +blocks/stoneblock3 rotate: false - xy: 407, 282 + xy: 162, 16 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 -blocks/titaniumshieldwall +blocks/stonedrill rotate: false - xy: 419, 362 + xy: 172, 16 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 -blocks/titaniumwall - rotate: false - xy: 419, 352 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -blocks/turret - rotate: false - xy: 397, 346 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 -blocks/water - rotate: false - xy: 419, 332 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -blocks/wateredge +blocks/stoneedge rotate: false xy: 357, 206 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 +blocks/stonewall + rotate: false + xy: 182, 16 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +blocks/titanium1 + rotate: false + xy: 127, 6 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +blocks/titanium2 + rotate: false + xy: 137, 6 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +blocks/titanium3 + rotate: false + xy: 147, 6 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +blocks/titaniumdrill + rotate: false + xy: 157, 6 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +blocks/titaniumpurifier + rotate: false + xy: 167, 6 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +blocks/titaniumshieldwall + rotate: false + xy: 177, 6 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +blocks/titaniumwall + rotate: false + xy: 192, 16 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +blocks/turret + rotate: false + xy: 393, 394 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 +blocks/water + rotate: false + xy: 197, 6 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +blocks/wateredge + rotate: false + xy: 457, 447 + size: 12, 12 + orig: 12, 12 + offset: 0, 0 + index: -1 blocks/waveturret rotate: false - xy: 397, 334 + xy: 393, 382 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -811,42 +825,42 @@ enemies/tankenemy-t3 index: -1 icon-coal rotate: false - xy: 491, 455 + xy: 397, 322 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-dirium rotate: false - xy: 467, 445 + xy: 397, 312 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-iron rotate: false - xy: 467, 435 + xy: 397, 302 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-steel rotate: false - xy: 477, 445 + xy: 397, 292 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-stone rotate: false - xy: 467, 425 + xy: 407, 362 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-titanium rotate: false - xy: 477, 435 + xy: 407, 352 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -867,7 +881,7 @@ laserend index: -1 player rotate: false - xy: 122, 16 + xy: 417, 302 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1000,49 +1014,56 @@ ui/icon-close-over index: -1 ui/icon-cursor rotate: false - xy: 216, 34 + xy: 483, 453 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-defense rotate: false - xy: 385, 358 + xy: 457, 423 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-distribution rotate: false - xy: 385, 346 + xy: 457, 411 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-menu rotate: false - xy: 385, 334 + xy: 105, 2 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-pause rotate: false - xy: 385, 322 + xy: 204, 34 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-play rotate: false - xy: 385, 310 + xy: 216, 34 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 +ui/icon-power + rotate: false + xy: 385, 358 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-production rotate: false - xy: 385, 298 + xy: 385, 346 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -1063,14 +1084,14 @@ ui/icon-rotate-arrow index: -1 ui/icon-settings rotate: false - xy: 385, 286 + xy: 385, 334 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-touch rotate: false - xy: 128, 26 + xy: 385, 322 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -1133,21 +1154,21 @@ ui/scroll-knob-vertical index: -1 ui/selection rotate: false - xy: 422, 409 + xy: 117, 1 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 ui/separator rotate: false - xy: 117, 1 + xy: 120, 1 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 ui/slider rotate: false - xy: 419, 402 + xy: 228, 154 size: 1, 8 orig: 1, 8 offset: 0, 0 @@ -1220,35 +1241,35 @@ weapons/blaster index: -1 weapons/flamer rotate: false - xy: 371, 204 + xy: 405, 382 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/mortar rotate: false - xy: 497, 443 + xy: 417, 352 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/multigun rotate: false - xy: 497, 423 + xy: 417, 332 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/railgun rotate: false - xy: 142, 16 + xy: 371, 224 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/triblaster rotate: false - xy: 419, 342 + xy: 187, 6 size: 8, 8 orig: 8, 8 offset: 0, 0 diff --git a/core/assets/sprites/sprites.png b/core/assets/sprites/sprites.png index dd44cce56dd58ba05d8f108c1f1748449186238b..5a6f224dd3ae8654e81841d43eb62bdc3bb4f78d 100644 GIT binary patch literal 39489 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 pJA { + Draw.color(Color.DARK_GRAY); + float scl = 0.25f; + Draw.thick(1f - Mathf.clamp(e.ifract() - (1f-scl)) * (1f/scl)); + Draw.circle(e.x, e.y, e.ifract()*3f); + Draw.reset(); + }); + Effects.create("shellexplosion", 15, e -> { Draw.thickness(1.3f - e.ifract()); Draw.color(Hue.mix(Color.WHITE, Color.ORANGE, e.ifract())); diff --git a/core/src/io/anuke/mindustry/Mindustry.java b/core/src/io/anuke/mindustry/Mindustry.java index c4f0c2932d..e068013c67 100644 --- a/core/src/io/anuke/mindustry/Mindustry.java +++ b/core/src/io/anuke/mindustry/Mindustry.java @@ -7,9 +7,7 @@ import com.badlogic.gdx.utils.Array; import io.anuke.mindustry.GameState.State; import io.anuke.mindustry.io.Formatter; -import io.anuke.mindustry.world.blocks.Blocks; -import io.anuke.mindustry.world.blocks.ProductionBlocks; -import io.anuke.mindustry.world.blocks.WeaponBlocks; +import io.anuke.mindustry.world.blocks.*; import io.anuke.ucore.core.Inputs; import io.anuke.ucore.core.Timers; import io.anuke.ucore.modules.ModuleCore; @@ -29,15 +27,17 @@ public class Mindustry extends ModuleCore { } }; + //always initialize blocks in this order, otherwise there are ID errors + public Class[] blockClasses = new Class[]{ + Blocks.class, + DefenseBlocks.class, + DistributionBlocks.class, + ProductionBlocks.class, + WeaponBlocks.class + }; @Override public void init(){ - //always initialize blocks in this order, otherwise there are ID errors - Blocks.dirt.getClass(); - ProductionBlocks.coaldrill.getClass(); - WeaponBlocks.turret.getClass(); - - module(Vars.control = new Control()); module(Vars.renderer = new Renderer()); module(Vars.ui = new UI()); diff --git a/core/src/io/anuke/mindustry/Tutorial.java b/core/src/io/anuke/mindustry/Tutorial.java index 7a2710f2fa..321c295976 100644 --- a/core/src/io/anuke/mindustry/Tutorial.java +++ b/core/src/io/anuke/mindustry/Tutorial.java @@ -6,9 +6,7 @@ import io.anuke.mindustry.GameState.State; import io.anuke.mindustry.resource.Item; import io.anuke.mindustry.resource.Weapon; import io.anuke.mindustry.world.*; -import io.anuke.mindustry.world.blocks.Blocks; -import io.anuke.mindustry.world.blocks.ProductionBlocks; -import io.anuke.mindustry.world.blocks.WeaponBlocks; +import io.anuke.mindustry.world.blocks.*; import io.anuke.ucore.core.Timers; import io.anuke.ucore.scene.builders.button; import io.anuke.ucore.scene.builders.label; @@ -198,7 +196,7 @@ public class Tutorial{ blockRotation = 1; blockPlaceX = 0; blockPlaceY = -1; - targetBlock = ProductionBlocks.conveyor; + targetBlock = DistributionBlocks.conveyor; text = "Use [orange][[R][] to rotate the conveyor to face [orange]forwards[], then place it in the [yellow]marked location[] using the [orange][[left mouse button][]."; } }, @@ -211,7 +209,7 @@ public class Tutorial{ blockRotation = 1; blockPlaceX = 0; blockPlaceY = -1; - targetBlock = ProductionBlocks.conveyor; + targetBlock = DistributionBlocks.conveyor; text = "Use the [orange][[rotate button][] to rotate the conveyor to face [orange]forwards[], drag it into position with one finger, then place it in the [yellow]marked location[] using the [orange][[checkmark][]."; } }, @@ -286,9 +284,9 @@ public class Tutorial{ void onSwitch(){ for(int flip : new int[]{1, -1}){ - World.tile(World.core.x + flip, World.core.y - 1).setBlock(ProductionBlocks.conveyor, 2 * flip); - World.tile(World.core.x + flip*2, World.core.y - 1).setBlock(ProductionBlocks.conveyor, 2 * flip); - World.tile(World.core.x + flip*2, World.core.y - 2).setBlock(ProductionBlocks.conveyor, 1); + World.tile(World.core.x + flip, World.core.y - 1).setBlock(DistributionBlocks.conveyor, 2 * flip); + World.tile(World.core.x + flip*2, World.core.y - 1).setBlock(DistributionBlocks.conveyor, 2 * flip); + World.tile(World.core.x + flip*2, World.core.y - 2).setBlock(DistributionBlocks.conveyor, 1); World.tile(World.core.x + flip*2, World.core.y - 3).setFloor(Blocks.stone); World.tile(World.core.x + flip*2, World.core.y - 3).setBlock(ProductionBlocks.stonedrill); @@ -452,7 +450,7 @@ public class Tutorial{ canForward = false; showBlock = true; canPlace = true; - targetBlock = ProductionBlocks.conduit; + targetBlock = DistributionBlocks.conduit; blockPlaceX = 5; blockPlaceY = -2; blockRotation = 2; @@ -470,7 +468,7 @@ public class Tutorial{ canForward = false; showBlock = true; canPlace = true; - targetBlock = ProductionBlocks.conduit; + targetBlock = DistributionBlocks.conduit; blockPlaceX = 4; blockPlaceY = -2; blockRotation = 1; @@ -487,7 +485,7 @@ public class Tutorial{ canForward = false; showBlock = true; canPlace = true; - targetBlock = ProductionBlocks.conduit; + targetBlock = DistributionBlocks.conduit; blockPlaceX = 4; blockPlaceY = -1; blockRotation = 1; @@ -530,14 +528,14 @@ public class Tutorial{ } for(int i = 0; i < 3; i ++){ - World.tile(World.core.x + 4 - 1 - i, World.core.y).setBlock(ProductionBlocks.conveyor, 2); + World.tile(World.core.x + 4 - 1 - i, World.core.y).setBlock(DistributionBlocks.conveyor, 2); } - World.tile(World.core.x + 2, World.core.y + 1).setBlock(ProductionBlocks.conveyor, 0); - World.tile(World.core.x + 3, World.core.y + 1).setBlock(ProductionBlocks.conveyor, 0); - World.tile(World.core.x + 4, World.core.y + 1).setBlock(ProductionBlocks.conveyor, 3); - World.tile(World.core.x + 5, World.core.y + 1).setBlock(ProductionBlocks.conveyor, 2); - World.tile(World.core.x + 6, World.core.y + 1).setBlock(ProductionBlocks.conveyor, 2); + World.tile(World.core.x + 2, World.core.y + 1).setBlock(DistributionBlocks.conveyor, 0); + World.tile(World.core.x + 3, World.core.y + 1).setBlock(DistributionBlocks.conveyor, 0); + World.tile(World.core.x + 4, World.core.y + 1).setBlock(DistributionBlocks.conveyor, 3); + World.tile(World.core.x + 5, World.core.y + 1).setBlock(DistributionBlocks.conveyor, 2); + World.tile(World.core.x + 6, World.core.y + 1).setBlock(DistributionBlocks.conveyor, 2); } }, diff --git a/core/src/io/anuke/mindustry/ai/Pathfind.java b/core/src/io/anuke/mindustry/ai/Pathfind.java index 27240ebe7d..9ce31fe13f 100644 --- a/core/src/io/anuke/mindustry/ai/Pathfind.java +++ b/core/src/io/anuke/mindustry/ai/Pathfind.java @@ -53,7 +53,8 @@ public class Pathfind{ } static public void updatePath(){ - if(paths.size == 0){ + if(paths.size == 0 || paths.size != World.spawnpoints.size){ + paths.clear(); pathSequences = new Tile[World.spawnpoints.size][0]; for(int i = 0; i < World.spawnpoints.size; i ++){ SmoothGraphPath path = new SmoothGraphPath(); diff --git a/core/src/io/anuke/mindustry/resource/Liquid.java b/core/src/io/anuke/mindustry/resource/Liquid.java index 6a42de36db..faf4a1ac65 100644 --- a/core/src/io/anuke/mindustry/resource/Liquid.java +++ b/core/src/io/anuke/mindustry/resource/Liquid.java @@ -5,7 +5,8 @@ import com.badlogic.gdx.graphics.Color; public enum Liquid{ water(Color.ROYAL), plasma(Color.CORAL), - lava(Color.valueOf("ed5334")); + lava(Color.valueOf("ed5334")), + oil(Color.valueOf("292929")); public final Color color; diff --git a/core/src/io/anuke/mindustry/resource/Recipe.java b/core/src/io/anuke/mindustry/resource/Recipe.java index cfc43ca4d5..e42538d32c 100644 --- a/core/src/io/anuke/mindustry/resource/Recipe.java +++ b/core/src/io/anuke/mindustry/resource/Recipe.java @@ -5,22 +5,20 @@ import static io.anuke.mindustry.resource.Section.*; import com.badlogic.gdx.utils.Array; import io.anuke.mindustry.world.Block; -import io.anuke.mindustry.world.blocks.Blocks; -import io.anuke.mindustry.world.blocks.ProductionBlocks; -import io.anuke.mindustry.world.blocks.WeaponBlocks; +import io.anuke.mindustry.world.blocks.*; public enum Recipe{ - stonewall(distribution, Blocks.stonewall, stack(Item.stone, 2)), - ironwall(distribution, Blocks.ironwall, stack(Item.iron, 2)), - steelwall(distribution, Blocks.steelwall, stack(Item.steel, 2)), - titaniumwall(distribution, Blocks.titaniumwall, stack(Item.titanium, 2)), - duriumwall(distribution, Blocks.diriumwall, stack(Item.dirium, 2)), - compositewall(distribution, Blocks.compositewall, stack(Item.dirium, 2), stack(Item.titanium, 2), stack(Item.steel, 2), stack(Item.iron, 2)), - titaniumshieldwall(distribution, Blocks.titaniumshieldwall, stack(Item.titanium, 2)), - conveyor(distribution, ProductionBlocks.conveyor, stack(Item.stone, 1)), - fastconveyor(distribution, ProductionBlocks.steelconveyor, stack(Item.steel, 1)), - router(distribution, ProductionBlocks.router, stack(Item.stone, 2)), - junction(distribution, ProductionBlocks.junction, stack(Item.iron, 2)), + stonewall(distribution, DefenseBlocks.stonewall, stack(Item.stone, 2)), + ironwall(distribution, DefenseBlocks.ironwall, stack(Item.iron, 2)), + steelwall(distribution, DefenseBlocks.steelwall, stack(Item.steel, 2)), + titaniumwall(distribution, DefenseBlocks.titaniumwall, stack(Item.titanium, 2)), + duriumwall(distribution, DefenseBlocks.diriumwall, stack(Item.dirium, 2)), + compositewall(distribution, DefenseBlocks.compositewall, stack(Item.dirium, 2), stack(Item.titanium, 2), stack(Item.steel, 2), stack(Item.iron, 2)), + titaniumshieldwall(distribution, DefenseBlocks.titaniumshieldwall, stack(Item.titanium, 2)), + conveyor(distribution, DistributionBlocks.conveyor, stack(Item.stone, 1)), + fastconveyor(distribution, DistributionBlocks.steelconveyor, stack(Item.steel, 1)), + router(distribution, DistributionBlocks.router, stack(Item.stone, 2)), + junction(distribution, DistributionBlocks.junction, stack(Item.iron, 2)), turret(defense, WeaponBlocks.turret, stack(Item.stone, 4)), dturret(defense, WeaponBlocks.doubleturret, stack(Item.stone, 7)), @@ -33,10 +31,10 @@ public enum Recipe{ teslaturret(defense, WeaponBlocks.teslaturret, stack(Item.steel, 10), stack(Item.titanium, 15), stack(Item.dirium, 15)), plasmaturret(defense, WeaponBlocks.plasmaturret, stack(Item.steel, 10), stack(Item.titanium, 10), stack(Item.dirium, 15)), - healturret(defense, WeaponBlocks.repairturret, stack(Item.iron, 30)), - megahealturret(defense, WeaponBlocks.megarepairturret, stack(Item.iron, 20), stack(Item.steel, 30)), + healturret(defense, DefenseBlocks.repairturret, stack(Item.iron, 30)), + megahealturret(defense, DefenseBlocks.megarepairturret, stack(Item.iron, 20), stack(Item.steel, 30)), - drill(production, ProductionBlocks.stonedrill, stack(Item.stone, 16)), + stonedrill(production, ProductionBlocks.stonedrill, stack(Item.stone, 12)), irondrill(production, ProductionBlocks.irondrill, stack(Item.stone, 25)), coaldrill(production, ProductionBlocks.coaldrill, stack(Item.stone, 25), stack(Item.iron, 40)), titaniumdrill(production, ProductionBlocks.titaniumdrill, stack(Item.iron, 40), stack(Item.steel, 40)), @@ -45,11 +43,12 @@ public enum Recipe{ coalpurifier(production, ProductionBlocks.coalpurifier, stack(Item.steel, 10), stack(Item.iron, 10)), titaniumpurifier(production, ProductionBlocks.titaniumpurifier, stack(Item.steel, 30), stack(Item.iron, 30)), omnidrill(production, ProductionBlocks.omnidrill, stack(Item.titanium, 10), stack(Item.dirium, 10)), - coalgenerator(production, ProductionBlocks.coalgenerator, stack(Item.titanium, 10), stack(Item.dirium, 10)), - shieldgenerator(production, WeaponBlocks.shieldgenerator, stack(Item.titanium, 10), stack(Item.dirium, 10)), - conduit(distribution, ProductionBlocks.conduit, stack(Item.steel, 1)), - liquidrouter(distribution, ProductionBlocks.liquidrouter, stack(Item.steel, 2)), + coalgenerator(power, ProductionBlocks.coalgenerator, stack(Item.titanium, 10), stack(Item.dirium, 10)), + shieldgenerator(power, DefenseBlocks.shieldgenerator, stack(Item.titanium, 10), stack(Item.dirium, 10)), + + conduit(distribution, DistributionBlocks.conduit, stack(Item.steel, 1)), + liquidrouter(distribution, DistributionBlocks.liquidrouter, stack(Item.steel, 2)), pump(production, ProductionBlocks.pump, stack(Item.steel, 10)); public Block result; diff --git a/core/src/io/anuke/mindustry/resource/Section.java b/core/src/io/anuke/mindustry/resource/Section.java index b6c673bc36..06da625c1f 100644 --- a/core/src/io/anuke/mindustry/resource/Section.java +++ b/core/src/io/anuke/mindustry/resource/Section.java @@ -1,5 +1,5 @@ package io.anuke.mindustry.resource; public enum Section{ - defense, production, distribution; + defense, production, distribution, power; } diff --git a/core/src/io/anuke/mindustry/world/Generator.java b/core/src/io/anuke/mindustry/world/Generator.java index fcd29d407f..37d810dd23 100644 --- a/core/src/io/anuke/mindustry/world/Generator.java +++ b/core/src/io/anuke/mindustry/world/Generator.java @@ -23,7 +23,8 @@ public class Generator{ Hue.rgb(110, 80, 30), Blocks.dirt, Hue.rgb(160, 120, 70), Blocks.dirtblock, Hue.rgb(100, 100, 100), Blocks.stoneblock, - Color.valueOf("ed5334"), Blocks.lava + Color.valueOf("ed5334"), Blocks.lava, + Color.valueOf("292929"), Blocks.oil ); /**Returns world size.*/ diff --git a/core/src/io/anuke/mindustry/world/World.java b/core/src/io/anuke/mindustry/world/World.java index 649abfc252..fbc6d4188d 100644 --- a/core/src/io/anuke/mindustry/world/World.java +++ b/core/src/io/anuke/mindustry/world/World.java @@ -11,9 +11,7 @@ import com.badlogic.gdx.utils.Array; import io.anuke.mindustry.Vars; import io.anuke.mindustry.ai.Pathfind; import io.anuke.mindustry.entities.TileEntity; -import io.anuke.mindustry.world.blocks.Blocks; -import io.anuke.mindustry.world.blocks.ProductionBlocks; -import io.anuke.mindustry.world.blocks.WeaponBlocks; +import io.anuke.mindustry.world.blocks.*; import io.anuke.ucore.core.Graphics; import io.anuke.ucore.entities.Entities; import io.anuke.ucore.entities.Entity; @@ -166,28 +164,36 @@ public class World{ static void setDefaultBlocks(){ int x = core.x, y = core.y; - set(x, y-1, ProductionBlocks.conveyor, 1); - set(x, y-2, ProductionBlocks.conveyor, 1); - set(x, y-3, ProductionBlocks.conveyor, 1); - set(x, y-4, ProductionBlocks.stonedrill, 0); - //just in case - tiles[x][y-4].setFloor(Blocks.stone); + set(x, y-1, DistributionBlocks.conveyor, 1); + set(x, y-2, DistributionBlocks.conveyor, 1); + set(x, y-3, DistributionBlocks.conveyor, 1); - - tiles[x+2][y-2].setFloor(Blocks.stone); - set(x+2, y-2, ProductionBlocks.stonedrill, 0); - set(x+2, y-1, ProductionBlocks.conveyor, 1); - set(x+2, y, WeaponBlocks.turret, 0); - - tiles[x-2][y-2].setFloor(Blocks.stone); - set(x-2, y-2, ProductionBlocks.stonedrill, 0); - set(x-2, y-1, ProductionBlocks.conveyor, 1); - set(x-2, y, WeaponBlocks.turret, 0); + for(int i = 0; i < 2; i ++){ + int d = Mathf.sign(i-0.5f); + + set(x+2*d, y-2, ProductionBlocks.stonedrill, d); + set(x+2*d, y-1, DistributionBlocks.conveyor, 1); + set(x+2*d, y, DistributionBlocks.conveyor, 1); + set(x+2*d, y+1, WeaponBlocks.doubleturret, 0); + + set(x+1*d, y-3, DistributionBlocks.conveyor, 2*d); + set(x+2*d, y-3, DistributionBlocks.conveyor, 2*d); + set(x+2*d, y-4, DistributionBlocks.conveyor, 1); + set(x+2*d, y-5, DistributionBlocks.conveyor, 1); + //set(x+2*d, y-6, DistributionBlocks.conveyor, 1); + + //set(x+3*d, y-6, ProductionBlocks.stonedrill, 0); + set(x+3*d, y-5, ProductionBlocks.stonedrill, 0); + set(x+3*d, y-4, ProductionBlocks.stonedrill, 0); + set(x+3*d, y-3, ProductionBlocks.stonedrill, 0); + } } static void set(int x, int y, Block type, int rot){ - tiles[x][y].setBlock(type); - tiles[x][y].rotation = (byte)rot; + if(type == ProductionBlocks.stonedrill){ + tiles[x][y].setFloor(Blocks.stone); + } + tiles[x][y].setBlock(type, rot); } public static int getSeed(){ diff --git a/core/src/io/anuke/mindustry/world/blocks/Blocks.java b/core/src/io/anuke/mindustry/world/blocks/Blocks.java index 29837b81f4..ed87cfb4dc 100644 --- a/core/src/io/anuke/mindustry/world/blocks/Blocks.java +++ b/core/src/io/anuke/mindustry/world/blocks/Blocks.java @@ -1,13 +1,13 @@ package io.anuke.mindustry.world.blocks; +import io.anuke.mindustry.GameState; +import io.anuke.mindustry.GameState.State; import io.anuke.mindustry.resource.Item; import io.anuke.mindustry.resource.ItemStack; import io.anuke.mindustry.resource.Liquid; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.blocks.types.Floor; -import io.anuke.mindustry.world.blocks.types.Wall; -import io.anuke.mindustry.world.blocks.types.defense.ShieldedWallBlock; import io.anuke.ucore.core.Effects; import io.anuke.ucore.util.Mathf; @@ -20,7 +20,8 @@ public class Blocks{ //update floor blocks for effects, if needed public void draw(Tile tile){ - tile.floor().update(tile); + if(!GameState.is(State.paused)) + tile.floor().update(tile); } }, @@ -49,12 +50,27 @@ public class Blocks{ Effects.effect("lava", tile.worldx() + Mathf.range(5f), tile.worldy() + Mathf.range(5f)); } - if(Mathf.chance(0.004)){ + if(Mathf.chance(0.003)){ Effects.effect("lavabubble", tile.worldx() + Mathf.range(3f), tile.worldy() + Mathf.range(3f)); } } }, + oil = new Floor("oil"){ + { + vary = false; + solid = true; + liquidDrop = Liquid.oil; + } + + @Override + public void update(Tile tile){ + if(Mathf.chance(0.0025)){ + Effects.effect("oilbubble", tile.worldx() + Mathf.range(2f), tile.worldy() + Mathf.range(2f)); + } + } + }, + stone = new Floor("stone"){{ drops = new ItemStack(Item.stone, 1); }}, @@ -121,37 +137,5 @@ public class Blocks{ dirtblock = new Block("dirtblock"){{ solid = true; - }}, - - stonewall = new Wall("stonewall"){{ - health = 50; - formalName = "stone wall"; - }}, - - ironwall = new Wall("ironwall"){{ - health = 80; - formalName = "iron wall"; - }}, - - steelwall = new Wall("steelwall"){{ - health = 110; - formalName = "steel wall"; - }}, - - titaniumwall = new Wall("titaniumwall"){{ - health = 150; - formalName = "titanium wall"; - }}, - diriumwall = new Wall("duriumwall"){{ - health = 190; - formalName = "dirium wall"; - }}, - compositewall = new Wall("compositewall"){{ - health = 270; - formalName = "composite wall"; - }}, - titaniumshieldwall = new ShieldedWallBlock("titaniumshieldwall"){{ - health = 150; - formalName = "shielded wall"; }}; } diff --git a/core/src/io/anuke/mindustry/world/blocks/DefenseBlocks.java b/core/src/io/anuke/mindustry/world/blocks/DefenseBlocks.java new file mode 100644 index 0000000000..2d4e1a554f --- /dev/null +++ b/core/src/io/anuke/mindustry/world/blocks/DefenseBlocks.java @@ -0,0 +1,66 @@ +package io.anuke.mindustry.world.blocks; + +import io.anuke.mindustry.world.Block; +import io.anuke.mindustry.world.blocks.types.Wall; +import io.anuke.mindustry.world.blocks.types.defense.RepairTurret; +import io.anuke.mindustry.world.blocks.types.defense.ShieldBlock; +import io.anuke.mindustry.world.blocks.types.defense.ShieldedWallBlock; + +public class DefenseBlocks{ + + public static final Block + + stonewall = new Wall("stonewall"){{ + health = 50; + formalName = "stone wall"; + }}, + + ironwall = new Wall("ironwall"){{ + health = 80; + formalName = "iron wall"; + }}, + + steelwall = new Wall("steelwall"){{ + health = 110; + formalName = "steel wall"; + }}, + + titaniumwall = new Wall("titaniumwall"){{ + health = 150; + formalName = "titanium wall"; + }}, + diriumwall = new Wall("duriumwall"){{ + health = 190; + formalName = "dirium wall"; + }}, + compositewall = new Wall("compositewall"){{ + health = 270; + formalName = "composite wall"; + }}, + titaniumshieldwall = new ShieldedWallBlock("titaniumshieldwall"){{ + health = 150; + formalName = "shielded wall"; + }}, + + repairturret = new RepairTurret("repairturret"){ + { + formalName = "heal turret"; + range = 30; + reload = 40f; + health = 60; + } + }, + + megarepairturret = new RepairTurret("megarepairturret"){ + { + formalName = "heal turret II"; + range = 44; + reload = 20f; + health = 90; + } + }, + + shieldgenerator = new ShieldBlock("shieldgenerator"){ + //TODO + }; +} diff --git a/core/src/io/anuke/mindustry/world/blocks/DistributionBlocks.java b/core/src/io/anuke/mindustry/world/blocks/DistributionBlocks.java new file mode 100644 index 0000000000..c94b88ddb8 --- /dev/null +++ b/core/src/io/anuke/mindustry/world/blocks/DistributionBlocks.java @@ -0,0 +1,42 @@ +package io.anuke.mindustry.world.blocks; + +import io.anuke.mindustry.world.Block; +import io.anuke.mindustry.world.blocks.types.LiquidBlock; +import io.anuke.mindustry.world.blocks.types.distribution.*; + +public class DistributionBlocks{ + + public static final Block + + conduit = new LiquidBlock("conduit"){{ + + }}, + + liquidrouter = new LiquidRouter("liquidrouter"){{ + formalName = "liquid router"; + }}, + + conveyor = new Conveyor("conveyor"){{ + + }}, + + steelconveyor = new Conveyor("steelconveyor"){{ + health = 55; + speed = 0.04f; + formalName = "steel conveyor"; + }}, + + //TODO + poweredconveyor = new Conveyor("poweredconveyor"){{ + health = 90; + speed = 0.09f; + formalName = "powered conveyor"; + }}, + + router = new Router("router"){ + }, + + junction = new Junction("junction"){ + + }; +} diff --git a/core/src/io/anuke/mindustry/world/blocks/ProductionBlocks.java b/core/src/io/anuke/mindustry/world/blocks/ProductionBlocks.java index 4ce4551523..89397d847f 100644 --- a/core/src/io/anuke/mindustry/world/blocks/ProductionBlocks.java +++ b/core/src/io/anuke/mindustry/world/blocks/ProductionBlocks.java @@ -5,8 +5,6 @@ import io.anuke.mindustry.resource.Item; import io.anuke.mindustry.resource.Liquid; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Tile; -import io.anuke.mindustry.world.blocks.types.*; -import io.anuke.mindustry.world.blocks.types.distribution.*; import io.anuke.mindustry.world.blocks.types.production.*; import io.anuke.ucore.core.Effects; import io.anuke.ucore.core.Timers; @@ -37,65 +35,10 @@ public class ProductionBlocks{ } }, - conduit = new LiquidBlock("conduit"){{ - - }}, - pump = new Pump("pump"){{ }}, - liquidrouter = new LiquidRouter("liquidrouter"){{ - formalName = "liquid router"; - }}, - - conveyor = new Conveyor("conveyor"){{ - - }}, - - steelconveyor = new Conveyor("steelconveyor"){{ - health = 55; - speed = 0.04f; - formalName = "steel conveyor"; - }}, - - router = new Router("router"){ - }, - - junction = new Block("junction"){ - { - update = true; - solid = true; - } - - @Override - public void handleItem(Tile tile, Item item, Tile source){ - int dir = source.relativeTo(tile.x, tile.y); - dir = (dir+4)%4; - Tile to = tile.getNearby()[dir]; - - Timers.run(15, ()->{ - if(to == null || to.entity == null) return; - to.block().handleItem(to, item, tile); - }); - - } - - @Override - public boolean acceptItem(Item item, Tile dest, Tile source){ - int dir = source.relativeTo(dest.x, dest.y); - dir = (dir+4)%4; - Tile to = dest.getNearby()[dir]; - //uncomment the junction bit to disable giving items to other junctions - return to != null /*&& to.block() != junction*/ && to.block().acceptItem(item, to, dest); - } - - @Override - public String description(){ - return "Serves as a conveyor junction."; - } - }, - smelter = new Crafter("smelter"){ { health = 70; @@ -214,7 +157,6 @@ public class ProductionBlocks{ generateAmount = 4f; powerCapacity = 40f; } - }; - + } ; } diff --git a/core/src/io/anuke/mindustry/world/blocks/WeaponBlocks.java b/core/src/io/anuke/mindustry/world/blocks/WeaponBlocks.java index 767abf694f..bee5847c79 100644 --- a/core/src/io/anuke/mindustry/world/blocks/WeaponBlocks.java +++ b/core/src/io/anuke/mindustry/world/blocks/WeaponBlocks.java @@ -8,7 +8,8 @@ import io.anuke.mindustry.entities.effect.TeslaOrb; import io.anuke.mindustry.resource.Item; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Tile; -import io.anuke.mindustry.world.blocks.types.defense.*; +import io.anuke.mindustry.world.blocks.types.defense.LaserTurret; +import io.anuke.mindustry.world.blocks.types.defense.Turret; import io.anuke.ucore.core.Timers; import io.anuke.ucore.util.Angles; import io.anuke.ucore.util.Mathf; @@ -162,27 +163,5 @@ public class WeaponBlocks{ health = 180; ammoMultiplier = 40; } - }, - - repairturret = new RepairTurret("repairturret"){ - { - formalName = "heal turret"; - range = 30; - reload = 40f; - health = 60; - } - }, - - megarepairturret = new RepairTurret("megarepairturret"){ - { - formalName = "heal turret II"; - range = 50; - reload = 20f; - health = 90; - } - }, - - shieldgenerator = new ShieldBlock("shieldgenerator"){ - }; } diff --git a/core/src/io/anuke/mindustry/world/blocks/types/distribution/Junction.java b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Junction.java new file mode 100644 index 0000000000..5ac79878cc --- /dev/null +++ b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Junction.java @@ -0,0 +1,43 @@ +package io.anuke.mindustry.world.blocks.types.distribution; + +import io.anuke.mindustry.resource.Item; +import io.anuke.mindustry.world.Block; +import io.anuke.mindustry.world.Tile; +import io.anuke.ucore.core.Timers; + +public class Junction extends Block{ + + public Junction(String name) { + super(name); + update = true; + solid = true; + } + + @Override + public void handleItem(Tile tile, Item item, Tile source){ + int dir = source.relativeTo(tile.x, tile.y); + dir = (dir+4)%4; + Tile to = tile.getNearby()[dir]; + + Timers.run(15, ()->{ + if(to == null || to.entity == null) return; + to.block().handleItem(to, item, tile); + }); + + } + + @Override + public boolean acceptItem(Item item, Tile dest, Tile source){ + int dir = source.relativeTo(dest.x, dest.y); + dir = (dir+4)%4; + Tile to = dest.getNearby()[dir]; + //uncomment the junction bit to disable giving items to other junctions + return to != null /*&& to.block() != junction*/ && to.block().acceptItem(item, to, dest); + } + + @Override + public String description(){ + return "Serves as a conveyor junction."; + } + +} diff --git a/core/src/io/anuke/mindustry/world/blocks/types/distribution/PowerBooster.java b/core/src/io/anuke/mindustry/world/blocks/types/distribution/PowerBooster.java index 60bf9537c0..be394233c0 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/distribution/PowerBooster.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/distribution/PowerBooster.java @@ -1,5 +1,12 @@ package io.anuke.mindustry.world.blocks.types.distribution; -public class PowerBooster{ +import io.anuke.mindustry.world.blocks.types.PowerBlock; + +public class PowerBooster extends PowerBlock{ + + //TODO + public PowerBooster(String name) { + super(name); + } } 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 new file mode 100644 index 0000000000..7e10391c7e --- /dev/null +++ b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Sorter.java @@ -0,0 +1,41 @@ +package io.anuke.mindustry.world.blocks.types.distribution; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.resource.Item; +import io.anuke.mindustry.world.Tile; + +//TODO +public class Sorter extends Junction{ + + public Sorter(String name) { + super(name); + } + + public boolean acceptItem(Item item, Tile tile, Tile source){ + SorterEntity entity = tile.entity(); + return super.acceptItem(item, tile, source) && item == entity.sortItem; + } + + @Override + public TileEntity getEntity(){ + return new SorterEntity(); + } + + public static class SorterEntity extends TileEntity{ + public Item sortItem = Item.stone; + + @Override + public void write(DataOutputStream stream) throws IOException{ + stream.writeByte(sortItem.ordinal()); + } + + @Override + public void read(DataInputStream stream) throws IOException{ + sortItem = Item.values()[stream.readByte()]; + } + } +} diff --git a/core/src/io/anuke/mindustry/world/blocks/types/distribution/Teleporter.java b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Teleporter.java new file mode 100644 index 0000000000..563eeac9a1 --- /dev/null +++ b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Teleporter.java @@ -0,0 +1,36 @@ +package io.anuke.mindustry.world.blocks.types.distribution; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.world.Block; + +//TODO +public class Teleporter extends Block{ + public static final int colors = 4; + + public Teleporter(String name) { + super(name); + } + + @Override + public TileEntity getEntity(){ + return new TeleporterEntity(); + } + + public static class TeleporterEntity extends TileEntity{ + public byte color = 0; + + @Override + public void write(DataOutputStream stream) throws IOException{ + stream.writeByte(color); + } + + @Override + public void read(DataInputStream stream) throws IOException{ + color = stream.readByte(); + } + } +} diff --git a/core/src/io/anuke/mindustry/world/blocks/types/production/LiquidPowerGenerator.java b/core/src/io/anuke/mindustry/world/blocks/types/production/LiquidPowerGenerator.java index e827d1b71e..4141851dad 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/production/LiquidPowerGenerator.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/production/LiquidPowerGenerator.java @@ -1,5 +1,10 @@ package io.anuke.mindustry.world.blocks.types.production; +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.resource.Liquid; import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.blocks.types.LiquidBlock; @@ -15,7 +20,7 @@ public class LiquidPowerGenerator extends LiquidBlock{ @Override public void update(Tile tile){ - LiquidEntity entity = tile.entity(); + LiquidPowerEntity entity = tile.entity(); if(entity.liquidAmount >= generateAmount){ entity.liquidAmount -= generateAmount; @@ -27,4 +32,25 @@ public class LiquidPowerGenerator extends LiquidBlock{ public boolean acceptLiquid(Tile tile, Tile source, Liquid liquid, float amount){ return liquid == generateLiquid && super.acceptLiquid(tile, source, liquid, amount); } + + @Override + public TileEntity getEntity(){ + return new LiquidPowerEntity(); + } + + public static class LiquidPowerEntity extends LiquidEntity{ + public float power; + + @Override + public void write(DataOutputStream stream) throws IOException{ + super.write(stream); + stream.writeFloat(power); + } + + @Override + public void read(DataInputStream stream) throws IOException{ + super.read(stream); + power = stream.readFloat(); + } + } } diff --git a/desktop/mindustry-saves/0.mins b/desktop/mindustry-saves/0.mins index dc050ee814c221015975d38ed6d2ec0f5cbd44b8..f2880eda201e2f8407362c3db615180f34e13d56 100644 GIT binary patch literal 9190 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 literal 10994 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 LAOnMWA(#OG4ZBSI