Improved block bar config
This commit is contained in:
@@ -6,7 +6,7 @@ import io.anuke.arc.Graphics.Cursor.SystemCursor;
|
||||
import io.anuke.arc.collection.Array;
|
||||
import io.anuke.arc.collection.EnumSet;
|
||||
import io.anuke.arc.function.BooleanProvider;
|
||||
import io.anuke.arc.function.Supplier;
|
||||
import io.anuke.arc.function.Function;
|
||||
import io.anuke.arc.graphics.Color;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.graphics.g2d.Lines;
|
||||
@@ -292,6 +292,7 @@ public class Block extends BlockStorage{
|
||||
}
|
||||
|
||||
setStats();
|
||||
setBars();
|
||||
|
||||
consumes.checkRequired(this);
|
||||
|
||||
@@ -362,6 +363,25 @@ public class Block extends BlockStorage{
|
||||
if(hasItems) stats.add(BlockStat.itemCapacity, itemCapacity, StatUnit.items);
|
||||
}
|
||||
|
||||
public void setBars(){
|
||||
bars.add("health", entity -> new Bar("blocks.health", Pal.health, entity::healthf).blink(Color.WHITE));
|
||||
|
||||
if(hasLiquids){
|
||||
Function<TileEntity, Liquid> current;
|
||||
if(consumes.has(ConsumeLiquid.class)){
|
||||
Liquid liquid = consumes.liquid();
|
||||
current = entity -> liquid;
|
||||
}else{
|
||||
current = entity -> entity.liquids.current();
|
||||
}
|
||||
bars.add("liquid", entity -> new Bar(() -> entity.liquids.get(current.get(entity)) <= 0.001f ? Core.bundle.get("blocks.liquid") : current.get(entity).localizedName(), () -> current.get(entity).color, () -> entity.liquids.get(current.get(entity)) / liquidCapacity));
|
||||
}
|
||||
|
||||
if(hasPower && consumes.has(ConsumePower.class)){
|
||||
bars.add("power", entity -> new Bar(consumes.get(ConsumePower.class).isBuffered ? "blocks.power" : "blocks.power.satisfaction", Pal.power, () -> entity.power.satisfaction));
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isSolidFor(Tile tile){
|
||||
return false;
|
||||
}
|
||||
@@ -479,28 +499,12 @@ public class Block extends BlockStorage{
|
||||
}
|
||||
}
|
||||
|
||||
public void displayBars(Tile tile, Table bars){
|
||||
TileEntity entity = tile.entity;
|
||||
|
||||
bars.add(new Bar("blocks.health", Pal.health, entity::healthf).blink(Color.WHITE));
|
||||
bars.row();
|
||||
|
||||
if(entity.liquids != null){
|
||||
Supplier<Liquid> current;
|
||||
if(consumes.has(ConsumeLiquid.class)){
|
||||
Liquid liquid = consumes.liquid();
|
||||
current = () -> liquid;
|
||||
}else{
|
||||
current = () -> entity.liquids.current();
|
||||
}
|
||||
bars.add(new Bar(() -> entity.liquids.get(current.get()) <= 0.001f ? Core.bundle.get("blocks.liquid") : current.get().localizedName(), () -> current.get().color, () -> entity.liquids.get(current.get()) / liquidCapacity)).growX();
|
||||
bars.row();
|
||||
public void displayBars(Tile tile, Table table){
|
||||
for(Function<TileEntity, Bar> bar : bars.list()){
|
||||
table.add(bar.get(tile.entity)).growX();
|
||||
table.row();
|
||||
}
|
||||
|
||||
if(entity.power != null && consumes.has(ConsumePower.class)){
|
||||
bars.add(new Bar(consumes.get(ConsumePower.class).isBuffered ? "blocks.power" : "blocks.power.satisfaction", Pal.power, () -> entity.power.satisfaction)).growX();
|
||||
bars.row();
|
||||
}
|
||||
}
|
||||
|
||||
public TextureRegion icon(Icon icon){
|
||||
|
||||
@@ -16,6 +16,7 @@ import io.anuke.mindustry.type.Liquid;
|
||||
import io.anuke.mindustry.world.consumers.ConsumeItem;
|
||||
import io.anuke.mindustry.world.consumers.ConsumeLiquid;
|
||||
import io.anuke.mindustry.world.consumers.Consumers;
|
||||
import io.anuke.mindustry.world.meta.BlockBars;
|
||||
import io.anuke.mindustry.world.meta.BlockStats;
|
||||
import io.anuke.mindustry.world.meta.Producers;
|
||||
|
||||
@@ -34,6 +35,7 @@ public abstract class BlockStorage extends UnlockableContent{
|
||||
public float liquidFlowFactor = 4.9f;
|
||||
|
||||
public final BlockStats stats = new BlockStats();
|
||||
public final BlockBars bars = new BlockBars();
|
||||
public final Consumers consumes = new Consumers();
|
||||
public final Producers produces = new Producers();
|
||||
|
||||
|
||||
22
core/src/io/anuke/mindustry/world/meta/BlockBars.java
Normal file
22
core/src/io/anuke/mindustry/world/meta/BlockBars.java
Normal file
@@ -0,0 +1,22 @@
|
||||
package io.anuke.mindustry.world.meta;
|
||||
|
||||
import io.anuke.arc.collection.OrderedMap;
|
||||
import io.anuke.arc.function.Function;
|
||||
import io.anuke.mindustry.entities.type.TileEntity;
|
||||
import io.anuke.mindustry.ui.Bar;
|
||||
|
||||
public class BlockBars{
|
||||
private OrderedMap<String, Function<TileEntity, Bar>> bars = new OrderedMap<>();
|
||||
|
||||
public void add(String name,Function<TileEntity, Bar> sup){
|
||||
bars.put(name, sup);
|
||||
}
|
||||
|
||||
public void remove(String name){
|
||||
bars.remove(name);
|
||||
}
|
||||
|
||||
public Iterable<Function<TileEntity, Bar>> list(){
|
||||
return bars.values();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user