From 7292479d9ce442f2fc7793fb2b3f1570a57e9929 Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 30 Jul 2019 00:44:41 -0400 Subject: [PATCH] Added turret ammo deficiency display --- core/assets/maps/groundZero.msav | Bin 8674 -> 8687 bytes core/src/io/anuke/mindustry/world/Block.java | 1 + .../blocks/defense/turrets/ItemTurret.java | 36 ++++++++++++------ .../blocks/defense/turrets/LiquidTurret.java | 35 +++++++++++------ .../world/consumers/ConsumeItemFilter.java | 4 +- 5 files changed, 50 insertions(+), 26 deletions(-) diff --git a/core/assets/maps/groundZero.msav b/core/assets/maps/groundZero.msav index 73e52f5b18d30c02e8eab5b00f4dc3095b911c42..75232a33f3af95a932d40feaf5c8f13d3f6547c6 100644 GIT binary patch literal 8687 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 AivR!s 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); }