Coolant system rework

This commit is contained in:
Anuken
2022-02-15 19:11:49 -05:00
parent 390c76a84f
commit 0102ade759
16 changed files with 86 additions and 71 deletions
@@ -43,6 +43,7 @@ public class ConsumeItemFilter extends Consume{
Item item = content.item(i);
if(build.items != null && build.items.has(item) && this.filter.get(item)){
build.items.remove(item, 1);
build.filterConsItem = item;
break;
}
}
@@ -9,7 +9,7 @@ import mindustry.world.meta.*;
import static mindustry.Vars.*;
//TODO replace with ConsumeLiquids
//TODO replace with ConsumeLiquids?
public class ConsumeLiquid extends ConsumeLiquidBase{
public final Liquid liquid;
@@ -3,6 +3,7 @@ package mindustry.world.consumers;
import arc.func.*;
import arc.scene.ui.layout.*;
import arc.struct.*;
import arc.util.*;
import mindustry.gen.*;
import mindustry.type.*;
import mindustry.ui.*;
@@ -34,19 +35,38 @@ public class ConsumeLiquidFilter extends ConsumeLiquidBase{
Seq<Liquid> list = content.liquids().select(l -> !l.isHidden() && filter.get(l));
MultiReqImage image = new MultiReqImage();
list.each(liquid -> image.add(new ReqImage(liquid.uiIcon, () ->
build.liquids != null && build.liquids.current() == liquid && build.liquids.get(liquid) >= Math.max(use(build), amount * build.delta()))));
build.liquids != null && build.liquids.get(liquid) >= Math.max(use(build), amount * build.delta()))));
table.add(image).size(8 * 4);
}
@Override
public void update(Building build){
build.liquids.remove(build.liquids.current(), use(build));
Liquid liq = match(build);
build.liquids.remove(liq, use(build));
build.filterConsLiquid = liq;
}
@Override
public boolean valid(Building build){
return build != null && build.liquids != null && filter.get(build.liquids.current()) && build.liquids.currentAmount() >= use(build);
var liq = match(build);
return liq != null && build.liquids.get(liq) >= use(build);
}
@Nullable Liquid match(Building build){
if(filter.get(build.liquids.current())){
return build.liquids.current();
}
var liqs = content.liquids();
for(int i = 0; i < liqs.size; i++){
var liq = liqs.get(i);
if(filter.get(liq) && build.liquids.get(liq) > 0){
return liq;
}
}
return null;
}
@Override