Add consumers for other liquid fields
Temperature, heat capacity, viscosity, and explosiveness
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
package mindustry.world.consumers;
|
||||
|
||||
import mindustry.gen.*;
|
||||
import mindustry.type.*;
|
||||
import mindustry.world.meta.*;
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package mindustry.world.consumers;
|
||||
|
||||
import mindustry.gen.*;
|
||||
import mindustry.type.*;
|
||||
import mindustry.world.meta.*;
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package mindustry.world.consumers;
|
||||
|
||||
import mindustry.gen.*;
|
||||
import mindustry.type.*;
|
||||
import mindustry.world.meta.*;
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package mindustry.world.consumers;
|
||||
|
||||
import mindustry.gen.*;
|
||||
import mindustry.type.*;
|
||||
import mindustry.world.meta.*;
|
||||
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
package mindustry.world.consumers;
|
||||
|
||||
import mindustry.type.*;
|
||||
import mindustry.world.meta.*;
|
||||
|
||||
public class ConsumeLiquidExplosive extends ConsumeLiquidFilter{
|
||||
public float minExplosiveness;
|
||||
|
||||
public ConsumeLiquidExplosive(float minExplosiveness, float amount){
|
||||
this.amount = amount;
|
||||
this.minExplosiveness = minExplosiveness;
|
||||
this.filter = liquid -> liquid.heatCapacity >= this.minExplosiveness;
|
||||
}
|
||||
|
||||
public ConsumeLiquidExplosive(float amount){
|
||||
this(0.2f, amount);
|
||||
}
|
||||
|
||||
public ConsumeLiquidExplosive(){
|
||||
this(0.2f);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void display(Stats stats){
|
||||
stats.add(booster ? Stat.booster : Stat.input, StatValues.liquidEffMultiplier(l -> l.explosiveness, amount * 60f, filter));
|
||||
}
|
||||
|
||||
@Override
|
||||
public float liquidEfficiencyMultiplier(Liquid liquid){
|
||||
return liquid.explosiveness;
|
||||
}
|
||||
}
|
||||
@@ -53,7 +53,13 @@ public class ConsumeLiquidFilter extends ConsumeLiquidBase{
|
||||
if(ed <= 0.00000001f) return 0f;
|
||||
return liq != null ? Math.min(build.liquids.get(liq) / (amount * ed * multiplier.get(build)), 1f) : 0f;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public float efficiencyMultiplier(Building build){
|
||||
var liq = getConsumed(build);
|
||||
return liq == null ? 0 : liquidEfficiencyMultiplier(liq);
|
||||
}
|
||||
|
||||
public @Nullable Liquid getConsumed(Building build){
|
||||
if(filter.get(build.liquids.current()) && build.liquids.currentAmount() > 0){
|
||||
return build.liquids.current();
|
||||
@@ -74,4 +80,8 @@ public class ConsumeLiquidFilter extends ConsumeLiquidBase{
|
||||
public void display(Stats stats){
|
||||
stats.add(booster ? Stat.booster : Stat.input, StatValues.liquids(filter, amount * 60f, true));
|
||||
}
|
||||
|
||||
public float liquidEfficiencyMultiplier(Liquid liquid){
|
||||
return 1f;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package mindustry.world.consumers;
|
||||
|
||||
import mindustry.gen.*;
|
||||
import mindustry.type.*;
|
||||
import mindustry.world.meta.*;
|
||||
|
||||
public class ConsumeLiquidFlammable extends ConsumeLiquidFilter{
|
||||
@@ -20,14 +20,13 @@ public class ConsumeLiquidFlammable extends ConsumeLiquidFilter{
|
||||
this(0.2f);
|
||||
}
|
||||
|
||||
@Override
|
||||
public float efficiencyMultiplier(Building build){
|
||||
var liq = getConsumed(build);
|
||||
return liq == null ? 0f : liq.flammability;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void display(Stats stats){
|
||||
stats.add(booster ? Stat.booster : Stat.input, StatValues.liquidEffMultiplier(l -> l.flammability, amount * 60f, filter));
|
||||
}
|
||||
|
||||
@Override
|
||||
public float liquidEfficiencyMultiplier(Liquid liquid){
|
||||
return liquid.flammability;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
package mindustry.world.consumers;
|
||||
|
||||
import mindustry.type.*;
|
||||
import mindustry.world.meta.*;
|
||||
|
||||
public class ConsumeLiquidHeatCapacity extends ConsumeLiquidFilter{
|
||||
public float minHeatCapacity;
|
||||
|
||||
public ConsumeLiquidHeatCapacity(float minHeatCapacity, float amount){
|
||||
this.amount = amount;
|
||||
this.minHeatCapacity = minHeatCapacity;
|
||||
this.filter = liquid -> liquid.heatCapacity >= this.minHeatCapacity;
|
||||
}
|
||||
|
||||
public ConsumeLiquidHeatCapacity(float amount){
|
||||
this(0.2f, amount);
|
||||
}
|
||||
|
||||
public ConsumeLiquidHeatCapacity(){
|
||||
this(0.2f);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void display(Stats stats){
|
||||
stats.add(booster ? Stat.booster : Stat.input, StatValues.liquidEffMultiplier(l -> l.heatCapacity, amount * 60f, filter));
|
||||
}
|
||||
|
||||
@Override
|
||||
public float liquidEfficiencyMultiplier(Liquid liquid){
|
||||
return liquid.heatCapacity;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package mindustry.world.consumers;
|
||||
|
||||
import mindustry.type.*;
|
||||
import mindustry.world.meta.*;
|
||||
|
||||
public class ConsumeLiquidTemperature extends ConsumeLiquidFilter{
|
||||
public float minTemperature;
|
||||
|
||||
public ConsumeLiquidTemperature(float minTemperature, float amount){
|
||||
this.amount = amount;
|
||||
this.minTemperature = minTemperature;
|
||||
this.filter = liquid -> liquid.temperature >= this.minTemperature;
|
||||
}
|
||||
|
||||
public ConsumeLiquidTemperature(float amount){
|
||||
this(0.2f, amount);
|
||||
}
|
||||
|
||||
public ConsumeLiquidTemperature(){
|
||||
this(0.2f);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void display(Stats stats){
|
||||
stats.add(booster ? Stat.booster : Stat.input, StatValues.liquidEffMultiplier(l -> l.temperature, amount * 60f, filter));
|
||||
}
|
||||
|
||||
@Override
|
||||
public float liquidEfficiencyMultiplier(Liquid liquid){
|
||||
return liquid.temperature;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package mindustry.world.consumers;
|
||||
|
||||
import mindustry.type.*;
|
||||
import mindustry.world.meta.*;
|
||||
|
||||
public class ConsumeLiquidViscosity extends ConsumeLiquidFilter{
|
||||
public float minViscosity;
|
||||
|
||||
public ConsumeLiquidViscosity(float minViscosity, float amount){
|
||||
this.amount = amount;
|
||||
this.minViscosity = minViscosity;
|
||||
this.filter = liquid -> liquid.viscosity >= this.minViscosity;
|
||||
}
|
||||
|
||||
public ConsumeLiquidViscosity(float amount){
|
||||
this(0.2f, amount);
|
||||
}
|
||||
|
||||
public ConsumeLiquidViscosity(){
|
||||
this(0.2f);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void display(Stats stats){
|
||||
stats.add(booster ? Stat.booster : Stat.input, StatValues.liquidEffMultiplier(l -> l.viscosity, amount * 60f, filter));
|
||||
}
|
||||
|
||||
@Override
|
||||
public float liquidEfficiencyMultiplier(Liquid liquid){
|
||||
return liquid.viscosity;
|
||||
}
|
||||
}
|
||||
@@ -1,12 +1,12 @@
|
||||
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;
|
||||
import arc.func.*;
|
||||
import arc.scene.ui.layout.*;
|
||||
import mindustry.*;
|
||||
import mindustry.gen.*;
|
||||
import mindustry.type.*;
|
||||
import mindustry.ui.*;
|
||||
import mindustry.world.*;
|
||||
|
||||
public class ConsumeLiquidsDynamic extends Consume{
|
||||
public final Func<Building, LiquidStack[]> liquids;
|
||||
|
||||
Reference in New Issue
Block a user