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.Array;
|
||||||
import io.anuke.arc.collection.EnumSet;
|
import io.anuke.arc.collection.EnumSet;
|
||||||
import io.anuke.arc.function.BooleanProvider;
|
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.Color;
|
||||||
import io.anuke.arc.graphics.g2d.Draw;
|
import io.anuke.arc.graphics.g2d.Draw;
|
||||||
import io.anuke.arc.graphics.g2d.Lines;
|
import io.anuke.arc.graphics.g2d.Lines;
|
||||||
@@ -292,6 +292,7 @@ public class Block extends BlockStorage{
|
|||||||
}
|
}
|
||||||
|
|
||||||
setStats();
|
setStats();
|
||||||
|
setBars();
|
||||||
|
|
||||||
consumes.checkRequired(this);
|
consumes.checkRequired(this);
|
||||||
|
|
||||||
@@ -362,6 +363,25 @@ public class Block extends BlockStorage{
|
|||||||
if(hasItems) stats.add(BlockStat.itemCapacity, itemCapacity, StatUnit.items);
|
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){
|
public boolean isSolidFor(Tile tile){
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -479,28 +499,12 @@ public class Block extends BlockStorage{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void displayBars(Tile tile, Table bars){
|
public void displayBars(Tile tile, Table table){
|
||||||
TileEntity entity = tile.entity;
|
for(Function<TileEntity, Bar> bar : bars.list()){
|
||||||
|
table.add(bar.get(tile.entity)).growX();
|
||||||
bars.add(new Bar("blocks.health", Pal.health, entity::healthf).blink(Color.WHITE));
|
table.row();
|
||||||
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();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
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){
|
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.ConsumeItem;
|
||||||
import io.anuke.mindustry.world.consumers.ConsumeLiquid;
|
import io.anuke.mindustry.world.consumers.ConsumeLiquid;
|
||||||
import io.anuke.mindustry.world.consumers.Consumers;
|
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.BlockStats;
|
||||||
import io.anuke.mindustry.world.meta.Producers;
|
import io.anuke.mindustry.world.meta.Producers;
|
||||||
|
|
||||||
@@ -34,6 +35,7 @@ public abstract class BlockStorage extends UnlockableContent{
|
|||||||
public float liquidFlowFactor = 4.9f;
|
public float liquidFlowFactor = 4.9f;
|
||||||
|
|
||||||
public final BlockStats stats = new BlockStats();
|
public final BlockStats stats = new BlockStats();
|
||||||
|
public final BlockBars bars = new BlockBars();
|
||||||
public final Consumers consumes = new Consumers();
|
public final Consumers consumes = new Consumers();
|
||||||
public final Producers produces = new Producers();
|
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