ConsumeLiquidsDynamic (#8892)
* ConsumeLiquidsDynamic * imports didn't optimize * wording * nevermind, no idea
This commit is contained in:
@@ -441,6 +441,7 @@ public class ClassMap{
|
|||||||
classes.put("ConsumeLiquidFilter", mindustry.world.consumers.ConsumeLiquidFilter.class);
|
classes.put("ConsumeLiquidFilter", mindustry.world.consumers.ConsumeLiquidFilter.class);
|
||||||
classes.put("ConsumeLiquidFlammable", mindustry.world.consumers.ConsumeLiquidFlammable.class);
|
classes.put("ConsumeLiquidFlammable", mindustry.world.consumers.ConsumeLiquidFlammable.class);
|
||||||
classes.put("ConsumeLiquids", mindustry.world.consumers.ConsumeLiquids.class);
|
classes.put("ConsumeLiquids", mindustry.world.consumers.ConsumeLiquids.class);
|
||||||
|
classes.put("ConsumeLiquidsDynamic", mindustry.world.consumers.ConsumeLiquidsDynamic.class);
|
||||||
classes.put("ConsumePayloadDynamic", mindustry.world.consumers.ConsumePayloadDynamic.class);
|
classes.put("ConsumePayloadDynamic", mindustry.world.consumers.ConsumePayloadDynamic.class);
|
||||||
classes.put("ConsumePayloadFilter", mindustry.world.consumers.ConsumePayloadFilter.class);
|
classes.put("ConsumePayloadFilter", mindustry.world.consumers.ConsumePayloadFilter.class);
|
||||||
classes.put("ConsumePayloads", mindustry.world.consumers.ConsumePayloads.class);
|
classes.put("ConsumePayloads", mindustry.world.consumers.ConsumePayloads.class);
|
||||||
|
|||||||
@@ -0,0 +1,69 @@
|
|||||||
|
package mindustry.world.consumers;
|
||||||
|
|
||||||
|
import arc.func.Func;
|
||||||
|
import arc.scene.ui.layout.Table;
|
||||||
|
import mindustry.Vars;
|
||||||
|
import mindustry.gen.Building;
|
||||||
|
import mindustry.type.LiquidStack;
|
||||||
|
import mindustry.ui.ReqImage;
|
||||||
|
import mindustry.world.Block;
|
||||||
|
|
||||||
|
public class ConsumeLiquidsDynamic extends Consume{
|
||||||
|
public final Func<Building, LiquidStack[]> liquids;
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
public <T extends Building> ConsumeLiquidsDynamic(Func<T, LiquidStack[]> liquids){
|
||||||
|
this.liquids = (Func<Building, LiquidStack[]>)liquids;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void apply(Block block){
|
||||||
|
block.hasLiquids = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void build(Building build, Table table){
|
||||||
|
LiquidStack[][] current = {liquids.get(build)};
|
||||||
|
|
||||||
|
table.table(cont -> {
|
||||||
|
table.update(() -> {
|
||||||
|
if(current[0] != liquids.get(build)){
|
||||||
|
rebuild(build, cont);
|
||||||
|
current[0] = liquids.get(build);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
rebuild(build, cont);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void rebuild(Building build, Table table){
|
||||||
|
table.clear();
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
for(LiquidStack stack : liquids.get(build)){
|
||||||
|
table.add(new ReqImage(stack.liquid.uiIcon,
|
||||||
|
() -> build.liquids != null && build.liquids.get(stack.liquid) > 0)).size(Vars.iconMed).padRight(8);
|
||||||
|
if(++i % 4 == 0) table.row();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void update(Building build){
|
||||||
|
float mult = multiplier.get(build);
|
||||||
|
for(LiquidStack stack : liquids.get(build)){
|
||||||
|
build.liquids.remove(stack.liquid, stack.amount * build.edelta() * mult);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float efficiency(Building build){
|
||||||
|
float ed = build.edelta();
|
||||||
|
if(ed <= 0.00000001f) return 0f;
|
||||||
|
float min = 1f;
|
||||||
|
for(LiquidStack stack : liquids.get(build)){
|
||||||
|
min = Math.min(build.liquids.get(stack.liquid) / (stack.amount * ed * multiplier.get(build)), min);
|
||||||
|
}
|
||||||
|
return min;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user