diff --git a/core/assets/maps/groundZero.msav b/core/assets/maps/groundZero.msav index 73e52f5b18..75232a33f3 100644 Binary files a/core/assets/maps/groundZero.msav and b/core/assets/maps/groundZero.msav differ diff --git a/core/src/io/anuke/mindustry/world/Block.java b/core/src/io/anuke/mindustry/world/Block.java index b8a50b8243..1963f72871 100644 --- a/core/src/io/anuke/mindustry/world/Block.java +++ b/core/src/io/anuke/mindustry/world/Block.java @@ -584,6 +584,7 @@ public class Block extends BlockStorage{ public void displayConsumption(Tile tile, Table table){ table.left(); for(Consume cons : consumes.all()){ + if(cons.isOptional()) continue; cons.build(tile, table); } } diff --git a/core/src/io/anuke/mindustry/world/blocks/defense/turrets/ItemTurret.java b/core/src/io/anuke/mindustry/world/blocks/defense/turrets/ItemTurret.java index 86ea2257a7..6ffc23dc59 100644 --- a/core/src/io/anuke/mindustry/world/blocks/defense/turrets/ItemTurret.java +++ b/core/src/io/anuke/mindustry/world/blocks/defense/turrets/ItemTurret.java @@ -1,18 +1,18 @@ package io.anuke.mindustry.world.blocks.defense.turrets; -import io.anuke.arc.collection.ObjectMap; -import io.anuke.arc.collection.OrderedMap; -import io.anuke.arc.scene.ui.layout.Table; -import io.anuke.mindustry.Vars; -import io.anuke.mindustry.entities.bullet.BulletType; -import io.anuke.mindustry.entities.type.TileEntity; +import io.anuke.arc.collection.*; +import io.anuke.arc.scene.ui.layout.*; +import io.anuke.mindustry.*; +import io.anuke.mindustry.entities.bullet.*; import io.anuke.mindustry.entities.type.Unit; -import io.anuke.mindustry.graphics.Pal; -import io.anuke.mindustry.type.Item; -import io.anuke.mindustry.ui.Bar; -import io.anuke.mindustry.world.Tile; -import io.anuke.mindustry.world.meta.BlockStat; -import io.anuke.mindustry.world.meta.values.AmmoListValue; +import io.anuke.mindustry.entities.type.*; +import io.anuke.mindustry.graphics.*; +import io.anuke.mindustry.type.*; +import io.anuke.mindustry.ui.*; +import io.anuke.mindustry.world.*; +import io.anuke.mindustry.world.consumers.*; +import io.anuke.mindustry.world.meta.*; +import io.anuke.mindustry.world.meta.values.*; import java.io.*; @@ -36,6 +36,18 @@ public class ItemTurret extends CooledTurret{ stats.remove(BlockStat.itemCapacity); stats.add(BlockStat.ammo, new AmmoListValue<>(ammo)); + consumes.add(new ConsumeItemFilter(i -> ammo.containsKey(i)){ + @Override + public boolean valid(TileEntity entity){ + //valid when there's any ammo in the turret + return !((ItemTurretEntity)entity).ammo.isEmpty(); + } + + @Override + public void display(BlockStats stats){ + //don't display + } + }); } @Override diff --git a/core/src/io/anuke/mindustry/world/blocks/defense/turrets/LiquidTurret.java b/core/src/io/anuke/mindustry/world/blocks/defense/turrets/LiquidTurret.java index 48e3f52c77..6973edfd2d 100644 --- a/core/src/io/anuke/mindustry/world/blocks/defense/turrets/LiquidTurret.java +++ b/core/src/io/anuke/mindustry/world/blocks/defense/turrets/LiquidTurret.java @@ -1,18 +1,18 @@ package io.anuke.mindustry.world.blocks.defense.turrets; -import io.anuke.arc.collection.ObjectMap; -import io.anuke.arc.collection.OrderedMap; -import io.anuke.mindustry.entities.Effects; -import io.anuke.mindustry.entities.bullet.BulletType; -import io.anuke.mindustry.entities.effect.Fire; -import io.anuke.mindustry.type.Item; -import io.anuke.mindustry.type.Liquid; -import io.anuke.mindustry.world.Tile; -import io.anuke.mindustry.world.meta.BlockStat; -import io.anuke.mindustry.world.meta.values.AmmoListValue; +import io.anuke.arc.collection.*; +import io.anuke.mindustry.entities.*; +import io.anuke.mindustry.entities.bullet.*; +import io.anuke.mindustry.entities.effect.*; +import io.anuke.mindustry.entities.type.*; +import io.anuke.mindustry.type.*; +import io.anuke.mindustry.world.*; +import io.anuke.mindustry.world.blocks.defense.turrets.ItemTurret.*; +import io.anuke.mindustry.world.consumers.*; +import io.anuke.mindustry.world.meta.*; +import io.anuke.mindustry.world.meta.values.*; -import static io.anuke.mindustry.Vars.tilesize; -import static io.anuke.mindustry.Vars.world; +import static io.anuke.mindustry.Vars.*; public abstract class LiquidTurret extends Turret{ protected ObjectMap ammo = new ObjectMap<>(); @@ -32,6 +32,17 @@ public abstract class LiquidTurret extends Turret{ super.setStats(); stats.add(BlockStat.ammo, new AmmoListValue<>(ammo)); + consumes.add(new ConsumeLiquidFilter(i -> ammo.containsKey(i), 1f){ + @Override + public boolean valid(TileEntity entity){ + return !((TurretEntity)entity).ammo.isEmpty(); + } + + @Override + public void display(BlockStats stats){ + + } + }); } @Override diff --git a/core/src/io/anuke/mindustry/world/consumers/ConsumeItemFilter.java b/core/src/io/anuke/mindustry/world/consumers/ConsumeItemFilter.java index fe9e0a17d4..81503037f0 100644 --- a/core/src/io/anuke/mindustry/world/consumers/ConsumeItemFilter.java +++ b/core/src/io/anuke/mindustry/world/consumers/ConsumeItemFilter.java @@ -11,7 +11,7 @@ import io.anuke.mindustry.world.meta.BlockStat; import io.anuke.mindustry.world.meta.BlockStats; import io.anuke.mindustry.world.meta.values.ItemFilterValue; -import static io.anuke.mindustry.Vars.content; +import static io.anuke.mindustry.Vars.*; public class ConsumeItemFilter extends Consume{ public final Predicate filter; @@ -33,7 +33,7 @@ public class ConsumeItemFilter extends Consume{ @Override public void build(Tile tile, Table table){ MultiReqImage image = new MultiReqImage(); - content.items().each(filter, item -> image.add(new ReqImage(new ItemImage(item.icon(Icon.large), 1), () -> tile.entity != null && tile.entity.items != null && tile.entity.items.has(item)))); + content.items().each(i -> filter.test(i) && (!world.isZone() || data.isUnlocked(i)), item -> image.add(new ReqImage(new ItemImage(item.icon(Icon.large), 1), () -> tile.entity != null && tile.entity.items != null && tile.entity.items.has(item)))); table.add(image).size(8 * 4); }