multi-liquids consumers

This commit is contained in:
Anuken
2021-11-14 23:30:58 -05:00
parent 486622e3e4
commit 7acf53c509
15 changed files with 134 additions and 98 deletions
@@ -130,7 +130,7 @@ public class ForceProjector extends Block{
@Override
public void updateTile(){
boolean phaseValid = consumes.get(ConsumeType.item).valid(this);
boolean phaseValid = consumes.has(ConsumeType.item) && consumes.get(ConsumeType.item).valid(this);
phaseHeat = Mathf.lerpDelta(phaseHeat, Mathf.num(phaseValid), 0.1f);
@@ -56,18 +56,18 @@ public class ItemTurret extends Turret{
public void init(){
consumes.add(new ConsumeItemFilter(i -> ammoTypes.containsKey(i)){
@Override
public void build(Building tile, Table table){
public void build(Building build, Table table){
MultiReqImage image = new MultiReqImage();
content.items().each(i -> filter.get(i) && i.unlockedNow(), item -> image.add(new ReqImage(new ItemImage(item.uiIcon),
() -> tile instanceof ItemTurretBuild it && !it.ammo.isEmpty() && ((ItemEntry)it.ammo.peek()).item == item)));
() -> build instanceof ItemTurretBuild it && !it.ammo.isEmpty() && ((ItemEntry)it.ammo.peek()).item == item)));
table.add(image).size(8 * 4);
}
@Override
public boolean valid(Building entity){
public boolean valid(Building build){
//valid when there's any ammo in the turret
return entity instanceof ItemTurretBuild it && !it.ammo.isEmpty();
return build instanceof ItemTurretBuild it && !it.ammo.isEmpty();
}
@Override
@@ -48,12 +48,12 @@ public class LiquidTurret extends Turret{
public void init(){
consumes.add(new ConsumeLiquidFilter(i -> ammoTypes.containsKey(i), 1f){
@Override
public boolean valid(Building entity){
return entity.liquids.total() > 0.001f;
public boolean valid(Building build){
return build.liquids.total() > 0.001f;
}
@Override
public void update(Building entity){
public void update(Building build){
}
@@ -345,9 +345,9 @@ public class PowerGraph{
}
}
private boolean otherConsumersAreValid(Building tile, Consume consumePower){
for(Consume cons : tile.block.consumes.all()){
if(cons != consumePower && !cons.isOptional() && !cons.valid(tile)){
private boolean otherConsumersAreValid(Building build, Consume consumePower){
for(Consume cons : build.block.consumes.all()){
if(cons != consumePower && !cons.isOptional() && !cons.valid(build)){
return false;
}
}
@@ -70,7 +70,7 @@ public class GenericCrafter extends Block{
super.setBars();
//set up liquid bars for multiple liquid outputs; TODO multiple inputs not yet supported due to inherent complexity
//TODO this will currently screw up input display if input liquids are available
//TODO this will currently screw up input display if input liquids are available - no good way to fix that yet
if(outputLiquids != null && outputLiquids.length > 1){
bars.remove("liquid");