From 9c0b8c7e54217120c836b53c97e75ddf26896010 Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 24 Oct 2017 14:11:58 -0400 Subject: [PATCH] Added uranium and oil refinery --- .../sprites/blocks/liquidjunction.png | Bin 0 -> 243 bytes .../assets-raw/sprites/blocks/oilrefinery.png | Bin 0 -> 241 bytes .../sprites/blocks/poweredconveyor.png | Bin 0 -> 191 bytes .../sprites/blocks/poweredconveyormove.png | Bin 0 -> 191 bytes core/assets-raw/sprites/blocks/uranium1.png | Bin 0 -> 272 bytes core/assets-raw/sprites/blocks/uranium2.png | Bin 0 -> 271 bytes core/assets-raw/sprites/blocks/uranium3.png | Bin 0 -> 258 bytes .../sprites/blocks/uraniumdrill.png | Bin 0 -> 235 bytes core/assets-raw/sprites/icon-iron.png | Bin 240 -> 238 bytes core/assets-raw/sprites/icon-steel.png | Bin 277 -> 276 bytes core/assets-raw/sprites/icon-uranium.png | Bin 0 -> 282 bytes core/assets-raw/sprites/ui/icon-crafting.png | Bin 0 -> 185 bytes core/assets-raw/sprites/ui/icon-defense.png | Bin 200 -> 177 bytes core/assets-raw/sprites/ui/icon-weapon.png | Bin 0 -> 200 bytes core/assets/shaders/shield.fragment | 5 +- core/assets/sprites/sprites.atlas | 475 ++++++++++-------- core/assets/sprites/sprites.png | Bin 39489 -> 40100 bytes .../src/io/anuke/mindustry/EffectCreator.java | 7 + core/src/io/anuke/mindustry/UI.java | 28 +- .../mindustry/entities/effect/Shield.java | 6 +- .../src/io/anuke/mindustry/resource/Item.java | 2 +- .../src/io/anuke/mindustry/resource/Mech.java | 16 + .../io/anuke/mindustry/resource/Recipe.java | 65 +-- .../io/anuke/mindustry/resource/Section.java | 2 +- .../io/anuke/mindustry/world/Generator.java | 4 + .../anuke/mindustry/world/blocks/Blocks.java | 4 + .../world/blocks/DistributionBlocks.java | 5 +- .../world/blocks/ProductionBlocks.java | 30 +- .../blocks/types/defense/ShieldBlock.java | 6 +- .../types/distribution/LiquidJunction.java | 45 ++ .../types/distribution/PowerBooster.java | 15 +- .../{Purifier.java => LiquidCrafter.java} | 17 +- .../world/blocks/types/production/Pump.java | 1 + 33 files changed, 475 insertions(+), 258 deletions(-) create mode 100644 core/assets-raw/sprites/blocks/liquidjunction.png create mode 100644 core/assets-raw/sprites/blocks/oilrefinery.png create mode 100644 core/assets-raw/sprites/blocks/poweredconveyor.png create mode 100644 core/assets-raw/sprites/blocks/poweredconveyormove.png create mode 100644 core/assets-raw/sprites/blocks/uranium1.png create mode 100644 core/assets-raw/sprites/blocks/uranium2.png create mode 100644 core/assets-raw/sprites/blocks/uranium3.png create mode 100644 core/assets-raw/sprites/blocks/uraniumdrill.png create mode 100644 core/assets-raw/sprites/icon-uranium.png create mode 100644 core/assets-raw/sprites/ui/icon-crafting.png create mode 100644 core/assets-raw/sprites/ui/icon-weapon.png create mode 100644 core/src/io/anuke/mindustry/resource/Mech.java create mode 100644 core/src/io/anuke/mindustry/world/blocks/types/distribution/LiquidJunction.java rename core/src/io/anuke/mindustry/world/blocks/types/production/{Purifier.java => LiquidCrafter.java} (81%) diff --git a/core/assets-raw/sprites/blocks/liquidjunction.png b/core/assets-raw/sprites/blocks/liquidjunction.png new file mode 100644 index 0000000000000000000000000000000000000000..0a0bfdcfbaa27fb7819fcb3554f3ccafb9f3948d GIT binary patch literal 243 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#S9GG!XV7ZFl&wkP>{XE z)7O>#A(w=JIJd*H-xfe2$r9Iy66gHf+|;}h2Ir#G#FEq$h4Rdj3adId#+b2U;e2*DNVg~(zRQ;RY4ll|9D;N j*pXSjKUh^zu!ezsq0#ZgTe~DWM4fa6(a^ literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/oilrefinery.png b/core/assets-raw/sprites/blocks/oilrefinery.png new file mode 100644 index 0000000000000000000000000000000000000000..acfe53f47f3e547022a057194fa2c0384382f986 GIT binary patch literal 241 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#S9GG!XV7ZFl&wkP>{XE z)7O>#A(w=Jw(Rjn^JzdK$r9Iy66gHf+|;}h2Ir#G#FEq$h4Rdj3u+1a}Xe(VNX%i!ti=d#Wzp$P!sMO6C$ literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/poweredconveyor.png b/core/assets-raw/sprites/blocks/poweredconveyor.png new file mode 100644 index 0000000000000000000000000000000000000000..bae08a3d202098f7226db6b781b3ef85ec74aa77 GIT binary patch literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#S9GG!XV7ZFl&wkP>{XE z)7O>#A(w=JkXi*_Fi4YRiEBiObAE1aYF-J0b5UwyNotBhd1gt5g1e`0KzJjcI8c$L zr;B5V#O35S(FMQl7k}kt1A?~y?xqqTFyUvU!prD{|prJP{Nr8c_naR!R b9t(r6vHT}*hRt7qhA?=#`njxgN@xNAC($%v literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/poweredconveyormove.png b/core/assets-raw/sprites/blocks/poweredconveyormove.png new file mode 100644 index 0000000000000000000000000000000000000000..60d400287398bf063b703a0e365e8f521bb84843 GIT binary patch literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#S9GG!XV7ZFl&wkP>{XE z)7O>#A(w=JkWzi}bU~nyWQl7;iF1B#Zfaf$gL6@8Vo7R>LV0FMhJw4NZ$Nk>pEyvF zrKgKyh{WaOH_-*Z?H7OLWdnk?|L&#|ATZ%)&%1Z;{Fdh=kV`^{S?5HXZw63Evcxr_#5q4VH#M(>!MP|ku_QG`p**uBL&4qCHz2%`PaLSI z%hSa%gyVX$kDp&y$DdUTSM6Q=vT?zJ2fx3+SBz0}baZ56Ym?r-zUqqRp8Egu8XFl8 zrEc4_=~rcYzw^_}GgsbMSk&WxG=9#%(_jAm1?stPA93#NfddZ$mmfHAfZ^itBMi(< zO-%yKK(kC*&GX`0HIj1f2_FQ?6^d@kQ|ovs&?>M%;OAGMUWOkt?b1`S5A6WDiow&> K&t;ucLK6VJ4QXWn literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/uranium2.png b/core/assets-raw/sprites/blocks/uranium2.png new file mode 100644 index 0000000000000000000000000000000000000000..20eb054ec3e83bf972b089dd80fc34febd98e284 GIT binary patch literal 271 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1SGw4HSYi^&H|6fVg?3oVGw3ym^DWND9B#o z>Fdh=kV`^{g)OE=s1hh7S>hT|;+&tGo0?a`;9QiNSdyBeP@Y+mq2TW68xY>eCk|B9 z>FMGa!f`#>$ImaVfzi?N;P?0Uop1Q?@bGX=j2BhfUv)*(!NvBKh=hd1jNYCeyO>1b z3xEGUyPMsuuyy-%iTU$>{d|0!U##OB`{|vM5)yI-HUc6dEmB|q{jKh>6cE0*zdnE7 zY5uLuOl2mv4L901{5e?kPI~+LL#~QBVjX{)pWbO|YT}<}d|)Xfo2^xzce-={&`}JY Lu6{1-oD!M<%cEMt literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/uranium3.png b/core/assets-raw/sprites/blocks/uranium3.png new file mode 100644 index 0000000000000000000000000000000000000000..dfa5ed2cc2e3dcdcbc682ddae45c89566df6c0bf GIT binary patch literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1SGw4HSYi^&H|6fVg?3oVGw3ym^DWND9B#o z>Fdh=kV`^{g)eCNEN`HYWQl7;iF1B#Zfaf$gL6@8Vo7R>LV0FMhJw4NZ$Nk>pEyua zji-xa2*-8TzKy(x97LSu)pv>w>S~2eY67%cJnQhJtn$!7W^tYd1ef0gNa|d?rWnXad+o1v>fk@AX zUX#A8XDWNc7=O*u$?(ZPiClRe&&OZxJ~+%Tu};7J$(%dSf$m`NboFyt=akR{0E;{XE z)7O>#A(w;@i^-JL&Od=dk|nMYCC>S|xv6<249-QVi6yBi3gww484B*6z5(HleBwYw zsh%#5ArhBc`!@0(P~c(F@8Er5!yucyfpzu8R5_{gn~kC#TEdGwPL}K6-(SCa>%5v1 z+poRY%Pio;FvIS7kGauOlVGK$RZI`ArRX$A99w+$qjJ8zYfJL}%G-wKD_&(kVR@4f a^_MlnO8)z%+W1PKg$$mqelF{r5}E+K3QXew literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/icon-iron.png b/core/assets-raw/sprites/icon-iron.png index d46c14a81646686ffdcddd7f28da6a1ae1456c46..f9072d1348fa7a97900ed0b07fa355f95ffc4a84 100644 GIT binary patch delta 145 zcmV;C0B-;A0qy~iKnV&M5&$1udw;!=Nhp12NklT0DAB2y>EL}WzH!8zj!X9lLr-7J3l-O)!t1(P z8$j>w?EB6*jsX1N`@Ta}rCXLo0FL9}zo~5iFtY$~cjkE}rG%;R00P;& za2}4(Ga)LGIAjF}Xo6V3sNcXJIrB1^5qAfm*6INBJPR+0yHjiR7-Kh8wL_tl@(EjO zy$xV6Gmhh6nkE2#@O|H|suGrE5rFeN`ETkQ07@wiU}mJ0h%ut75&+h9W!p9}GsY!x n{XE z)7O>#A(w;@qs*O5c{iYtWQl7;iF1B#Zfaf$gL6@8Vo7R>LV0FMhJw4NZ$Nk>pEyv_ z6i*k&5Q)p7=M?!4IS8~qtT&&Lw`#>o=SPK8WfsqqPWZ+UI%lCw%LHH1mD;;F*$)J4 z)ht@IZKj`5+Oydwjg^=j%(pVk`7T}(xmCnr*UG898BV+k`+ulzbu%mOyKWuu;OIUtiRpe?8 Zqi?RQ%uxaMf4aTa()7Bet#3xhBt!>l5uPrNArhBcCv4{#{;OXk;vd$@?2>|}pI=cV> literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/ui/icon-defense.png b/core/assets-raw/sprites/ui/icon-defense.png index 003074bc564c1c37b47a18927e19ef76e7c4953d..f807b78001cfe644669ab41de2a7132022b07f60 100644 GIT binary patch delta 89 zcmX@XxRG&!1230^0Hef>27W^Z28Mu%zRHdjAMZ0K^5}5r^8AgAe=7gWuCftndSUHx3vIVCg!0C}t$G5`Po delta 112 zcmV-$0FVE%0muQ6Kn(>H4=g8i zHUkTqLWbwlA{ej%CM+iWM`L3s#0zMo@ZZ631_lNOMyMDgG8-z#z=#~+_y7Rf1TLJO SuJyeD0000f4aTa()7Bet#3xhBt!>lYKyKdZPPUP|7S@FQ0&y1OSmQ&mF%SsX(7}a#t{ 0.1 || texture2D(u_texture, T + vec2(0, -step) * v).a > 0.1 || diff --git a/core/assets/sprites/sprites.atlas b/core/assets/sprites/sprites.atlas index 54cf98a71d..7061a50c1b 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: 393, 372 + xy: 397, 348 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/coaldrill rotate: false - xy: 471, 443 + xy: 397, 338 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/coalgenerator rotate: false - xy: 481, 443 + xy: 397, 328 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/coalpurifier rotate: false - xy: 469, 433 + xy: 397, 318 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/compositewall rotate: false - xy: 469, 423 + xy: 397, 308 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conduit rotate: false - xy: 479, 433 + xy: 397, 298 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conduitbottom rotate: false - xy: 469, 413 + xy: 397, 288 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conduitliquid rotate: false - xy: 479, 423 + xy: 471, 443 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conduittop rotate: false - xy: 479, 413 + xy: 481, 443 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conveyor rotate: false - xy: 389, 276 + xy: 469, 433 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conveyormove rotate: false - xy: 389, 266 + xy: 469, 423 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/core rotate: false - xy: 389, 256 + xy: 479, 433 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/cross rotate: false - xy: 389, 246 + xy: 469, 413 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/crucible rotate: false - xy: 389, 236 + xy: 479, 423 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/deepwater rotate: false - xy: 117, 4 + xy: 479, 413 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/dirt1 rotate: false - xy: 230, 62 + xy: 389, 276 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/dirt2 rotate: false - xy: 230, 52 + xy: 389, 266 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/dirt3 rotate: false - xy: 230, 42 + xy: 389, 256 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/dirtblock rotate: false - xy: 228, 32 + xy: 389, 246 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -188,14 +188,14 @@ blocks/doubleturret index: -1 blocks/drill rotate: false - xy: 409, 402 + xy: 389, 236 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/duriumwall rotate: false - xy: 405, 392 + xy: 399, 278 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -209,35 +209,35 @@ blocks/flameturret index: -1 blocks/grass1 rotate: false - xy: 403, 372 + xy: 399, 258 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/grass2 rotate: false - xy: 397, 362 + xy: 399, 248 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/grass3 rotate: false - xy: 397, 352 + xy: 399, 238 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/grassblock rotate: false - xy: 397, 342 + xy: 117, 4 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/grassblock2 rotate: false - xy: 397, 332 + xy: 230, 62 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -251,56 +251,56 @@ blocks/grassedge index: -1 blocks/iron1 rotate: false - xy: 407, 342 + xy: 371, 224 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/iron2 rotate: false - xy: 407, 332 + xy: 371, 214 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/iron3 rotate: false - xy: 407, 322 + xy: 381, 226 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/irondrill rotate: false - xy: 407, 312 + xy: 381, 216 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/ironwall rotate: false - xy: 407, 302 + xy: 371, 204 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/junction rotate: false - xy: 407, 292 + xy: 381, 206 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/laserturret rotate: false - xy: 385, 310 + xy: 385, 286 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/lava rotate: false - xy: 413, 372 + xy: 391, 226 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -312,51 +312,58 @@ blocks/lavaedge orig: 12, 12 offset: 0, 0 index: -1 +blocks/liquidjunction + rotate: false + xy: 391, 216 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 blocks/liquidrouter rotate: false - xy: 417, 362 + xy: 391, 206 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/machineturret rotate: false - xy: 385, 298 + xy: 128, 26 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/megarepairturret rotate: false - xy: 385, 286 + xy: 140, 26 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/mortarturret rotate: false - xy: 128, 26 + xy: 152, 26 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/mossblock rotate: false - xy: 417, 342 + xy: 401, 218 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/mossstone rotate: false - xy: 417, 342 + xy: 401, 218 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/oil rotate: false - xy: 417, 322 + xy: 491, 443 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -368,135 +375,156 @@ blocks/oiledge orig: 12, 12 offset: 0, 0 index: -1 -blocks/omnidrill - rotate: false - xy: 417, 312 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -blocks/plasmaturret - rotate: false - 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/repairturret - rotate: false - 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/rock2 - rotate: false - xy: 381, 226 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -blocks/rock2shadow - rotate: false - xy: 381, 216 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -blocks/rockshadow - rotate: false - xy: 371, 204 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -blocks/router - rotate: false - xy: 381, 206 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -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 +blocks/oilrefinery rotate: false xy: 489, 433 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 -blocks/steelconveyormove +blocks/omnidrill rotate: false xy: 489, 423 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 +blocks/plasmaturret + rotate: false + xy: 164, 26 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 +blocks/poweredconveyor + rotate: false + xy: 495, 453 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +blocks/poweredconveyormove + rotate: false + xy: 122, 16 + size: 8, 8 + orig: 8, 8 + 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: 176, 26 + 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: 188, 26 + 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, 394 + 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: 393, 382 + 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: 489, 413 + xy: 187, 6 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -510,49 +538,49 @@ blocks/stone index: -1 blocks/stone1 rotate: false - xy: 495, 453 + xy: 197, 6 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stone2 rotate: false - xy: 122, 16 + xy: 415, 392 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stone3 rotate: false - xy: 132, 16 + xy: 415, 382 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stoneblock rotate: false - xy: 142, 16 + xy: 415, 372 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stoneblock2 rotate: false - xy: 152, 16 + xy: 409, 362 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stoneblock3 rotate: false - xy: 162, 16 + xy: 419, 362 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stonedrill rotate: false - xy: 172, 16 + xy: 501, 443 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -566,70 +594,98 @@ blocks/stoneedge index: -1 blocks/stonewall rotate: false - xy: 182, 16 + xy: 499, 433 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titanium1 rotate: false - xy: 127, 6 + xy: 499, 423 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titanium2 rotate: false - xy: 137, 6 + xy: 499, 413 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titanium3 rotate: false - xy: 147, 6 + xy: 409, 352 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titaniumdrill rotate: false - xy: 157, 6 + xy: 419, 352 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titaniumpurifier rotate: false - xy: 167, 6 + xy: 407, 342 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titaniumshieldwall rotate: false - xy: 177, 6 + xy: 407, 332 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titaniumwall rotate: false - xy: 192, 16 + xy: 417, 342 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/turret rotate: false - xy: 393, 394 + xy: 393, 370 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 +blocks/uranium1 + rotate: false + xy: 417, 332 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +blocks/uranium2 + rotate: false + xy: 407, 312 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +blocks/uranium3 + rotate: false + xy: 417, 322 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +blocks/uraniumdrill + rotate: false + xy: 407, 302 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 blocks/water rotate: false - xy: 197, 6 + xy: 417, 312 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -643,7 +699,7 @@ blocks/wateredge index: -1 blocks/waveturret rotate: false - xy: 393, 382 + xy: 397, 358 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -825,42 +881,49 @@ enemies/tankenemy-t3 index: -1 icon-coal rotate: false - xy: 397, 322 + xy: 230, 52 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-dirium rotate: false - xy: 397, 312 + xy: 230, 42 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-iron rotate: false - xy: 397, 302 + xy: 228, 32 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-steel rotate: false - xy: 397, 292 + xy: 409, 402 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-stone rotate: false - xy: 407, 362 + xy: 405, 392 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-titanium rotate: false - xy: 407, 352 + xy: 405, 382 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +icon-uranium + rotate: false + xy: 405, 372 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -881,7 +944,7 @@ laserend index: -1 player rotate: false - xy: 417, 302 + xy: 489, 413 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1012,62 +1075,69 @@ ui/icon-close-over orig: 40, 40 offset: 0, 0 index: -1 -ui/icon-cursor +ui/icon-crafting rotate: false xy: 483, 453 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 -ui/icon-defense +ui/icon-cursor rotate: false xy: 457, 423 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 -ui/icon-distribution +ui/icon-defense rotate: false xy: 457, 411 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 -ui/icon-menu +ui/icon-distribution rotate: false xy: 105, 2 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 -ui/icon-pause +ui/icon-menu rotate: false xy: 204, 34 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 -ui/icon-play +ui/icon-pause rotate: false xy: 216, 34 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 -ui/icon-power +ui/icon-play rotate: false xy: 385, 358 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 -ui/icon-production +ui/icon-power rotate: false xy: 385, 346 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 +ui/icon-production + rotate: false + xy: 385, 334 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 ui/icon-rotate rotate: false xy: 425, 408 @@ -1084,14 +1154,21 @@ ui/icon-rotate-arrow index: -1 ui/icon-settings rotate: false - xy: 385, 334 + xy: 385, 322 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-touch rotate: false - xy: 385, 322 + xy: 385, 310 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 +ui/icon-weapon + rotate: false + xy: 385, 298 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -1154,21 +1231,21 @@ ui/scroll-knob-vertical index: -1 ui/selection rotate: false - xy: 117, 1 + xy: 422, 409 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 ui/separator rotate: false - xy: 120, 1 + xy: 117, 1 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 ui/slider rotate: false - xy: 228, 154 + xy: 419, 402 size: 1, 8 orig: 1, 8 offset: 0, 0 @@ -1241,35 +1318,35 @@ weapons/blaster index: -1 weapons/flamer rotate: false - xy: 405, 382 + xy: 399, 268 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/mortar rotate: false - xy: 417, 352 + xy: 401, 228 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/multigun rotate: false - xy: 417, 332 + xy: 401, 208 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/railgun rotate: false - xy: 371, 224 + xy: 142, 16 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/triblaster rotate: false - xy: 187, 6 + xy: 407, 322 size: 8, 8 orig: 8, 8 offset: 0, 0 diff --git a/core/assets/sprites/sprites.png b/core/assets/sprites/sprites.png index 5a6f224dd3ae8654e81841d43eb62bdc3bb4f78d..c6d82ad24170ee1886dd510b047d24e728cd2388 100644 GIT binary patch literal 40100 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 P=s2+Nka2;bYxMsB&%&Gr literal 39489 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 diff --git a/core/src/io/anuke/mindustry/EffectCreator.java b/core/src/io/anuke/mindustry/EffectCreator.java index e8c578863f..1a309736ba 100644 --- a/core/src/io/anuke/mindustry/EffectCreator.java +++ b/core/src/io/anuke/mindustry/EffectCreator.java @@ -85,6 +85,13 @@ public class EffectCreator{ Draw.reset(); }); + Effects.create("purifyoil", 10, e -> { + Draw.color(Hue.mix(Color.BLACK, Color.GRAY, e.ifract())); + Draw.thickness(2f); + Draw.spikes(e.x, e.y, e.ifract() * 4f, 2, 6); + Draw.reset(); + }); + Effects.create("generate", 11, e -> { Draw.color(Hue.mix(Color.ORANGE, Color.YELLOW, e.ifract())); Draw.thickness(1f); diff --git a/core/src/io/anuke/mindustry/UI.java b/core/src/io/anuke/mindustry/UI.java index ae407c1c8c..aeb2455ee8 100644 --- a/core/src/io/anuke/mindustry/UI.java +++ b/core/src/io/anuke/mindustry/UI.java @@ -40,6 +40,8 @@ public class UI extends SceneModule{ VisibilityProvider play = () -> !GameState.is(State.menu); VisibilityProvider nplay = () -> GameState.is(State.menu); + private Array tempItems = new Array<>(); + public UI() { Dialog.setShowAction(()-> sequence(Actions.moveToAligned(Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), Align.center), parallel(Actions.moveToAligned(Gdx.graphics.getWidth()/2, @@ -237,12 +239,16 @@ public class UI extends SceneModule{ } }); button.setName("sectionbutton" + sec.name()); - add(button).fill().height(54).padRight(-0.1f).padTop(-10).units(Unit.dp); - button.getImageCell().size(40).padBottom(4).units(Unit.dp); + add(button).growX().height(54).padTop(sec.ordinal() <= 2 ? -10 : -5).units(Unit.dp); + button.getImageCell().size(40).padBottom(4).padTop(2).units(Unit.dp); group.add(button); + if(sec.ordinal() % 3 == 2 && sec.ordinal() > 0){ + row(); + } + table.pad(4); - table.top(); + table.top().left(); int i = 0; @@ -277,12 +283,6 @@ public class UI extends SceneModule{ i++; } - //additional padding - for(int j = 0; j < maxcol - (int)((float)recipes.size/rows+2); j ++){ - table.row(); - table.add().size(size); - } - table.setVisible(()-> button.isChecked()); stack.add(table); @@ -290,7 +290,7 @@ public class UI extends SceneModule{ row(); - add(stack).colspan(3); + add(stack).colspan(Section.values().length); get().pad(10f); get().padLeft(0f); @@ -716,8 +716,14 @@ public class UI extends SceneModule{ public void updateItems(){ itemtable.clear(); itemtable.left(); + + tempItems.clear(); + for(Item item : control.getItems().keys()){ + tempItems.add(item); + } + tempItems.sort(); - for(Item stack : control.getItems().keys()){ + for(Item stack : tempItems){ Image image = new Image(Draw.region("icon-" + stack.name())); Label label = new Label("" + Mindustry.formatter.format(control.getAmount(stack))); label.setFontScale(fontscale*1.5f); diff --git a/core/src/io/anuke/mindustry/entities/effect/Shield.java b/core/src/io/anuke/mindustry/entities/effect/Shield.java index 7c696fa189..86a00b4cfd 100644 --- a/core/src/io/anuke/mindustry/entities/effect/Shield.java +++ b/core/src/io/anuke/mindustry/entities/effect/Shield.java @@ -6,9 +6,11 @@ import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.blocks.types.defense.ShieldBlock; import io.anuke.ucore.core.Draw; import io.anuke.ucore.core.Graphics; +import io.anuke.ucore.core.Timers; import io.anuke.ucore.entities.BulletEntity; import io.anuke.ucore.entities.Entities; import io.anuke.ucore.entities.Entity; +import io.anuke.ucore.util.Mathf; public class Shield extends Entity{ public boolean active; @@ -55,10 +57,12 @@ public class Shield extends Entity{ ShieldBlock block = (ShieldBlock)tile.block(); + float rad = block.shieldRadius*2 + Mathf.sin(Timers.time(), 25f, 2f); + Graphics.surface("shield", false); Draw.color(Color.ROYAL); Draw.thick(2f); - Draw.rect("circle2", x, y, block.shieldRadius*2, block.shieldRadius*2); + Draw.rect("circle2", x, y, rad, rad); Draw.reset(); Graphics.surface(); } diff --git a/core/src/io/anuke/mindustry/resource/Item.java b/core/src/io/anuke/mindustry/resource/Item.java index 9097f6a7c3..63ca663516 100644 --- a/core/src/io/anuke/mindustry/resource/Item.java +++ b/core/src/io/anuke/mindustry/resource/Item.java @@ -1,5 +1,5 @@ package io.anuke.mindustry.resource; public enum Item{ - stone, iron, coal, steel, titanium, dirium; + stone, iron, coal, steel, titanium, dirium, uranium; } diff --git a/core/src/io/anuke/mindustry/resource/Mech.java b/core/src/io/anuke/mindustry/resource/Mech.java new file mode 100644 index 0000000000..944bf8d5d4 --- /dev/null +++ b/core/src/io/anuke/mindustry/resource/Mech.java @@ -0,0 +1,16 @@ +package io.anuke.mindustry.resource; + +public enum Mech{ + normal("default"), + scout("scout"){{ + + }}; + public final String name; + public float speedBoost = 1f, damageBoost = 1f; + public int regenRate = 10; + public int health = 20; + + private Mech(String name){ + this.name = name; + } +} diff --git a/core/src/io/anuke/mindustry/resource/Recipe.java b/core/src/io/anuke/mindustry/resource/Recipe.java index e42538d32c..91f465773b 100644 --- a/core/src/io/anuke/mindustry/resource/Recipe.java +++ b/core/src/io/anuke/mindustry/resource/Recipe.java @@ -8,47 +8,52 @@ import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.blocks.*; public enum Recipe{ - 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)), - machineturret(defense, WeaponBlocks.machineturret, stack(Item.iron, 8), stack(Item.stone, 10)), - shotgunturret(defense, WeaponBlocks.shotgunturret, stack(Item.iron, 10), stack(Item.stone, 10)), - flameturret(defense, WeaponBlocks.flameturret, stack(Item.iron, 12), stack(Item.steel, 9)), - sniperturret(defense, WeaponBlocks.sniperturret, stack(Item.iron, 15), stack(Item.steel, 10)), - laserturret(defense, WeaponBlocks.laserturret, stack(Item.steel, 10), stack(Item.titanium, 10)), - mortarturret(defense, WeaponBlocks.mortarturret, stack(Item.steel, 20), stack(Item.titanium, 15)), - 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)), - + stonewall(defense, DefenseBlocks.stonewall, stack(Item.stone, 2)), + ironwall(defense, DefenseBlocks.ironwall, stack(Item.iron, 2)), + steelwall(defense, DefenseBlocks.steelwall, stack(Item.steel, 2)), + titaniumwall(defense, DefenseBlocks.titaniumwall, stack(Item.titanium, 2)), + duriumwall(defense, DefenseBlocks.diriumwall, stack(Item.dirium, 2)), + compositewall(defense, DefenseBlocks.compositewall, stack(Item.dirium, 2), stack(Item.titanium, 2), stack(Item.steel, 2), stack(Item.iron, 2)), healturret(defense, DefenseBlocks.repairturret, stack(Item.iron, 30)), megahealturret(defense, DefenseBlocks.megarepairturret, stack(Item.iron, 20), stack(Item.steel, 30)), + titaniumshieldwall(defense, DefenseBlocks.titaniumshieldwall, stack(Item.titanium, 2)), + + conveyor(distribution, DistributionBlocks.conveyor, stack(Item.stone, 1)), + steelconveyor(distribution, DistributionBlocks.steelconveyor, stack(Item.steel, 1)), + poweredconveyor(distribution, DistributionBlocks.poweredconveyor, stack(Item.dirium, 1)), + router(distribution, DistributionBlocks.router, stack(Item.stone, 2)), + junction(distribution, DistributionBlocks.junction, stack(Item.iron, 2)), + conduit(distribution, DistributionBlocks.conduit, stack(Item.steel, 1)), + liquidrouter(distribution, DistributionBlocks.liquidrouter, stack(Item.steel, 2)), + liquidjunction(distribution, DistributionBlocks.liquidjunction, stack(Item.steel, 2)), + + turret(weapon, WeaponBlocks.turret, stack(Item.stone, 4)), + dturret(weapon, WeaponBlocks.doubleturret, stack(Item.stone, 7)), + machineturret(weapon, WeaponBlocks.machineturret, stack(Item.iron, 8), stack(Item.stone, 10)), + shotgunturret(weapon, WeaponBlocks.shotgunturret, stack(Item.iron, 10), stack(Item.stone, 10)), + flameturret(weapon, WeaponBlocks.flameturret, stack(Item.iron, 12), stack(Item.steel, 9)), + sniperturret(weapon, WeaponBlocks.sniperturret, stack(Item.iron, 15), stack(Item.steel, 10)), + laserturret(weapon, WeaponBlocks.laserturret, stack(Item.steel, 10), stack(Item.titanium, 10)), + mortarturret(weapon, WeaponBlocks.mortarturret, stack(Item.steel, 20), stack(Item.titanium, 15)), + teslaturret(weapon, WeaponBlocks.teslaturret, stack(Item.steel, 10), stack(Item.titanium, 15), stack(Item.dirium, 15)), + plasmaturret(weapon, WeaponBlocks.plasmaturret, stack(Item.steel, 10), stack(Item.titanium, 10), stack(Item.dirium, 15)), + + smelter(crafting, ProductionBlocks.smelter, stack(Item.stone, 40), stack(Item.iron, 40)), + crucible(crafting, ProductionBlocks.crucible, stack(Item.titanium, 40), stack(Item.steel, 40)), + coalpurifier(crafting, ProductionBlocks.coalpurifier, stack(Item.steel, 10), stack(Item.iron, 10)), + titaniumpurifier(crafting, ProductionBlocks.titaniumpurifier, stack(Item.steel, 30), stack(Item.iron, 30)), + oilrefinery(crafting, ProductionBlocks.oilrefinery, stack(Item.steel, 30), stack(Item.iron, 30)), 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)), - smelter(production, ProductionBlocks.smelter, stack(Item.stone, 40), stack(Item.iron, 40)), - crucible(production, ProductionBlocks.crucible, stack(Item.titanium, 40), stack(Item.steel, 40)), - 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)), + uraniumdrill(production, ProductionBlocks.uraniumdrill, stack(Item.titanium, 20), stack(Item.steel, 40)), + omnidrill(production, ProductionBlocks.omnidrill, stack(Item.titanium, 20), stack(Item.dirium, 20)), 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 06da625c1f..feb383eca8 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, power; + weapon, production, distribution, power, defense, crafting; } diff --git a/core/src/io/anuke/mindustry/world/Generator.java b/core/src/io/anuke/mindustry/world/Generator.java index 37d810dd23..5c6e99b7ce 100644 --- a/core/src/io/anuke/mindustry/world/Generator.java +++ b/core/src/io/anuke/mindustry/world/Generator.java @@ -69,6 +69,10 @@ public class Generator{ if(Noise.nnoise(x + 9999, y + 9999, 8, 1) > 0.253){ floor = Blocks.titanium; } + + if(Noise.nnoise(x + 99999, y + 99999, 6, 1) > 0.254){ + floor = Blocks.uranium; + } } if(block == Blocks.grassblock){ diff --git a/core/src/io/anuke/mindustry/world/blocks/Blocks.java b/core/src/io/anuke/mindustry/world/blocks/Blocks.java index ed87cfb4dc..a2b0d2679f 100644 --- a/core/src/io/anuke/mindustry/world/blocks/Blocks.java +++ b/core/src/io/anuke/mindustry/world/blocks/Blocks.java @@ -87,6 +87,10 @@ public class Blocks{ drops = new ItemStack(Item.titanium, 1); }}, + uranium = new Floor("uranium"){{ + drops = new ItemStack(Item.uranium, 1); + }}, + dirt = new Floor("dirt"), grass = new Floor("grass"), diff --git a/core/src/io/anuke/mindustry/world/blocks/DistributionBlocks.java b/core/src/io/anuke/mindustry/world/blocks/DistributionBlocks.java index c94b88ddb8..90eb488389 100644 --- a/core/src/io/anuke/mindustry/world/blocks/DistributionBlocks.java +++ b/core/src/io/anuke/mindustry/world/blocks/DistributionBlocks.java @@ -30,7 +30,7 @@ public class DistributionBlocks{ poweredconveyor = new Conveyor("poweredconveyor"){{ health = 90; speed = 0.09f; - formalName = "powered conveyor"; + formalName = "pulse conveyor"; }}, router = new Router("router"){ @@ -38,5 +38,8 @@ public class DistributionBlocks{ junction = new Junction("junction"){ + }, + liquidjunction = new LiquidJunction("liquidjunction"){ + }; } diff --git a/core/src/io/anuke/mindustry/world/blocks/ProductionBlocks.java b/core/src/io/anuke/mindustry/world/blocks/ProductionBlocks.java index 89397d847f..cce0474318 100644 --- a/core/src/io/anuke/mindustry/world/blocks/ProductionBlocks.java +++ b/core/src/io/anuke/mindustry/world/blocks/ProductionBlocks.java @@ -65,7 +65,7 @@ public class ProductionBlocks{ } }, - coalpurifier = new Purifier("coalpurifier"){ + coalpurifier = new LiquidCrafter("coalpurifier"){ { formalName = "coal extractor"; input = Item.stone; @@ -83,7 +83,7 @@ public class ProductionBlocks{ } }, - titaniumpurifier = new Purifier("titaniumpurifier"){ + titaniumpurifier = new LiquidCrafter("titaniumpurifier"){ { formalName = "titanium\nextractor"; input = Item.iron; @@ -102,6 +102,24 @@ public class ProductionBlocks{ } }, + oilrefinery = new LiquidCrafter("oilrefinery"){ + { + formalName = "oil refinery"; + inputLiquid = Liquid.oil; + liquidAmount = 45f; + liquidCapacity = 46f; + purifyTime = 70; + output = Item.coal; + health = 80; + craftEffect = "purifyoil"; + } + + @Override + public String description(){ + return "Takes in oil, outputs coal."; + } + }, + stonedrill = new Drill("stonedrill"){{ resource = Blocks.stone; result = Item.stone; @@ -120,6 +138,12 @@ public class ProductionBlocks{ formalName = "coal drill"; }}, + uraniumdrill = new Drill("uraniumdrill"){{ + resource = Blocks.uranium; + result = Item.uranium; + formalName = "uranium drill"; + }}, + titaniumdrill = new Drill("titaniumdrill"){{ resource = Blocks.titanium; result = Item.titanium; @@ -153,7 +177,7 @@ public class ProductionBlocks{ coalgenerator = new ItemPowerGenerator("coalgenerator"){ { //TODO - generateItem = Item.stone; + generateItem = Item.coal; generateAmount = 4f; powerCapacity = 40f; } diff --git a/core/src/io/anuke/mindustry/world/blocks/types/defense/ShieldBlock.java b/core/src/io/anuke/mindustry/world/blocks/types/defense/ShieldBlock.java index 9f94d6da44..f09bcc9817 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/defense/ShieldBlock.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/defense/ShieldBlock.java @@ -7,6 +7,8 @@ import io.anuke.mindustry.world.blocks.types.PowerBlock; import io.anuke.ucore.core.Timers; public class ShieldBlock extends PowerBlock{ + private static boolean debugShield = true; + public float shieldRadius = 40f; public float powerDrain = 0.01f; @@ -20,6 +22,8 @@ public class ShieldBlock extends PowerBlock{ if(entity.shield == null){ entity.shield = new Shield(tile); + if(debugShield) + entity.shield.add(); } if(entity.power > powerDrain * Timers.delta()){ @@ -29,7 +33,7 @@ public class ShieldBlock extends PowerBlock{ entity.power -= powerDrain * Timers.delta(); }else{ - if(entity.shield.active){ + if(entity.shield.active && !debugShield){ entity.shield.remove(); } } diff --git a/core/src/io/anuke/mindustry/world/blocks/types/distribution/LiquidJunction.java b/core/src/io/anuke/mindustry/world/blocks/types/distribution/LiquidJunction.java new file mode 100644 index 0000000000..d0a2ff6a39 --- /dev/null +++ b/core/src/io/anuke/mindustry/world/blocks/types/distribution/LiquidJunction.java @@ -0,0 +1,45 @@ +package io.anuke.mindustry.world.blocks.types.distribution; + +import io.anuke.mindustry.resource.Liquid; +import io.anuke.mindustry.world.Tile; +import io.anuke.mindustry.world.blocks.types.LiquidBlock; +import io.anuke.ucore.core.Draw; + +public class LiquidJunction extends LiquidBlock{ + + public LiquidJunction(String name) { + super(name); + update = true; + solid = true; + rotate = false; + } + + @Override + public void draw(Tile tile){ + Draw.rect(name(), tile.worldx(), tile.worldy()); + } + + @Override + public void handleLiquid(Tile tile, Tile source, Liquid liquid, float amount){ + int dir = source.relativeTo(tile.x, tile.y); + dir = (dir+4)%4; + Tile to = tile.getNearby()[dir]; + + ((LiquidBlock)to.block()).handleLiquid(to, tile, liquid, amount); + + } + + @Override + public boolean acceptLiquid(Tile dest, Tile source, Liquid liquid, float amount){ + int dir = source.relativeTo(dest.x, dest.y); + dir = (dir+4)%4; + Tile to = dest.getNearby()[dir]; + return to != null && to.block() != this && to.block() instanceof LiquidBlock && + ((LiquidBlock)to.block()).acceptLiquid(to, dest, liquid, amount); + } + + @Override + public String description(){ + return "Serves as a liquid 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 be394233c0..6a75e487cf 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,12 +1,21 @@ package io.anuke.mindustry.world.blocks.types.distribution; -import io.anuke.mindustry.world.blocks.types.PowerBlock; +import io.anuke.mindustry.world.Tile; +import io.anuke.mindustry.world.blocks.types.production.Generator; -public class PowerBooster extends PowerBlock{ +public class PowerBooster extends Generator{ //TODO public PowerBooster(String name) { super(name); } - + + @Override + public float addPower(Tile tile, float amount){ + PowerEntity entity = tile.entity(); + + float canAccept = Math.min(powerCapacity - entity.power, amount); + entity.power += canAccept; + return canAccept; + } } diff --git a/core/src/io/anuke/mindustry/world/blocks/types/production/Purifier.java b/core/src/io/anuke/mindustry/world/blocks/types/production/LiquidCrafter.java similarity index 81% rename from core/src/io/anuke/mindustry/world/blocks/types/production/Purifier.java rename to core/src/io/anuke/mindustry/world/blocks/types/production/LiquidCrafter.java index a5359e8c22..6fcd3552a5 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/production/Purifier.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/production/LiquidCrafter.java @@ -12,7 +12,8 @@ import io.anuke.ucore.core.Draw; import io.anuke.ucore.core.Effects; import io.anuke.ucore.core.Timers; -public class Purifier extends LiquidBlock{ +public class LiquidCrafter extends LiquidBlock{ + /**Can be null.*/ public Item input = null; public int inputAmount = 5; public Liquid inputLiquid = null; @@ -20,8 +21,9 @@ public class Purifier extends LiquidBlock{ public Item output = null; public int itemCapacity = 90; public int purifyTime = 80; + public String craftEffect = "purify"; - public Purifier(String name) { + public LiquidCrafter(String name) { super(name); update = true; rotate = false; @@ -48,12 +50,13 @@ public class Purifier extends LiquidBlock{ LiquidEntity entity = tile.entity(); if(Timers.get(tile, "purify", purifyTime) && entity.liquidAmount >= liquidAmount && - entity.hasItem(input, inputAmount)){ + (input == null || entity.hasItem(input, inputAmount))){ - entity.removeItem(input, inputAmount); + if(input != null) + entity.removeItem(input, inputAmount); entity.liquidAmount -= liquidAmount; offloadNear(tile, output); - Effects.effect("purify", tile.worldx(), tile.worldy()); + Effects.effect(craftEffect, tile.worldx(), tile.worldy()); } if(Timers.get(tile.hashCode(), "dump", 30)){ @@ -63,6 +66,8 @@ public class Purifier extends LiquidBlock{ @Override public void drawPixelOverlay(Tile tile){ + if(input == null) return; + float fract = (float)tile.entity.items.get(input, 0) / itemCapacity; Vars.renderer.drawBar(Color.GREEN, tile.worldx(), tile.worldy() + 13, fract); @@ -76,7 +81,7 @@ public class Purifier extends LiquidBlock{ @Override public boolean acceptItem(Item item, Tile tile, Tile source){ TileEntity entity = tile.entity(); - return item == input && entity.items.get(item, 0) < itemCapacity; + return input != null && item == input && entity.items.get(item, 0) < itemCapacity; } } diff --git a/core/src/io/anuke/mindustry/world/blocks/types/production/Pump.java b/core/src/io/anuke/mindustry/world/blocks/types/production/Pump.java index 4281020c01..38ca649891 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/production/Pump.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/production/Pump.java @@ -13,6 +13,7 @@ public class Pump extends LiquidBlock{ public Pump(String name) { super(name); rotate = false; + solid = true; } @Override