diff --git a/core/assets-raw/sprites/blocks/combustiongenerator.png b/core/assets-raw/sprites/blocks/combustiongenerator.png index 9545a7c1d1..44e47307ac 100644 Binary files a/core/assets-raw/sprites/blocks/combustiongenerator.png and b/core/assets-raw/sprites/blocks/combustiongenerator.png differ diff --git a/core/assets-raw/sprites/blocks/core.png b/core/assets-raw/sprites/blocks/core.png index 86f51deffa..44f0512a37 100644 Binary files a/core/assets-raw/sprites/blocks/core.png and b/core/assets-raw/sprites/blocks/core.png differ diff --git a/core/assets/sprites/sprites.atlas b/core/assets/sprites/sprites.atlas index 7c9f348146..82a8669d54 100644 --- a/core/assets/sprites/sprites.atlas +++ b/core/assets/sprites/sprites.atlas @@ -60,13 +60,6 @@ blocks/coalgenerator orig: 8, 8 offset: 0, 0 index: -1 -blocks/combustiongenerator - rotate: false - xy: 449, 397 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 blocks/coalpurifier rotate: false xy: 230, 62 @@ -74,55 +67,62 @@ blocks/coalpurifier orig: 8, 8 offset: 0, 0 index: -1 -blocks/compositewall +blocks/combustiongenerator rotate: false xy: 230, 52 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 -blocks/conduit +blocks/compositewall rotate: false xy: 467, 451 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 -blocks/conduitbottom +blocks/conduit rotate: false xy: 477, 453 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 -blocks/conduitliquid +blocks/conduitbottom rotate: false xy: 459, 407 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 -blocks/conduittop +blocks/conduitliquid rotate: false xy: 459, 397 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 -blocks/conveyor +blocks/conduittop rotate: false xy: 252, 173 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 -blocks/conveyormove +blocks/conveyor rotate: false xy: 262, 173 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 +blocks/conveyormove + rotate: false + xy: 272, 173 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 blocks/core rotate: false xy: 401, 418 @@ -132,49 +132,49 @@ blocks/core index: -1 blocks/cross rotate: false - xy: 272, 173 + xy: 282, 173 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/crucible rotate: false - xy: 282, 173 + xy: 292, 173 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/deepwater rotate: false - xy: 292, 173 + xy: 302, 173 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/dirt1 rotate: false - xy: 302, 173 + xy: 312, 173 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/dirt2 rotate: false - xy: 312, 173 + xy: 322, 173 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/dirt3 rotate: false - xy: 322, 173 + xy: 228, 154 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/dirtblock rotate: false - xy: 228, 154 + xy: 228, 144 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -195,14 +195,14 @@ blocks/doubleturret index: -1 blocks/drill rotate: false - xy: 228, 144 + xy: 228, 134 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/duriumwall rotate: false - xy: 228, 134 + xy: 211, 8 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -216,35 +216,35 @@ blocks/flameturret index: -1 blocks/grass1 rotate: false - xy: 488, 487 + xy: 487, 477 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/grass2 rotate: false - xy: 487, 477 + xy: 487, 467 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/grass3 rotate: false - xy: 487, 467 + xy: 487, 457 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/grassblock rotate: false - xy: 487, 457 + xy: 498, 487 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/grassblock2 rotate: false - xy: 498, 487 + xy: 497, 477 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -258,42 +258,42 @@ blocks/grassedge index: -1 blocks/iron1 rotate: false - xy: 487, 437 + xy: 497, 437 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/iron2 rotate: false - xy: 497, 437 + xy: 477, 433 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/iron3 rotate: false - xy: 477, 433 + xy: 487, 427 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/irondrill rotate: false - xy: 487, 427 + xy: 497, 427 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/ironwall rotate: false - xy: 497, 427 + xy: 463, 417 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/junction rotate: false - xy: 463, 417 + xy: 463, 427 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -307,7 +307,7 @@ blocks/laserturret index: -1 blocks/lava rotate: false - xy: 463, 427 + xy: 473, 423 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -321,14 +321,14 @@ blocks/lavaedge index: -1 blocks/liquidjunction rotate: false - xy: 473, 423 + xy: 473, 413 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/liquidrouter rotate: false - xy: 473, 413 + xy: 483, 417 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -356,14 +356,14 @@ blocks/mortarturret index: -1 blocks/mossblock rotate: false - xy: 493, 417 + xy: 503, 417 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/mossstone rotate: false - xy: 493, 417 + xy: 503, 417 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -377,14 +377,14 @@ blocks/nuclearreactor index: -1 blocks/nuclearreactor-icon rotate: false - xy: 469, 403 + xy: 469, 393 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/oil rotate: false - xy: 469, 393 + xy: 483, 407 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -398,14 +398,14 @@ blocks/oiledge index: -1 blocks/oilrefinery rotate: false - xy: 483, 407 + xy: 493, 407 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/omnidrill rotate: false - xy: 493, 407 + xy: 503, 407 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -419,21 +419,21 @@ blocks/plasmaturret index: -1 blocks/poweredconveyor rotate: false - xy: 479, 397 + xy: 489, 397 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/poweredconveyormove rotate: false - xy: 489, 397 + xy: 499, 397 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/pump rotate: false - xy: 499, 397 + xy: 479, 387 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -447,35 +447,35 @@ blocks/repairturret index: -1 blocks/rock rotate: false - xy: 489, 387 + xy: 499, 387 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/rock2 rotate: false - xy: 499, 387 + xy: 389, 224 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/rock2shadow rotate: false - xy: 389, 224 + xy: 389, 214 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/rockshadow rotate: false - xy: 389, 214 + xy: 389, 204 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/router rotate: false - xy: 389, 204 + xy: 332, 197 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -489,7 +489,7 @@ blocks/shadow index: -1 blocks/shieldgenerator rotate: false - xy: 332, 197 + xy: 332, 187 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -503,21 +503,21 @@ blocks/shotgunturret index: -1 blocks/shrub rotate: false - xy: 332, 187 + xy: 342, 197 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/shrubshadow rotate: false - xy: 342, 197 + xy: 332, 177 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/smelter rotate: false - xy: 332, 177 + xy: 342, 187 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -531,21 +531,21 @@ blocks/sniperturret index: -1 blocks/steelconveyor rotate: false - xy: 342, 187 + xy: 342, 177 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/steelconveyormove rotate: false - xy: 342, 177 + xy: 352, 192 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/steelwall rotate: false - xy: 352, 192 + xy: 352, 182 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -559,49 +559,49 @@ blocks/stone index: -1 blocks/stone1 rotate: false - xy: 352, 182 + xy: 362, 192 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stone2 rotate: false - xy: 362, 192 + xy: 362, 182 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stone3 rotate: false - xy: 362, 182 + xy: 372, 192 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stoneblock rotate: false - xy: 372, 192 + xy: 372, 182 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stoneblock2 rotate: false - xy: 372, 182 + xy: 382, 192 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stoneblock3 rotate: false - xy: 382, 192 + xy: 382, 182 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stonedrill rotate: false - xy: 382, 182 + xy: 352, 172 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -615,63 +615,63 @@ blocks/stoneedge index: -1 blocks/stonewall rotate: false - xy: 352, 172 + xy: 362, 172 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/thermalgenerator rotate: false - xy: 362, 172 + xy: 372, 172 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titanium1 rotate: false - xy: 372, 172 + xy: 382, 172 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titanium2 rotate: false - xy: 382, 172 + xy: 392, 194 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titanium3 rotate: false - xy: 392, 194 + xy: 392, 184 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titaniumdrill rotate: false - xy: 392, 184 + xy: 392, 174 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titaniumpurifier rotate: false - xy: 392, 174 + xy: 332, 167 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titaniumshieldwall rotate: false - xy: 332, 167 + xy: 342, 167 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titaniumwall rotate: false - xy: 342, 167 + xy: 352, 162 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -685,35 +685,35 @@ blocks/turret index: -1 blocks/uranium1 rotate: false - xy: 362, 162 + xy: 372, 162 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/uranium2 rotate: false - xy: 372, 162 + xy: 382, 162 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/uranium3 rotate: false - xy: 382, 162 + xy: 392, 164 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/uraniumdrill rotate: false - xy: 392, 164 + xy: 389, 282 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/water rotate: false - xy: 389, 282 + xy: 389, 272 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -909,49 +909,49 @@ enemies/tankenemy-t3 index: -1 icon-coal rotate: false - xy: 497, 477 + xy: 497, 467 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-dirium rotate: false - xy: 497, 467 + xy: 497, 457 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-iron rotate: false - xy: 497, 457 + xy: 487, 447 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-steel rotate: false - xy: 487, 447 + xy: 497, 447 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-stone rotate: false - xy: 497, 447 + xy: 477, 443 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-titanium rotate: false - xy: 477, 443 + xy: 467, 441 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-uranium rotate: false - xy: 467, 441 + xy: 487, 437 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -972,7 +972,7 @@ laserend index: -1 player rotate: false - xy: 503, 407 + xy: 479, 397 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1346,35 +1346,35 @@ weapons/blaster index: -1 weapons/flamer rotate: false - xy: 211, 8 + xy: 488, 487 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/mortar rotate: false - xy: 483, 417 + xy: 493, 417 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/multigun rotate: false - xy: 503, 417 + xy: 469, 403 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/railgun rotate: false - xy: 479, 387 + xy: 489, 387 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/triblaster rotate: false - xy: 352, 162 + xy: 362, 162 size: 8, 8 orig: 8, 8 offset: 0, 0 diff --git a/core/assets/sprites/sprites.png b/core/assets/sprites/sprites.png index c5463d7d10..bf73a14cd1 100644 Binary files a/core/assets/sprites/sprites.png and b/core/assets/sprites/sprites.png differ diff --git a/core/src/io/anuke/mindustry/entities/effect/Shield.java b/core/src/io/anuke/mindustry/entities/effect/Shield.java index 86a00b4cfd..2e4597aa4e 100644 --- a/core/src/io/anuke/mindustry/entities/effect/Shield.java +++ b/core/src/io/anuke/mindustry/entities/effect/Shield.java @@ -14,6 +14,7 @@ import io.anuke.ucore.util.Mathf; public class Shield extends Entity{ public boolean active; + private float uptime = 0f; private final Tile tile; //TODO @@ -29,6 +30,15 @@ public class Shield extends Entity{ @Override public void update(){ + if(active){ + uptime += Timers.delta() / 90f; + }else{ + uptime -= Timers.delta() / 60f; + if(uptime < 0) + remove(); + } + uptime = Mathf.clamp(uptime); + if(!(tile.block() instanceof ShieldBlock)){ remove(); return; @@ -36,7 +46,7 @@ public class Shield extends Entity{ ShieldBlock block = (ShieldBlock)tile.block(); - Entities.getNearby(x, y, block.shieldRadius * 2 + 10, entity->{ + Entities.getNearby(x, y, block.shieldRadius * 2*uptime + 10, entity->{ if(entity instanceof BulletEntity){ BulletEntity bullet = (BulletEntity)entity; @@ -58,6 +68,7 @@ public class Shield extends Entity{ ShieldBlock block = (ShieldBlock)tile.block(); float rad = block.shieldRadius*2 + Mathf.sin(Timers.time(), 25f, 2f); + rad *= uptime; Graphics.surface("shield", false); Draw.color(Color.ROYAL); @@ -67,6 +78,10 @@ public class Shield extends Entity{ Graphics.surface(); } + public void removeDelay(){ + active = false; + } + @Override public void added(){ active = true; @@ -75,5 +90,7 @@ public class Shield extends Entity{ @Override public void removed(){ active = false; + uptime = 0f; } + } 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 f09bcc9817..91d71752de 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,10 +7,10 @@ import io.anuke.mindustry.world.blocks.types.PowerBlock; import io.anuke.ucore.core.Timers; public class ShieldBlock extends PowerBlock{ - private static boolean debugShield = true; + private static boolean debugShield = false; public float shieldRadius = 40f; - public float powerDrain = 0.01f; + public float powerDrain = 0.005f; public ShieldBlock(String name) { super(name); @@ -34,7 +34,7 @@ public class ShieldBlock extends PowerBlock{ entity.power -= powerDrain * Timers.delta(); }else{ if(entity.shield.active && !debugShield){ - entity.shield.remove(); + entity.shield.removeDelay(); } } 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 6a75e487cf..2a4d015ecf 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 @@ -10,6 +10,11 @@ public class PowerBooster extends Generator{ super(name); } + @Override + public void update(Tile tile){ + distributePower(tile); + } + @Override public float addPower(Tile tile, float amount){ PowerEntity entity = tile.entity(); diff --git a/core/src/io/anuke/mindustry/world/blocks/types/production/Generator.java b/core/src/io/anuke/mindustry/world/blocks/types/production/Generator.java index 2b57be8ba9..098841b0e4 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/production/Generator.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/production/Generator.java @@ -8,57 +8,71 @@ 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; +import io.anuke.ucore.core.Timers; +import io.anuke.ucore.util.Mathf; public class Generator extends PowerBlock{ - public static final int powerTime = 8; - + public static final int powerTime = 2; + public int powerRange = 6; - public float powerSpeed = 0.15f; + public float powerSpeed = 0.2f; public Generator(String name) { super(name); } - + @Override public void drawPixelOverlay(Tile tile){ super.drawPixelOverlay(tile); - + Draw.color("yellow"); Draw.dashcircle(tile.worldx(), tile.worldy(), powerRange * Vars.tilesize); Draw.reset(); } - + protected void distributePower(Tile tile){ + if(!Timers.get(tile, "generate", powerTime)){ + return; + } + PowerEntity p = tile.entity(); + + int acceptors = 0; + float flow = 0f; + //TODO have two phases, where it checks nearby blocks first, then distributes it evenly - for(int x = -powerRange; x <= powerRange; x ++){ - for(int y = -powerRange; y <= powerRange; y ++){ - - if(x == 0 && y == 0){ - continue; - } - - if(p.power <= 0.0001f){ - return; - } - - if(Vector2.dst(x, y, 0, 0) < powerRange){ - Tile dest = World.tile(tile.x + x, tile.y + y); - if(dest != null && dest.block() instanceof PowerAcceptor){ - PowerAcceptor block = (PowerAcceptor)dest.block(); - - float transmission = Math.min(powerSpeed, p.power); - - if(p.power >= 0.0001f){ - float amount = block.addPower(dest, transmission); - p.power -= amount; + for(int i = 0; i < 2; i++){ + for(int x = -powerRange; x <= powerRange; x++){ + for(int y = -powerRange; y <= powerRange; y++){ + + if(x == 0 && y == 0){ + continue; + } + + if(Vector2.dst(x, y, 0, 0) < powerRange){ + Tile dest = World.tile(tile.x + x, tile.y + y); + if(dest != null && dest.block() instanceof PowerAcceptor){ + if(i == 1){ + PowerAcceptor block = (PowerAcceptor) dest.block(); + + float transmission = Math.min(flow, p.power); + + float amount = block.addPower(dest, transmission); + p.power -= amount; + }else{ + acceptors ++; + } } } } } + + if(i == 0 && acceptors > 0){ + flow = Mathf.clamp(powerSpeed / acceptors, 0f, p.power / acceptors); + } } } - + //don't accept any power @Override public float addPower(Tile tile, float amount){ diff --git a/core/src/io/anuke/mindustry/world/blocks/types/production/ItemPowerGenerator.java b/core/src/io/anuke/mindustry/world/blocks/types/production/ItemPowerGenerator.java index 8a841c25a2..012f685866 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/production/ItemPowerGenerator.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/production/ItemPowerGenerator.java @@ -7,7 +7,6 @@ import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.resource.Item; import io.anuke.mindustry.world.Tile; import io.anuke.ucore.core.Effects; -import io.anuke.ucore.core.Timers; public class ItemPowerGenerator extends Generator{ public int itemCapacity = 20; @@ -42,9 +41,8 @@ public class ItemPowerGenerator extends Generator{ entity.removeItem(generateItem, 1); } - if(Timers.get(tile, "power", powerTime)){ - distributePower(tile); - } + distributePower(tile); + } } diff --git a/core/src/io/anuke/mindustry/world/blocks/types/production/LiquidItemPowerGenerator.java b/core/src/io/anuke/mindustry/world/blocks/types/production/LiquidItemPowerGenerator.java index 72325a1b8c..856ac110d2 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/production/LiquidItemPowerGenerator.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/production/LiquidItemPowerGenerator.java @@ -37,6 +37,7 @@ public class LiquidItemPowerGenerator extends LiquidPowerGenerator{ //TODO don't generate when full of energy if(entity.liquidAmount >= inputLiquid && entity.hasItem(generateItem, itemInput) + && entity.power + generatePower < powerCapacity && Timers.get(tile, "consume", generateTime)){ entity.liquidAmount -= inputLiquid; entity.power += generatePower; @@ -45,9 +46,8 @@ public class LiquidItemPowerGenerator extends LiquidPowerGenerator{ Effects.effect(generateEffect, tile.worldx() + offset.x, tile.worldy() + offset.y); } - if(Timers.get(tile, "generate", generateTime)){ - distributePower(tile); - } + distributePower(tile); + } @Override diff --git a/core/src/io/anuke/mindustry/world/blocks/types/production/LiquidPowerGenerator.java b/core/src/io/anuke/mindustry/world/blocks/types/production/LiquidPowerGenerator.java index 2f00d01646..cbb97f1fd4 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/production/LiquidPowerGenerator.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/production/LiquidPowerGenerator.java @@ -49,7 +49,8 @@ public class LiquidPowerGenerator extends Generator implements LiquidAcceptor{ LiquidPowerEntity entity = tile.entity(); //TODO don't generate when full of energy - if(entity.liquidAmount >= inputLiquid && Timers.get(tile, "consume", generateTime)){ + if(entity.liquidAmount >= inputLiquid && entity.power + generatePower < powerCapacity + && Timers.get(tile, "consume", generateTime)){ entity.liquidAmount -= inputLiquid; entity.power += generatePower; @@ -57,9 +58,8 @@ public class LiquidPowerGenerator extends Generator implements LiquidAcceptor{ Effects.effect(generateEffect, tile.worldx() + offset.x, tile.worldy() + offset.y); } - if(Timers.get(tile, "consume", generateTime)){ - distributePower(tile); - } + distributePower(tile); + } @Override