From 41720e2e3f0c86fc42dc451468dcb51860330fc8 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 22 Oct 2017 21:58:05 -0400 Subject: [PATCH] Moved block types into subpackages --- core/assets-raw/sprites/blocks/lava.png | Bin 0 -> 156 bytes core/assets-raw/sprites/blocks/lavaedge.png | Bin 0 -> 241 bytes .../sprites/ui/button-gray-over.9.png | Bin 200 -> 0 bytes core/assets-raw/sprites/ui/button-gray.9.png | Bin 222 -> 0 bytes core/assets-raw/sprites/ui/slot.9.png | Bin 366 -> 0 bytes core/assets-raw/sprites/ui/window-gray.9.png | Bin 280 -> 0 bytes core/assets/maps/delta.png | Bin 2400 -> 2440 bytes core/assets/shaders/pattern.fragment | 60 +++ core/assets/sprites/sprites.atlas | 392 +++++++++--------- core/assets/sprites/sprites.png | Bin 39740 -> 39589 bytes .../src/io/anuke/mindustry/EffectCreator.java | 18 + core/src/io/anuke/mindustry/Mindustry.java | 6 +- core/src/io/anuke/mindustry/Renderer.java | 2 +- core/src/io/anuke/mindustry/Vars.java | 2 + .../mindustry/entities/effect/Shield.java | 2 +- .../io/anuke/mindustry/resource/Liquid.java | 3 +- core/src/io/anuke/mindustry/world/Block.java | 2 - .../io/anuke/mindustry/world/Generator.java | 3 +- .../anuke/mindustry/world/blocks/Blocks.java | 29 +- .../world/blocks/ProductionBlocks.java | 4 +- .../mindustry/world/blocks/WeaponBlocks.java | 2 +- .../types/{Conduit.java => LiquidBlock.java} | 30 +- .../world/blocks/types/PowerBlock.java | 2 +- .../types/{ => defense}/LaserTurret.java | 2 +- .../types/{ => defense}/RepairTurret.java | 2 +- .../types/{ => defense}/ShieldBlock.java | 3 +- .../{ => defense}/ShieldedWallBlock.java | 3 +- .../blocks/types/{ => defense}/Turret.java | 2 +- .../types/{ => distribution}/Conveyor.java | 2 +- .../{ => distribution}/LiquidRouter.java | 9 +- .../types/distribution/PowerBooster.java | 5 + .../types/{ => distribution}/Router.java | 2 +- .../types/{ => production}/Crafter.java | 2 +- .../blocks/types/{ => production}/Drill.java | 2 +- .../types/{ => production}/Generator.java | 4 +- .../{ => production}/ItemPowerGenerator.java | 2 +- .../production/LiquidPowerGenerator.java | 30 ++ .../blocks/types/{ => production}/Pump.java | 7 +- .../types/{ => production}/Purifier.java | 9 +- 39 files changed, 386 insertions(+), 257 deletions(-) create mode 100644 core/assets-raw/sprites/blocks/lava.png create mode 100644 core/assets-raw/sprites/blocks/lavaedge.png delete mode 100644 core/assets-raw/sprites/ui/button-gray-over.9.png delete mode 100644 core/assets-raw/sprites/ui/button-gray.9.png delete mode 100644 core/assets-raw/sprites/ui/slot.9.png delete mode 100644 core/assets-raw/sprites/ui/window-gray.9.png create mode 100644 core/assets/shaders/pattern.fragment rename core/src/io/anuke/mindustry/world/blocks/types/{Conduit.java => LiquidBlock.java} (80%) rename core/src/io/anuke/mindustry/world/blocks/types/{ => defense}/LaserTurret.java (97%) rename core/src/io/anuke/mindustry/world/blocks/types/{ => defense}/RepairTurret.java (97%) rename core/src/io/anuke/mindustry/world/blocks/types/{ => defense}/ShieldBlock.java (88%) rename core/src/io/anuke/mindustry/world/blocks/types/{ => defense}/ShieldedWallBlock.java (93%) rename core/src/io/anuke/mindustry/world/blocks/types/{ => defense}/Turret.java (99%) rename core/src/io/anuke/mindustry/world/blocks/types/{ => distribution}/Conveyor.java (98%) rename core/src/io/anuke/mindustry/world/blocks/types/{ => distribution}/LiquidRouter.java (83%) create mode 100644 core/src/io/anuke/mindustry/world/blocks/types/distribution/PowerBooster.java rename core/src/io/anuke/mindustry/world/blocks/types/{ => distribution}/Router.java (95%) rename core/src/io/anuke/mindustry/world/blocks/types/{ => production}/Crafter.java (94%) rename core/src/io/anuke/mindustry/world/blocks/types/{ => production}/Drill.java (95%) rename core/src/io/anuke/mindustry/world/blocks/types/{ => production}/Generator.java (89%) rename core/src/io/anuke/mindustry/world/blocks/types/{ => production}/ItemPowerGenerator.java (95%) create mode 100644 core/src/io/anuke/mindustry/world/blocks/types/production/LiquidPowerGenerator.java rename core/src/io/anuke/mindustry/world/blocks/types/{ => production}/Pump.java (85%) rename core/src/io/anuke/mindustry/world/blocks/types/{ => production}/Purifier.java (89%) diff --git a/core/assets-raw/sprites/blocks/lava.png b/core/assets-raw/sprites/blocks/lava.png new file mode 100644 index 0000000000000000000000000000000000000000..8ef9d3966b9d8eac39d5772e0e70055c98512366 GIT binary patch literal 156 zcmeAS@N?(olHy`uVBq!ia0y~yVBi2@4mJh`h9ms@x)~T4I14-?iy0WWg+Z8+Vb&Z8 z1_lQ95>H=O_J>^J3=F(4m^1e>Ffd4#xJHyX=jZ08=9Mrw7o{eaq^2m8XO?6rxO@5r zgg5euGcYiSdAc};NL)^?k^BK<8(-lLhPb>6FVDS4*W2?@x)$J%41t2pA<-s=O+_pW@hG%a^i8-Y(i^}++Yem k?BR1sAg-Ei9Unv53B|8ZJq#BxFfcH9y85}Sb4q9e0N~S1y#N3J literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/ui/button-gray-over.9.png b/core/assets-raw/sprites/ui/button-gray-over.9.png deleted file mode 100644 index 31a904acbace5062b1d800cde235d491ac057143..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 200 zcmeAS@N?(olHy`uVBq!ia0y~yV31;9V9?@VV_;xdYv7&Cz`($k|H*Y zfq{Xuz$3Dlfq`2Xgc%uT&5>YWU|=ut^mS!_$RfzZ%NJW+Jd=TeA=J~wF(l&f+v|pW z4F){UfwQ@v>sW4_nW*KIqH#aE?b*s{R#&Q~-AP+7w?!p1^h@Hd+wE;etf{-D85v_2 w2FMD4!3BNAVA%`PF5FpP^Og7M+j+uwcW?x4zj4`=fq{X+)78&qol`;+0D>Jq2LJ#7 diff --git a/core/assets-raw/sprites/ui/button-gray.9.png b/core/assets-raw/sprites/ui/button-gray.9.png deleted file mode 100644 index d47e70b84fff2d9f6aacc4597baa0b0ed8080e03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 222 zcmeAS@N?(olHy`uVBq!ia0y~yV31;9V9?@VV_;xdYv7&Cz`($k|H*Y zfq{Xuz$3Dlfq`2Xgc%uT&5>YWU|=ut^mS!_$RfzZr?Dh@>2d}JhHOt4$B>A_Z?7NZ zJYc}VdLjQLL*6T$yjN`Bz9^tzeUX*-*M$rXGgZx|?LOVO>{ZjI z+(m_@l7im8pg%$72d-Cr6yREkB-@=%;#Z0sG XxZ5(OI{so{U|{fc^>bP0l+XkK3(rlB diff --git a/core/assets-raw/sprites/ui/slot.9.png b/core/assets-raw/sprites/ui/slot.9.png deleted file mode 100644 index 66d175ec167648669623d642fc225988fbdeb1fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 366 zcmeAS@N?(olHy`uVBq!ia0y~yU~mFq4mJh`hQ}ccFBljY*pj^6T^PXNr}OT51_lPs z0*}aI1_o|n5N2eUHAjMhfq}im)7O>#A+r>tgyxFHN7pehFi4iTMwB?`=jNv7l`uFL zr6!i7rYMwWmSiZnd-?{1H}Z)yFfd&6ba4!+xb^n7BHtkc5w-{6Mtd!JZcZ%tY|Wa+ zexP8gW#5(rwQ@!Q7N+DRi=ch+TR;83wC{>Z>0gP@GPB>Be)6iiYhxup`)%>uU3ERD ze@=-0xPH^^`IppGl$0DAA|#Y@Z|^(XktnfAFZTLY$%k1D5!02F?CuGqMy7=p%~Df8 zbd`aTiG@Qz!Jz>+LjjxABk`b;zcZfIA6~uc)T$@5?EF|b1Wp?(J^E+<>%L-M%`ye0 T=7nEC!NuU|>gTe~DWM4foqTo| diff --git a/core/assets-raw/sprites/ui/window-gray.9.png b/core/assets-raw/sprites/ui/window-gray.9.png deleted file mode 100644 index 36c4fc6ca550d8c76fe047fbbd0999c95e9e26d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 280 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 IC#HlZ02X^?b^rhX diff --git a/core/assets/shaders/pattern.fragment b/core/assets/shaders/pattern.fragment new file mode 100644 index 0000000000..4a25d505b3 --- /dev/null +++ b/core/assets/shaders/pattern.fragment @@ -0,0 +1,60 @@ +#ifdef GL_ES +precision mediump float; +precision mediump int; +#endif + +uniform sampler2D u_texture; + +uniform vec4 u_color; +uniform vec2 u_texsize; +uniform float u_time; +uniform vec2 u_offset; + +varying vec4 v_color; +varying vec2 v_texCoord; + +void main() { + + vec2 T = v_texCoord.xy; + vec2 coords = (T * u_texsize) + u_offset; + + float si = 1.0 + sin(u_time / 20.0 /*+ (coords.x + coords.y) / 30.0*/) / 8.0; + + vec4 color = texture2D(u_texture, T) * vec4(si, si, si, 1.0); + + vec2 v = vec2(1.0/u_texsize.x, 1.0/u_texsize.y); + + bool any = false; + + float thickness = 1.0; + float step = 1.0; + + if(texture2D(u_texture, T).a < 0.1 && + (texture2D(u_texture, T + vec2(0, step) * v).a > 0.1 || texture2D(u_texture, T + vec2(0, -step) * v).a > 0.1 || + texture2D(u_texture, T + vec2(step, 0) * v).a > 0.1 || texture2D(u_texture, T + vec2(-step, 0) * v).a > 0.1)) + any = true; + + if(any){ + gl_FragColor = u_color * vec4(si, si, si, 1.0); + }else{ + + //coords.x = float(int(coords.x)); + if(color.a > 0.1){ + float x = coords.x; + float y = coords.y; + float time = u_time; + float w = 1.0; + float h = 1.0; + float f1 = sin(2.0*time+(y/4.0*cos(time/3.0)+(x/2.0)-w/4.0)*((y/3.0)-h/4.0)/w); + float f2 = -2.0*cos(11.0*time/9.0-11.0*pow(y, x)/9.0); + + color.r = (f2 + f1) / 4.0*abs(cos(2.0*(x-y)/w + time)); + color.g = (f2 + f1) /(3.0 + color.r); + color.b = (f2 + f1) /(2.5 + color.g); + + + } + + gl_FragColor = color; + } +} diff --git a/core/assets/sprites/sprites.atlas b/core/assets/sprites/sprites.atlas index 4117ce31b1..4a3d88586e 100644 --- a/core/assets/sprites/sprites.atlas +++ b/core/assets/sprites/sprites.atlas @@ -13,623 +13,637 @@ backgrounds/background index: -1 blank rotate: false - xy: 295, 218 + xy: 450, 490 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 blocks/block rotate: false - xy: 412, 401 + xy: 503, 493 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/coal1 rotate: false - xy: 369, 214 + xy: 503, 473 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/coal2 rotate: false - xy: 484, 453 + xy: 503, 463 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/coal3 rotate: false - xy: 416, 391 + xy: 397, 324 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/coaldrill rotate: false - xy: 383, 226 + xy: 397, 314 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/coalgenerator rotate: false - xy: 312, 151 + xy: 397, 304 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/coalpurifier rotate: false - xy: 316, 141 + xy: 397, 294 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/compositewall rotate: false - xy: 316, 131 + xy: 397, 284 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conduit rotate: false - xy: 316, 121 + xy: 457, 451 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conduitbottom rotate: false - xy: 316, 111 + xy: 457, 441 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conduitliquid rotate: false - xy: 316, 101 + xy: 457, 431 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conduittop rotate: false - xy: 316, 91 + xy: 457, 421 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conveyor rotate: false - xy: 316, 81 + xy: 457, 411 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/conveyormove rotate: false - xy: 316, 71 + xy: 117, 4 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/core rotate: false - xy: 316, 61 + xy: 230, 62 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/cross rotate: false - xy: 316, 51 + xy: 230, 52 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/crucible rotate: false - xy: 383, 374 + xy: 230, 42 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/deepwater rotate: false - xy: 383, 364 + xy: 228, 32 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/dirt1 rotate: false - xy: 383, 354 + xy: 409, 402 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/dirt2 rotate: false - xy: 383, 344 + xy: 405, 392 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/dirt3 rotate: false - xy: 393, 375 + xy: 405, 382 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/dirtblock rotate: false - xy: 393, 365 + xy: 405, 372 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/dirtedge rotate: false - xy: 1, 1 + xy: 37, 1 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 blocks/doubleturret rotate: false - xy: 302, 209 + xy: 105, 2 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/drill rotate: false - xy: 393, 355 + xy: 371, 224 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/duriumwall rotate: false - xy: 393, 345 + xy: 371, 214 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/flameturret rotate: false - xy: 302, 197 + xy: 204, 34 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/grass1 rotate: false - xy: 199, 18 + xy: 381, 226 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/grass2 rotate: false - xy: 209, 32 + xy: 381, 216 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/grass3 rotate: false - xy: 209, 22 + xy: 381, 206 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/grassblock rotate: false - xy: 219, 32 + xy: 471, 455 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/grassblock2 rotate: false - xy: 219, 22 + xy: 481, 455 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/grassedge rotate: false - xy: 43, 1 + xy: 79, 1 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 blocks/iron1 rotate: false - xy: 229, 12 + xy: 487, 445 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/iron2 rotate: false - xy: 239, 18 + xy: 467, 415 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/iron3 rotate: false - xy: 239, 8 + xy: 477, 425 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/irondrill rotate: false - xy: 420, 437 + xy: 487, 435 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/ironwall rotate: false - xy: 420, 427 + xy: 477, 415 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/junction rotate: false - xy: 420, 417 + xy: 487, 425 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/laserturret rotate: false - xy: 304, 139 + xy: 140, 26 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 +blocks/lava + rotate: false + xy: 487, 415 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +blocks/lavaedge + rotate: false + xy: 92, 16 + size: 12, 12 + orig: 12, 12 + offset: 0, 0 + index: -1 blocks/liquidrouter rotate: false - xy: 430, 437 + xy: 501, 453 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/machineturret rotate: false - xy: 304, 127 + xy: 152, 26 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/megarepairturret rotate: false - xy: 304, 115 + xy: 164, 26 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/mortarturret rotate: false - xy: 304, 103 + xy: 176, 26 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/mossblock rotate: false - xy: 430, 417 + xy: 497, 433 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/mossstone rotate: false - xy: 430, 417 + xy: 497, 433 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/omnidrill rotate: false - xy: 440, 430 + xy: 497, 413 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/plasmaturret rotate: false - xy: 304, 91 + xy: 188, 26 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/pump rotate: false - xy: 450, 437 + xy: 132, 16 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/repairturret rotate: false - xy: 304, 79 + xy: 393, 394 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/rock rotate: false - xy: 460, 437 + xy: 152, 16 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/rock2 rotate: false - xy: 470, 439 + xy: 162, 16 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/rock2shadow rotate: false - xy: 460, 427 + xy: 172, 16 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/rockshadow rotate: false - xy: 470, 429 + xy: 182, 16 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/router rotate: false - xy: 450, 417 + xy: 127, 6 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/shadow rotate: false - xy: 304, 67 + xy: 393, 382 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/shieldgenerator rotate: false - xy: 460, 417 + xy: 137, 6 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/shotgunturret rotate: false - xy: 304, 55 + xy: 393, 370 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/shrub rotate: false - xy: 470, 419 + xy: 147, 6 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/shrubshadow rotate: false - xy: 440, 410 + xy: 157, 6 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/smelter rotate: false - xy: 450, 407 + xy: 167, 6 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/sniperturret rotate: false - xy: 160, 7 + xy: 397, 358 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/steelconveyor rotate: false - xy: 460, 407 + xy: 177, 6 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/steelconveyormove rotate: false - xy: 470, 409 + xy: 192, 16 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/steelwall rotate: false - xy: 496, 467 + xy: 187, 6 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stone rotate: false - xy: 57, 1 + xy: 375, 236 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 blocks/stone1 rotate: false - xy: 252, 40 + xy: 197, 6 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stone2 rotate: false - xy: 262, 44 + xy: 415, 392 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stone3 rotate: false - xy: 272, 44 + xy: 415, 382 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stoneblock rotate: false - xy: 282, 44 + xy: 415, 372 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stoneblock2 rotate: false - xy: 292, 44 + xy: 409, 362 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stoneblock3 rotate: false - xy: 404, 379 + xy: 409, 352 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stonedrill rotate: false - xy: 403, 369 + xy: 409, 342 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stoneedge rotate: false - xy: 71, 1 + xy: 357, 220 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 blocks/stonewall rotate: false - xy: 403, 359 + xy: 409, 332 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titanium1 rotate: false - xy: 403, 349 + xy: 407, 322 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titanium2 rotate: false - xy: 122, 2 + xy: 407, 312 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titanium3 rotate: false - xy: 132, 2 + xy: 407, 302 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titaniumdrill rotate: false - xy: 379, 214 + xy: 407, 292 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titaniumpurifier rotate: false - xy: 484, 443 + xy: 407, 282 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titaniumshieldwall rotate: false - xy: 480, 433 + xy: 419, 362 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titaniumwall rotate: false - xy: 480, 423 + xy: 419, 352 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/turret rotate: false - xy: 172, 10 + xy: 397, 346 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 blocks/water rotate: false - xy: 315, 215 + xy: 419, 332 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/wateredge rotate: false - xy: 470, 449 + xy: 357, 206 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 blocks/waveturret rotate: false - xy: 184, 10 + xy: 397, 334 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 bullet rotate: false - xy: 359, 214 + xy: 503, 483 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 circle rotate: false - xy: 148, 19 + xy: 233, 180 size: 17, 17 orig: 17, 17 offset: 0, 0 @@ -643,224 +657,224 @@ circle2 index: -1 enemies/blastenemy-t1 rotate: false - xy: 256, 118 + xy: 409, 428 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/blastenemy-t2 rotate: false - xy: 388, 385 + xy: 425, 440 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/blastenemy-t3 rotate: false - xy: 272, 134 + xy: 470, 497 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/enemy-t1 rotate: false - xy: 315, 225 + xy: 252, 183 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/targetenemy-t1 rotate: false - xy: 315, 225 + xy: 252, 183 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/enemy-t2 rotate: false - xy: 15, 1 + xy: 51, 1 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 enemies/enemy-t3 rotate: false - xy: 29, 1 + xy: 65, 1 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 enemies/fastenemy-t1 rotate: false - xy: 167, 22 + xy: 409, 412 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/fastenemy-t2 rotate: false - xy: 256, 102 + xy: 425, 424 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/fastenemy-t3 rotate: false - xy: 272, 118 + xy: 486, 497 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/flamerenemy-t1 rotate: false - xy: 331, 225 + xy: 268, 183 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/flamerenemy-t2 rotate: false - xy: 183, 22 + xy: 284, 183 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/flamerenemy-t3 rotate: false - xy: 256, 86 + xy: 300, 183 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/mortarenemy-t1 rotate: false - xy: 272, 70 + xy: 106, 14 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/mortarenemy-t2 rotate: false - xy: 272, 54 + xy: 455, 477 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/mortarenemy-t3 rotate: false - xy: 288, 134 + xy: 455, 461 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/rapidenemy-t1 rotate: false - xy: 288, 118 + xy: 471, 481 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/rapidenemy-t2 rotate: false - xy: 288, 102 + xy: 471, 465 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/rapidenemy-t3 rotate: false - xy: 288, 86 + xy: 487, 481 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/tankenemy-t1 rotate: false - xy: 288, 70 + xy: 487, 465 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/tankenemy-t2 rotate: false - xy: 288, 54 + xy: 316, 183 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 enemies/tankenemy-t3 rotate: false - xy: 454, 447 + xy: 359, 234 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-coal rotate: false - xy: 229, 32 + xy: 491, 455 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-dirium rotate: false - xy: 229, 22 + xy: 467, 445 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-iron rotate: false - xy: 239, 28 + xy: 467, 435 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-steel rotate: false - xy: 199, 8 + xy: 477, 445 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-stone rotate: false - xy: 209, 12 + xy: 467, 425 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-titanium rotate: false - xy: 219, 12 + xy: 477, 435 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 laser rotate: false - xy: 85, 1 + xy: 228, 164 size: 1, 12 orig: 1, 12 offset: 0, 0 index: -1 laserend rotate: false - xy: 295, 221 + xy: 450, 493 size: 18, 18 orig: 18, 18 offset: 0, 0 index: -1 player rotate: false - xy: 440, 420 + xy: 122, 16 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ui/button rotate: false - xy: 230, 50 + xy: 359, 322 size: 24, 40 split: 10, 10, 6, 10 orig: 24, 40 @@ -868,7 +882,7 @@ ui/button index: -1 ui/button-down rotate: false - xy: 246, 176 + xy: 275, 199 size: 24, 40 split: 10, 10, 6, 10 orig: 24, 40 @@ -876,33 +890,15 @@ ui/button-down index: -1 ui/button-over rotate: false - xy: 246, 176 + xy: 275, 199 size: 24, 40 split: 10, 10, 6, 10 orig: 24, 40 offset: 0, 0 index: -1 -ui/button-gray - rotate: false - xy: 246, 134 - size: 24, 40 - split: 10, 10, 10, 8 - pad: 8, 8, 2, 2 - orig: 24, 40 - offset: 0, 0 - index: -1 -ui/button-gray-over - rotate: false - xy: 204, 92 - size: 24, 40 - split: 10, 10, 10, 8 - pad: 8, 8, 2, 2 - orig: 24, 40 - offset: 0, 0 - index: -1 ui/button-map rotate: false - xy: 230, 92 + xy: 301, 199 size: 24, 40 split: 10, 10, 5, 10 orig: 24, 40 @@ -910,7 +906,7 @@ ui/button-map index: -1 ui/button-map-down rotate: false - xy: 204, 50 + xy: 359, 364 size: 24, 40 split: 10, 10, 5, 10 orig: 24, 40 @@ -918,7 +914,7 @@ ui/button-map-down index: -1 ui/button-map-over rotate: false - xy: 204, 50 + xy: 359, 364 size: 24, 40 split: 10, 10, 5, 10 orig: 24, 40 @@ -926,7 +922,7 @@ ui/button-map-over index: -1 ui/button-select rotate: false - xy: 122, 12 + xy: 204, 46 size: 24, 24 split: 4, 4, 4, 4 orig: 24, 24 @@ -934,168 +930,168 @@ ui/button-select index: -1 ui/check-off rotate: false - xy: 359, 266 + xy: 327, 207 size: 28, 32 orig: 28, 32 offset: 0, 0 index: -1 ui/check-on rotate: false - xy: 272, 184 + xy: 359, 250 size: 28, 32 orig: 28, 32 offset: 0, 0 index: -1 ui/check-over rotate: false - xy: 272, 150 + xy: 425, 456 size: 28, 32 orig: 28, 32 offset: 0, 0 index: -1 ui/clear rotate: false - xy: 347, 229 + xy: 93, 4 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/cursor rotate: false - xy: 383, 338 + xy: 1, 1 size: 4, 4 orig: 4, 4 offset: 0, 0 index: -1 ui/icon-cancel rotate: false - xy: 272, 102 + xy: 441, 440 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icon-check rotate: false - xy: 256, 70 + xy: 441, 424 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icon-close rotate: false - xy: 204, 176 + xy: 359, 448 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 ui/icon-close-down rotate: false - xy: 454, 471 + xy: 233, 199 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 ui/icon-close-over rotate: false - xy: 204, 134 + xy: 359, 406 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 ui/icon-cursor rotate: false - xy: 302, 185 + xy: 216, 34 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-defense rotate: false - xy: 302, 173 + xy: 385, 358 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-distribution rotate: false - xy: 302, 161 + xy: 385, 346 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-menu rotate: false - xy: 240, 38 + xy: 385, 334 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-pause rotate: false - xy: 404, 389 + xy: 385, 322 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-play rotate: false - xy: 148, 7 + xy: 385, 310 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-production rotate: false - xy: 359, 224 + xy: 385, 298 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-rotate rotate: false - xy: 272, 86 + xy: 425, 408 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icon-rotate-arrow rotate: false - xy: 256, 54 + xy: 441, 408 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 ui/icon-settings rotate: false - xy: 371, 224 + xy: 385, 286 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/icon-touch rotate: false - xy: 347, 217 + xy: 128, 26 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 ui/logotext rotate: false - xy: 1, 15 + xy: 359, 490 size: 89, 21 orig: 89, 21 offset: 0, 0 index: -1 ui/logotext-gray rotate: false - xy: 204, 218 + xy: 1, 15 size: 89, 21 orig: 89, 21 offset: 0, 0 index: -1 ui/pane rotate: false - xy: 359, 300 + xy: 359, 284 size: 24, 36 split: 10, 10, 5, 5 orig: 24, 36 @@ -1103,7 +1099,7 @@ ui/pane index: -1 ui/scroll rotate: false - xy: 204, 42 + xy: 92, 30 size: 34, 6 split: 4, 4, 2, 2 orig: 34, 6 @@ -1111,7 +1107,7 @@ ui/scroll index: -1 ui/scroll-horizontal rotate: false - xy: 496, 477 + xy: 401, 408 size: 6, 34 split: 2, 2, 0, 34 pad: 0, 5, 5, 4 @@ -1120,7 +1116,7 @@ ui/scroll-horizontal index: -1 ui/scroll-knob-horizontal rotate: false - xy: 412, 411 + xy: 385, 370 size: 6, 34 split: 2, 2, 0, 34 pad: 0, 5, 13, 12 @@ -1129,7 +1125,7 @@ ui/scroll-knob-horizontal index: -1 ui/scroll-knob-vertical rotate: false - xy: 454, 463 + xy: 1, 7 size: 34, 6 split: 12, 12, 2, 2 orig: 34, 6 @@ -1137,64 +1133,56 @@ ui/scroll-knob-vertical index: -1 ui/selection rotate: false - xy: 167, 19 + xy: 422, 409 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 ui/separator rotate: false - xy: 435, 447 + xy: 117, 1 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 ui/slider rotate: false - xy: 196, 12 + xy: 419, 402 size: 1, 8 orig: 1, 8 offset: 0, 0 index: -1 ui/slider-knob rotate: false - xy: 359, 338 + xy: 204, 132 size: 22, 44 orig: 22, 44 offset: 0, 0 index: -1 ui/slider-knob-down rotate: false - xy: 388, 401 + xy: 401, 444 size: 22, 44 orig: 22, 44 offset: 0, 0 index: -1 ui/slider-knob-over rotate: false - xy: 388, 401 + xy: 401, 444 size: 22, 44 orig: 22, 44 offset: 0, 0 index: -1 ui/slider-vertical rotate: false - xy: 425, 447 + xy: 93, 1 size: 8, 1 orig: 8, 1 offset: 0, 0 index: -1 -ui/slot - rotate: false - xy: 359, 447 - size: 64, 64 - split: 4, 8, 8, 4 - orig: 64, 64 - offset: 0, 0 - index: -1 ui/textfield rotate: false - xy: 92, 8 + xy: 204, 72 size: 28, 28 split: 6, 6, 6, 6 orig: 28, 28 @@ -1202,7 +1190,7 @@ ui/textfield index: -1 ui/textfield-over rotate: false - xy: 359, 236 + xy: 204, 102 size: 28, 28 split: 2, 2, 2, 2 orig: 28, 28 @@ -1210,65 +1198,57 @@ ui/textfield-over index: -1 ui/white rotate: false - xy: 420, 412 + xy: 127, 1 size: 3, 3 orig: 3, 3 offset: 0, 0 index: -1 ui/window rotate: false - xy: 425, 450 + xy: 204, 178 size: 27, 61 split: 8, 8, 44, 11 orig: 27, 61 offset: 0, 0 index: -1 -ui/window-gray - rotate: false - xy: 359, 384 - size: 27, 61 - split: 5, 4, 52, 4 - orig: 27, 61 - offset: 0, 0 - index: -1 weapons/blaster rotate: false - xy: 302, 151 + xy: 502, 503 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/flamer rotate: false - xy: 199, 28 + xy: 371, 204 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/mortar rotate: false - xy: 430, 427 + xy: 497, 443 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/multigun rotate: false - xy: 440, 440 + xy: 497, 423 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/railgun rotate: false - xy: 450, 427 + xy: 142, 16 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/triblaster rotate: false - xy: 480, 413 + xy: 419, 342 size: 8, 8 orig: 8, 8 offset: 0, 0 diff --git a/core/assets/sprites/sprites.png b/core/assets/sprites/sprites.png index 491a9ae28e908b4466a96b8271743e01a628ac54..dd44cce56dd58ba05d8f108c1f1748449186238b 100644 GIT binary patch literal 39589 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 z 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 diff --git a/core/src/io/anuke/mindustry/EffectCreator.java b/core/src/io/anuke/mindustry/EffectCreator.java index e868f3196d..cc7974382e 100644 --- a/core/src/io/anuke/mindustry/EffectCreator.java +++ b/core/src/io/anuke/mindustry/EffectCreator.java @@ -8,6 +8,7 @@ import io.anuke.ucore.core.Draw; import io.anuke.ucore.core.Effects; import io.anuke.ucore.graphics.Hue; import io.anuke.ucore.util.Angles; +import io.anuke.ucore.util.Mathf; public class EffectCreator{ static Color lightRed = Hue.mix(Color.WHITE, Color.FIREBRICK, 0.1f); @@ -32,6 +33,23 @@ public class EffectCreator{ }); }); + Effects.create("lava", 18, e -> { + Angles.randLenVectors(e.id, 3, 1f + e.ifract()*10f, (x, y)->{ + float size = e.sfract()*4f; + Draw.color(Color.ORANGE, Color.GRAY, e.ifract()); + Draw.rect("circle", e.x + x, e.y + y, size, size); + Draw.reset(); + }); + }); + + Effects.create("lavabubble", 45f, e -> { + Draw.color(Color.ORANGE); + float scl = 0.35f; + Draw.thick(1f - Mathf.clamp(e.ifract() - (1f-scl)) * (1f/scl)); + Draw.circle(e.x, e.y, e.ifract()*4f); + 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 bd2b9e0a75..c4f0c2932d 100644 --- a/core/src/io/anuke/mindustry/Mindustry.java +++ b/core/src/io/anuke/mindustry/Mindustry.java @@ -32,9 +32,6 @@ public class Mindustry extends ModuleCore { @Override public void init(){ - //if(Vars.debug){ - GLProfiler.enable(); - //} //always initialize blocks in this order, otherwise there are ID errors Blocks.dirt.getClass(); ProductionBlocks.coaldrill.getClass(); @@ -48,6 +45,9 @@ public class Mindustry extends ModuleCore { @Override public void postInit(){ + if(Vars.debug && Vars.debugGL){ + GLProfiler.enable(); + } Vars.control.reset(); } diff --git a/core/src/io/anuke/mindustry/Renderer.java b/core/src/io/anuke/mindustry/Renderer.java index da0eab79ba..444b5e59cf 100644 --- a/core/src/io/anuke/mindustry/Renderer.java +++ b/core/src/io/anuke/mindustry/Renderer.java @@ -112,7 +112,7 @@ public class Renderer extends RendererModule{ drawDefault(); - if(Vars.debug && Timers.get("profile", 30)){ + if(Vars.debug && Vars.debugGL && Timers.get("profile", 60)){ UCore.log("shaders: " + GLProfiler.shaderSwitches, "calls: " + GLProfiler.drawCalls, "bindings: " + GLProfiler.textureBindings, diff --git a/core/src/io/anuke/mindustry/Vars.java b/core/src/io/anuke/mindustry/Vars.java index 18e4018910..4f6667c870 100644 --- a/core/src/io/anuke/mindustry/Vars.java +++ b/core/src/io/anuke/mindustry/Vars.java @@ -27,6 +27,8 @@ public class Vars{ public static final int zoomScale = Math.round(Unit.dp.inPixels(1)); //if true, player speed will be increased, massive amounts of resources will be given on start, and other debug options will be available public static boolean debug = false; + //whether to debug openGL info + public static boolean debugGL = false; //number of save slots-- increasing may lead to layout issues //TODO named save slots, possibly with a scroll dialog public static final int saveSlots = 4; diff --git a/core/src/io/anuke/mindustry/entities/effect/Shield.java b/core/src/io/anuke/mindustry/entities/effect/Shield.java index 0cb4bd7407..7c696fa189 100644 --- a/core/src/io/anuke/mindustry/entities/effect/Shield.java +++ b/core/src/io/anuke/mindustry/entities/effect/Shield.java @@ -3,7 +3,7 @@ package io.anuke.mindustry.entities.effect; import com.badlogic.gdx.graphics.Color; import io.anuke.mindustry.world.Tile; -import io.anuke.mindustry.world.blocks.types.ShieldBlock; +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.entities.BulletEntity; diff --git a/core/src/io/anuke/mindustry/resource/Liquid.java b/core/src/io/anuke/mindustry/resource/Liquid.java index e90e1c55a4..6a42de36db 100644 --- a/core/src/io/anuke/mindustry/resource/Liquid.java +++ b/core/src/io/anuke/mindustry/resource/Liquid.java @@ -4,7 +4,8 @@ import com.badlogic.gdx.graphics.Color; public enum Liquid{ water(Color.ROYAL), - plasma(Color.CORAL); + plasma(Color.CORAL), + lava(Color.valueOf("ed5334")); public final Color color; diff --git a/core/src/io/anuke/mindustry/world/Block.java b/core/src/io/anuke/mindustry/world/Block.java index 4fb0b26b88..e76f4a628f 100644 --- a/core/src/io/anuke/mindustry/world/Block.java +++ b/core/src/io/anuke/mindustry/world/Block.java @@ -41,8 +41,6 @@ public class Block{ public void drawOver(Tile tile){} public void drawPixelOverlay(Tile tile){} - @Deprecated - public void drawOverlay(Tile tile){} public void drawPlace(int x, int y, boolean valid){} public String name(){ diff --git a/core/src/io/anuke/mindustry/world/Generator.java b/core/src/io/anuke/mindustry/world/Generator.java index 8acb119d7a..fcd29d407f 100644 --- a/core/src/io/anuke/mindustry/world/Generator.java +++ b/core/src/io/anuke/mindustry/world/Generator.java @@ -22,7 +22,8 @@ public class Generator{ Hue.rgb(70, 90, 150), Blocks.deepwater, Hue.rgb(110, 80, 30), Blocks.dirt, Hue.rgb(160, 120, 70), Blocks.dirtblock, - Hue.rgb(100, 100, 100), Blocks.stoneblock + Hue.rgb(100, 100, 100), Blocks.stoneblock, + Color.valueOf("ed5334"), Blocks.lava ); /**Returns world size.*/ diff --git a/core/src/io/anuke/mindustry/world/blocks/Blocks.java b/core/src/io/anuke/mindustry/world/blocks/Blocks.java index 9e6265ccc0..29837b81f4 100644 --- a/core/src/io/anuke/mindustry/world/blocks/Blocks.java +++ b/core/src/io/anuke/mindustry/world/blocks/Blocks.java @@ -6,8 +6,10 @@ 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.ShieldedWallBlock; 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; public class Blocks{ public static final Block @@ -15,7 +17,11 @@ public class Blocks{ air = new Block("air"){ //no drawing here public void drawCache(Tile tile){} - public void draw(Tile tile){} + + //update floor blocks for effects, if needed + public void draw(Tile tile){ + tile.floor().update(tile); + } }, deepwater = new Floor("deepwater"){{ @@ -30,6 +36,25 @@ public class Blocks{ liquidDrop = Liquid.water; }}, + lava = new Floor("lava"){ + { + vary = false; + solid = true; + liquidDrop = Liquid.lava; + } + + @Override + public void update(Tile tile){ + if(Mathf.chance(0.001)){ + Effects.effect("lava", tile.worldx() + Mathf.range(5f), tile.worldy() + Mathf.range(5f)); + } + + if(Mathf.chance(0.004)){ + Effects.effect("lavabubble", tile.worldx() + Mathf.range(3f), tile.worldy() + Mathf.range(3f)); + } + } + }, + stone = new Floor("stone"){{ drops = new ItemStack(Item.stone, 1); }}, diff --git a/core/src/io/anuke/mindustry/world/blocks/ProductionBlocks.java b/core/src/io/anuke/mindustry/world/blocks/ProductionBlocks.java index 8ab9c2d30e..4ce4551523 100644 --- a/core/src/io/anuke/mindustry/world/blocks/ProductionBlocks.java +++ b/core/src/io/anuke/mindustry/world/blocks/ProductionBlocks.java @@ -6,6 +6,8 @@ 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; @@ -35,7 +37,7 @@ public class ProductionBlocks{ } }, - conduit = new Conduit("conduit"){{ + conduit = new LiquidBlock("conduit"){{ }}, diff --git a/core/src/io/anuke/mindustry/world/blocks/WeaponBlocks.java b/core/src/io/anuke/mindustry/world/blocks/WeaponBlocks.java index 5dc266f708..767abf694f 100644 --- a/core/src/io/anuke/mindustry/world/blocks/WeaponBlocks.java +++ b/core/src/io/anuke/mindustry/world/blocks/WeaponBlocks.java @@ -8,7 +8,7 @@ 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.*; +import io.anuke.mindustry.world.blocks.types.defense.*; import io.anuke.ucore.core.Timers; import io.anuke.ucore.util.Angles; import io.anuke.ucore.util.Mathf; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/Conduit.java b/core/src/io/anuke/mindustry/world/blocks/types/LiquidBlock.java similarity index 80% rename from core/src/io/anuke/mindustry/world/blocks/types/Conduit.java rename to core/src/io/anuke/mindustry/world/blocks/types/LiquidBlock.java index ee041d71df..091c50b4de 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/Conduit.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/LiquidBlock.java @@ -11,11 +11,11 @@ import io.anuke.mindustry.world.Tile; import io.anuke.ucore.core.Draw; import io.anuke.ucore.core.Timers; -public class Conduit extends Block{ +public class LiquidBlock extends Block{ protected float liquidCapacity = 10f; protected float flowfactor = 4.9f; - public Conduit(String name) { + public LiquidBlock(String name) { super(name); rotate = true; update = true; @@ -28,7 +28,7 @@ public class Conduit extends Block{ @Override public void draw(Tile tile){ - ConduitEntity entity = tile.entity(); + LiquidEntity entity = tile.entity(); Draw.rect(name() + "bottom", tile.worldx(), tile.worldy(), tile.rotation * 90); @@ -45,12 +45,12 @@ public class Conduit extends Block{ @Override public TileEntity getEntity(){ - return new ConduitEntity(); + return new LiquidEntity(); } @Override public void update(Tile tile){ - ConduitEntity entity = tile.entity(); + LiquidEntity entity = tile.entity(); if(entity.liquidAmount > 0.01f && Timers.get(entity, "flow", 3)){ tryMoveLiquid(tile, tile.getNearby()[tile.rotation]); @@ -59,7 +59,7 @@ public class Conduit extends Block{ } public void tryDumpLiquid(Tile tile){ - ConduitEntity entity = tile.entity(); + LiquidEntity entity = tile.entity(); if(entity.liquidAmount > 0.01f){ tryMoveLiquid(tile, tile.getNearby()[tile.dump]); @@ -69,13 +69,13 @@ public class Conduit extends Block{ } public void tryMoveLiquid(Tile tile, Tile next){ - ConduitEntity entity = tile.entity(); + LiquidEntity entity = tile.entity(); Liquid liquid = entity.liquid; - if(next != null && next.block() instanceof Conduit && entity.liquidAmount > 0.01f){ - Conduit other = (Conduit)next.block(); - ConduitEntity otherentity = next.entity(); + if(next != null && next.block() instanceof LiquidBlock && entity.liquidAmount > 0.01f){ + LiquidBlock other = (LiquidBlock)next.block(); + LiquidEntity otherentity = next.entity(); float flow = Math.min(other.liquidCapacity - otherentity.liquidAmount - 0.001f, Math.min(entity.liquidAmount/flowfactor, entity.liquidAmount)); @@ -89,20 +89,20 @@ public class Conduit extends Block{ } public boolean acceptLiquid(Tile tile, Tile source, Liquid liquid, float amount){ - ConduitEntity entity = tile.entity(); + LiquidEntity entity = tile.entity(); return entity.liquidAmount + amount < liquidCapacity && (entity.liquid == liquid || entity.liquidAmount <= 0.01f); } public void handleLiquid(Tile tile, Tile source, Liquid liquid, float amount){ - ConduitEntity entity = tile.entity(); + LiquidEntity entity = tile.entity(); entity.liquid = liquid; entity.liquidAmount += amount; } - static class ConduitEntity extends TileEntity{ - Liquid liquid; - float liquidAmount; + public static class LiquidEntity extends TileEntity{ + public Liquid liquid; + public float liquidAmount; @Override public void write(DataOutputStream stream) throws IOException{ diff --git a/core/src/io/anuke/mindustry/world/blocks/types/PowerBlock.java b/core/src/io/anuke/mindustry/world/blocks/types/PowerBlock.java index a093545a54..f543a51eeb 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/PowerBlock.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/PowerBlock.java @@ -27,7 +27,7 @@ public abstract class PowerBlock extends Block implements PowerAcceptor{ float fract = (float)entity.power / powerCapacity; if(fract > 0) - fract = Mathf.clamp(fract, 0.24f, 1f); + fract = Mathf.clamp(fract + 0.2f, 0.24f, 1f); Vars.renderer.drawBar(Color.YELLOW, tile.worldx(), tile.worldy() + 13, fract); } diff --git a/core/src/io/anuke/mindustry/world/blocks/types/LaserTurret.java b/core/src/io/anuke/mindustry/world/blocks/types/defense/LaserTurret.java similarity index 97% rename from core/src/io/anuke/mindustry/world/blocks/types/LaserTurret.java rename to core/src/io/anuke/mindustry/world/blocks/types/defense/LaserTurret.java index ebcdb433ef..6d0e039f90 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/LaserTurret.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/defense/LaserTurret.java @@ -1,4 +1,4 @@ -package io.anuke.mindustry.world.blocks.types; +package io.anuke.mindustry.world.blocks.types.defense; import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.math.MathUtils; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/RepairTurret.java b/core/src/io/anuke/mindustry/world/blocks/types/defense/RepairTurret.java similarity index 97% rename from core/src/io/anuke/mindustry/world/blocks/types/RepairTurret.java rename to core/src/io/anuke/mindustry/world/blocks/types/defense/RepairTurret.java index e972c25656..9c24868142 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/RepairTurret.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/defense/RepairTurret.java @@ -1,4 +1,4 @@ -package io.anuke.mindustry.world.blocks.types; +package io.anuke.mindustry.world.blocks.types.defense; import com.badlogic.gdx.math.MathUtils; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/ShieldBlock.java b/core/src/io/anuke/mindustry/world/blocks/types/defense/ShieldBlock.java similarity index 88% rename from core/src/io/anuke/mindustry/world/blocks/types/ShieldBlock.java rename to core/src/io/anuke/mindustry/world/blocks/types/defense/ShieldBlock.java index 3a61c1dd19..9f94d6da44 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/ShieldBlock.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/defense/ShieldBlock.java @@ -1,8 +1,9 @@ -package io.anuke.mindustry.world.blocks.types; +package io.anuke.mindustry.world.blocks.types.defense; import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.entities.effect.Shield; import io.anuke.mindustry.world.Tile; +import io.anuke.mindustry.world.blocks.types.PowerBlock; import io.anuke.ucore.core.Timers; public class ShieldBlock extends PowerBlock{ diff --git a/core/src/io/anuke/mindustry/world/blocks/types/ShieldedWallBlock.java b/core/src/io/anuke/mindustry/world/blocks/types/defense/ShieldedWallBlock.java similarity index 93% rename from core/src/io/anuke/mindustry/world/blocks/types/ShieldedWallBlock.java rename to core/src/io/anuke/mindustry/world/blocks/types/defense/ShieldedWallBlock.java index 67f694e0ad..268df4b579 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/ShieldedWallBlock.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/defense/ShieldedWallBlock.java @@ -1,10 +1,11 @@ -package io.anuke.mindustry.world.blocks.types; +package io.anuke.mindustry.world.blocks.types.defense; import com.badlogic.gdx.graphics.Color; import io.anuke.mindustry.Vars; import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.world.Tile; +import io.anuke.mindustry.world.blocks.types.PowerBlock; import io.anuke.ucore.core.Draw; import io.anuke.ucore.core.Graphics; import io.anuke.ucore.core.Timers; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/Turret.java b/core/src/io/anuke/mindustry/world/blocks/types/defense/Turret.java similarity index 99% rename from core/src/io/anuke/mindustry/world/blocks/types/Turret.java rename to core/src/io/anuke/mindustry/world/blocks/types/defense/Turret.java index 74d055e2a5..868932cc08 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/Turret.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/defense/Turret.java @@ -1,4 +1,4 @@ -package io.anuke.mindustry.world.blocks.types; +package io.anuke.mindustry.world.blocks.types.defense; import java.io.DataInputStream; import java.io.DataOutputStream; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/Conveyor.java b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Conveyor.java similarity index 98% rename from core/src/io/anuke/mindustry/world/blocks/types/Conveyor.java rename to core/src/io/anuke/mindustry/world/blocks/types/distribution/Conveyor.java index d8e67e95e8..d51d043ce2 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/Conveyor.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Conveyor.java @@ -1,4 +1,4 @@ -package io.anuke.mindustry.world.blocks.types; +package io.anuke.mindustry.world.blocks.types.distribution; import static io.anuke.mindustry.Vars.tilesize; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/LiquidRouter.java b/core/src/io/anuke/mindustry/world/blocks/types/distribution/LiquidRouter.java similarity index 83% rename from core/src/io/anuke/mindustry/world/blocks/types/LiquidRouter.java rename to core/src/io/anuke/mindustry/world/blocks/types/distribution/LiquidRouter.java index 0ed1e66cda..0af7e45ea6 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/LiquidRouter.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/distribution/LiquidRouter.java @@ -1,13 +1,14 @@ -package io.anuke.mindustry.world.blocks.types; +package io.anuke.mindustry.world.blocks.types.distribution; import com.badlogic.gdx.utils.ObjectMap; 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; import io.anuke.ucore.core.Timers; -public class LiquidRouter extends Conduit{ +public class LiquidRouter extends LiquidBlock{ private ObjectMap lastmap = new ObjectMap<>(); public LiquidRouter(String name) { @@ -23,7 +24,7 @@ public class LiquidRouter extends Conduit{ @Override public void update(Tile tile){ - ConduitEntity entity = tile.entity(); + LiquidEntity entity = tile.entity(); if(Timers.get(tile, 2) && entity.liquidAmount > 0){ if(lastmap.get(tile, (byte)-1) != tile.rotation){ @@ -43,7 +44,7 @@ public class LiquidRouter extends Conduit{ @Override public void draw(Tile tile){ - ConduitEntity entity = tile.entity(); + LiquidEntity entity = tile.entity(); Draw.rect(name(), tile.worldx(), tile.worldy()); if(entity.liquid == null) return; 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 new file mode 100644 index 0000000000..60bf9537c0 --- /dev/null +++ b/core/src/io/anuke/mindustry/world/blocks/types/distribution/PowerBooster.java @@ -0,0 +1,5 @@ +package io.anuke.mindustry.world.blocks.types.distribution; + +public class PowerBooster{ + +} diff --git a/core/src/io/anuke/mindustry/world/blocks/types/Router.java b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Router.java similarity index 95% rename from core/src/io/anuke/mindustry/world/blocks/types/Router.java rename to core/src/io/anuke/mindustry/world/blocks/types/distribution/Router.java index dc9447108e..e29c68e842 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/Router.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Router.java @@ -1,4 +1,4 @@ -package io.anuke.mindustry.world.blocks.types; +package io.anuke.mindustry.world.blocks.types.distribution; import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.utils.ObjectMap; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/Crafter.java b/core/src/io/anuke/mindustry/world/blocks/types/production/Crafter.java similarity index 94% rename from core/src/io/anuke/mindustry/world/blocks/types/Crafter.java rename to core/src/io/anuke/mindustry/world/blocks/types/production/Crafter.java index 2f9ae2ab52..31fb9b1550 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/Crafter.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/production/Crafter.java @@ -1,4 +1,4 @@ -package io.anuke.mindustry.world.blocks.types; +package io.anuke.mindustry.world.blocks.types.production; import io.anuke.mindustry.resource.Item; import io.anuke.mindustry.world.Block; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/Drill.java b/core/src/io/anuke/mindustry/world/blocks/types/production/Drill.java similarity index 95% rename from core/src/io/anuke/mindustry/world/blocks/types/Drill.java rename to core/src/io/anuke/mindustry/world/blocks/types/production/Drill.java index 5649f8b1fa..47d8a3d1d1 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/Drill.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/production/Drill.java @@ -1,4 +1,4 @@ -package io.anuke.mindustry.world.blocks.types; +package io.anuke.mindustry.world.blocks.types.production; import io.anuke.mindustry.resource.Item; import io.anuke.mindustry.world.Block; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/Generator.java b/core/src/io/anuke/mindustry/world/blocks/types/production/Generator.java similarity index 89% rename from core/src/io/anuke/mindustry/world/blocks/types/Generator.java rename to core/src/io/anuke/mindustry/world/blocks/types/production/Generator.java index ea7d45d7de..1a8728e041 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/Generator.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/production/Generator.java @@ -1,10 +1,12 @@ -package io.anuke.mindustry.world.blocks.types; +package io.anuke.mindustry.world.blocks.types.production; import com.badlogic.gdx.math.Vector2; import io.anuke.mindustry.Vars; import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.World; +import io.anuke.mindustry.world.blocks.types.PowerAcceptor; +import io.anuke.mindustry.world.blocks.types.PowerBlock; import io.anuke.ucore.core.Draw; public class Generator extends PowerBlock{ diff --git a/core/src/io/anuke/mindustry/world/blocks/types/ItemPowerGenerator.java b/core/src/io/anuke/mindustry/world/blocks/types/production/ItemPowerGenerator.java similarity index 95% rename from core/src/io/anuke/mindustry/world/blocks/types/ItemPowerGenerator.java rename to core/src/io/anuke/mindustry/world/blocks/types/production/ItemPowerGenerator.java index f577d7213a..779d99e930 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/ItemPowerGenerator.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/production/ItemPowerGenerator.java @@ -1,4 +1,4 @@ -package io.anuke.mindustry.world.blocks.types; +package io.anuke.mindustry.world.blocks.types.production; import com.badlogic.gdx.graphics.Color; 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 new file mode 100644 index 0000000000..e827d1b71e --- /dev/null +++ b/core/src/io/anuke/mindustry/world/blocks/types/production/LiquidPowerGenerator.java @@ -0,0 +1,30 @@ +package io.anuke.mindustry.world.blocks.types.production; + +import io.anuke.mindustry.resource.Liquid; +import io.anuke.mindustry.world.Tile; +import io.anuke.mindustry.world.blocks.types.LiquidBlock; + +public class LiquidPowerGenerator extends LiquidBlock{ + public Liquid generateLiquid; + public float generatePower; + public float generateAmount = 1f; + + public LiquidPowerGenerator(String name) { + super(name); + } + + @Override + public void update(Tile tile){ + LiquidEntity entity = tile.entity(); + + if(entity.liquidAmount >= generateAmount){ + entity.liquidAmount -= generateAmount; + //TODO actually add power + } + } + + @Override + public boolean acceptLiquid(Tile tile, Tile source, Liquid liquid, float amount){ + return liquid == generateLiquid && super.acceptLiquid(tile, source, liquid, amount); + } +} diff --git a/core/src/io/anuke/mindustry/world/blocks/types/Pump.java b/core/src/io/anuke/mindustry/world/blocks/types/production/Pump.java similarity index 85% rename from core/src/io/anuke/mindustry/world/blocks/types/Pump.java rename to core/src/io/anuke/mindustry/world/blocks/types/production/Pump.java index 41fdbc0281..4281020c01 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/Pump.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/production/Pump.java @@ -1,12 +1,13 @@ -package io.anuke.mindustry.world.blocks.types; +package io.anuke.mindustry.world.blocks.types.production; 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; import io.anuke.ucore.core.Timers; import io.anuke.ucore.util.Mathf; -public class Pump extends Conduit{ +public class Pump extends LiquidBlock{ protected float pumpspeed = 2f; public Pump(String name) { @@ -40,7 +41,7 @@ public class Pump extends Conduit{ @Override public void update(Tile tile){ - ConduitEntity entity = tile.entity(); + LiquidEntity entity = tile.entity(); if(tile.floor().liquidDrop != null && Timers.get(tile, "pump", 8) && entity.liquidAmount < liquidCapacity){ diff --git a/core/src/io/anuke/mindustry/world/blocks/types/Purifier.java b/core/src/io/anuke/mindustry/world/blocks/types/production/Purifier.java similarity index 89% rename from core/src/io/anuke/mindustry/world/blocks/types/Purifier.java rename to core/src/io/anuke/mindustry/world/blocks/types/production/Purifier.java index 669d111344..a5359e8c22 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/Purifier.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/production/Purifier.java @@ -1,4 +1,4 @@ -package io.anuke.mindustry.world.blocks.types; +package io.anuke.mindustry.world.blocks.types.production; import com.badlogic.gdx.graphics.Color; @@ -7,11 +7,12 @@ import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.resource.Item; 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; import io.anuke.ucore.core.Effects; import io.anuke.ucore.core.Timers; -public class Purifier extends Conduit{ +public class Purifier extends LiquidBlock{ public Item input = null; public int inputAmount = 5; public Liquid inputLiquid = null; @@ -31,7 +32,7 @@ public class Purifier extends Conduit{ @Override public void draw(Tile tile){ - ConduitEntity entity = tile.entity(); + LiquidEntity entity = tile.entity(); Draw.rect(name(), tile.worldx(), tile.worldy()); if(entity.liquid == null) return; @@ -44,7 +45,7 @@ public class Purifier extends Conduit{ @Override public void update(Tile tile){ - ConduitEntity entity = tile.entity(); + LiquidEntity entity = tile.entity(); if(Timers.get(tile, "purify", purifyTime) && entity.liquidAmount >= liquidAmount && entity.hasItem(input, inputAmount)){