Merge branch 'MEEPofFaith-power-gen-stats'
This commit is contained in:
@@ -1047,6 +1047,7 @@ stat.buildspeedmultiplier = Build Speed Multiplier
|
|||||||
stat.reactive = Reacts
|
stat.reactive = Reacts
|
||||||
stat.immunities = Immunities
|
stat.immunities = Immunities
|
||||||
stat.healing = Healing
|
stat.healing = Healing
|
||||||
|
stat.efficiency = [stat]{0}% Efficiency
|
||||||
|
|
||||||
ability.forcefield = Force Field
|
ability.forcefield = Force Field
|
||||||
ability.forcefield.description = Projects a force shield that absorbs bullets
|
ability.forcefield.description = Projects a force shield that absorbs bullets
|
||||||
|
|||||||
@@ -83,7 +83,6 @@ public class ContentInfoDialog extends BaseDialog{
|
|||||||
value.display(inset);
|
value.display(inset);
|
||||||
inset.add().size(10f);
|
inset.add().size(10f);
|
||||||
}
|
}
|
||||||
|
|
||||||
}).fillX().padLeft(10);
|
}).fillX().padLeft(10);
|
||||||
table.row();
|
table.row();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -64,6 +64,7 @@ public class ConsumeGenerator extends PowerGenerator{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setStats(){
|
public void setStats(){
|
||||||
|
stats.timePeriod = itemDuration;
|
||||||
super.setStats();
|
super.setStats();
|
||||||
|
|
||||||
if(hasItems){
|
if(hasItems){
|
||||||
@@ -80,12 +81,14 @@ public class ConsumeGenerator extends PowerGenerator{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateEfficiencyMultiplier(){
|
public void updateEfficiencyMultiplier(){
|
||||||
|
efficiencyMultiplier = 1f;
|
||||||
if(filterItem != null){
|
if(filterItem != null){
|
||||||
float m = filterItem.efficiencyMultiplier(this);
|
float m = filterItem.efficiencyMultiplier(this);
|
||||||
if(m > 0) efficiencyMultiplier = m;
|
if(m > 0) efficiencyMultiplier *= m;
|
||||||
}else if(filterLiquid != null){
|
}
|
||||||
|
if(filterLiquid != null){
|
||||||
float m = filterLiquid.efficiencyMultiplier(this);
|
float m = filterLiquid.efficiencyMultiplier(this);
|
||||||
if(m > 0) efficiencyMultiplier = m;
|
if(m > 0) efficiencyMultiplier *= m;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
package mindustry.world.consumers;
|
package mindustry.world.consumers;
|
||||||
|
|
||||||
import mindustry.gen.*;
|
import mindustry.type.*;
|
||||||
|
|
||||||
/** For mods. I don't use this (yet). */
|
/** For mods. I don't use this (yet). */
|
||||||
public class ConsumeItemCharged extends ConsumeItemFilter{
|
public class ConsumeItemCharged extends ConsumeItemEfficiency{
|
||||||
public float minCharge;
|
public float minCharge;
|
||||||
|
|
||||||
public ConsumeItemCharged(float minCharge){
|
public ConsumeItemCharged(float minCharge){
|
||||||
@@ -16,8 +16,7 @@ public class ConsumeItemCharged extends ConsumeItemFilter{
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public float efficiencyMultiplier(Building build){
|
public float itemEfficiencyMultiplier(Item item){
|
||||||
var item = getConsumed(build);
|
return item.charge;
|
||||||
return item == null ? 0f : item.charge;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
package mindustry.world.consumers;
|
||||||
|
|
||||||
|
import arc.func.*;
|
||||||
|
import mindustry.type.*;
|
||||||
|
import mindustry.world.meta.*;
|
||||||
|
|
||||||
|
public class ConsumeItemEfficiency extends ConsumeItemFilter{
|
||||||
|
|
||||||
|
public ConsumeItemEfficiency(Boolf<Item> item){
|
||||||
|
super(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ConsumeItemEfficiency(){
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void display(Stats stats){
|
||||||
|
stats.add(booster ? Stat.booster : Stat.input, StatValues.itemEffMultiplier(this::itemEfficiencyMultiplier, stats.timePeriod, filter));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
package mindustry.world.consumers;
|
package mindustry.world.consumers;
|
||||||
|
|
||||||
import mindustry.gen.*;
|
import mindustry.type.*;
|
||||||
|
|
||||||
public class ConsumeItemExplosive extends ConsumeItemFilter{
|
public class ConsumeItemExplosive extends ConsumeItemEfficiency{
|
||||||
public float minExplosiveness;
|
public float minExplosiveness;
|
||||||
|
|
||||||
public ConsumeItemExplosive(float minCharge){
|
public ConsumeItemExplosive(float minCharge){
|
||||||
@@ -15,8 +15,7 @@ public class ConsumeItemExplosive extends ConsumeItemFilter{
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public float efficiencyMultiplier(Building build){
|
public float itemEfficiencyMultiplier(Item item){
|
||||||
var item = getConsumed(build);
|
return item.explosiveness;
|
||||||
return item == null ? 0f : item.explosiveness;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -66,6 +66,16 @@ public class ConsumeItemFilter extends Consume{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void display(Stats stats){
|
public void display(Stats stats){
|
||||||
stats.add(booster ? Stat.booster : Stat.input, stats.timePeriod < 0 ? StatValues.items(filter) : StatValues.items(stats.timePeriod, filter));
|
stats.add(booster ? Stat.booster : Stat.input, StatValues.items(stats.timePeriod, filter));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float efficiencyMultiplier(Building build){
|
||||||
|
var item = getConsumed(build);
|
||||||
|
return item == null ? 0f : itemEfficiencyMultiplier(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
public float itemEfficiencyMultiplier(Item item){
|
||||||
|
return 1f;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package mindustry.world.consumers;
|
package mindustry.world.consumers;
|
||||||
|
|
||||||
import mindustry.gen.*;
|
import mindustry.type.*;
|
||||||
|
|
||||||
public class ConsumeItemFlammable extends ConsumeItemFilter{
|
public class ConsumeItemFlammable extends ConsumeItemEfficiency{
|
||||||
public float minFlammability;
|
public float minFlammability;
|
||||||
|
|
||||||
public ConsumeItemFlammable(float minFlammability){
|
public ConsumeItemFlammable(float minFlammability){
|
||||||
@@ -15,8 +15,7 @@ public class ConsumeItemFlammable extends ConsumeItemFilter{
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public float efficiencyMultiplier(Building build){
|
public float itemEfficiencyMultiplier(Item item){
|
||||||
var item = getConsumed(build);
|
return item.flammability;
|
||||||
return item == null ? 0f : item.flammability;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package mindustry.world.consumers;
|
package mindustry.world.consumers;
|
||||||
|
|
||||||
import mindustry.gen.*;
|
import mindustry.type.*;
|
||||||
|
|
||||||
public class ConsumeItemRadioactive extends ConsumeItemFilter{
|
public class ConsumeItemRadioactive extends ConsumeItemEfficiency{
|
||||||
public float minRadioactivity;
|
public float minRadioactivity;
|
||||||
|
|
||||||
public ConsumeItemRadioactive(float minRadioactivity){
|
public ConsumeItemRadioactive(float minRadioactivity){
|
||||||
@@ -15,8 +15,7 @@ public class ConsumeItemRadioactive extends ConsumeItemFilter{
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public float efficiencyMultiplier(Building build){
|
public float itemEfficiencyMultiplier(Item item){
|
||||||
var item = getConsumed(build);
|
return item.radioactivity;
|
||||||
return item == null ? 0f : item.radioactivity;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,6 +54,12 @@ public class ConsumeLiquidFilter extends ConsumeLiquidBase{
|
|||||||
return liq != null ? Math.min(build.liquids.get(liq) / (amount * ed * multiplier.get(build)), 1f) : 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){
|
public @Nullable Liquid getConsumed(Building build){
|
||||||
if(filter.get(build.liquids.current()) && build.liquids.currentAmount() > 0){
|
if(filter.get(build.liquids.current()) && build.liquids.currentAmount() > 0){
|
||||||
return build.liquids.current();
|
return build.liquids.current();
|
||||||
@@ -79,4 +85,8 @@ public class ConsumeLiquidFilter extends ConsumeLiquidBase{
|
|||||||
public boolean consumes(Liquid liquid){
|
public boolean consumes(Liquid liquid){
|
||||||
return filter.get(liquid);
|
return filter.get(liquid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public float liquidEfficiencyMultiplier(Liquid liquid){
|
||||||
|
return 1f;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package mindustry.world.consumers;
|
package mindustry.world.consumers;
|
||||||
|
|
||||||
import mindustry.gen.*;
|
import mindustry.type.*;
|
||||||
|
import mindustry.world.meta.*;
|
||||||
|
|
||||||
public class ConsumeLiquidFlammable extends ConsumeLiquidFilter{
|
public class ConsumeLiquidFlammable extends ConsumeLiquidFilter{
|
||||||
public float minFlammability;
|
public float minFlammability;
|
||||||
@@ -20,8 +21,12 @@ public class ConsumeLiquidFlammable extends ConsumeLiquidFilter{
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public float efficiencyMultiplier(Building build){
|
public void display(Stats stats){
|
||||||
var liq = getConsumed(build);
|
stats.add(booster ? Stat.booster : Stat.input, StatValues.liquidEffMultiplier(l -> l.flammability, amount * 60f, filter));
|
||||||
return liq == null ? 0f : liq.flammability;
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float liquidEfficiencyMultiplier(Liquid liquid){
|
||||||
|
return liquid.flammability;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
package mindustry.world.consumers;
|
package mindustry.world.consumers;
|
||||||
|
|
||||||
import arc.func.Func;
|
import arc.func.*;
|
||||||
import arc.scene.ui.layout.Table;
|
import arc.scene.ui.layout.*;
|
||||||
import mindustry.Vars;
|
import mindustry.*;
|
||||||
import mindustry.gen.Building;
|
import mindustry.gen.*;
|
||||||
import mindustry.type.LiquidStack;
|
import mindustry.type.*;
|
||||||
import mindustry.ui.ReqImage;
|
import mindustry.ui.*;
|
||||||
import mindustry.world.Block;
|
import mindustry.world.*;
|
||||||
|
|
||||||
public class ConsumeLiquidsDynamic extends Consume{
|
public class ConsumeLiquidsDynamic extends Consume{
|
||||||
public final Func<Building, LiquidStack[]> liquids;
|
public final Func<Building, LiquidStack[]> liquids;
|
||||||
|
|||||||
@@ -112,7 +112,7 @@ public class StatValues{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static StatValue liquid(Liquid liquid, float amount, boolean perSecond){
|
public static StatValue liquid(Liquid liquid, float amount, boolean perSecond){
|
||||||
return table -> table.add(displayLiquid(liquid, amount, perSecond));
|
return table -> table.add(displayLiquid(liquid, amount, perSecond)).left();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static StatValue liquids(Boolf<Liquid> filter, float amount, boolean perSecond){
|
public static StatValue liquids(Boolf<Liquid> filter, float amount, boolean perSecond){
|
||||||
@@ -459,6 +459,37 @@ public class StatValues{
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static StatValue itemEffMultiplier(Floatf<Item> efficiency, float timePeriod, Boolf<Item> filter){
|
||||||
|
return table -> {
|
||||||
|
table.getCells().peek().growX(); //Expand the spacer on the row above to push everything to the left
|
||||||
|
table.row();
|
||||||
|
table.table(c -> {
|
||||||
|
for(Item item : content.items().select(i -> filter.get(i) && i.unlockedNow() && !i.isHidden())){
|
||||||
|
c.table(Styles.grayPanel, b -> {
|
||||||
|
b.image(item.uiIcon).size(40).pad(10f).left().scaling(Scaling.fit);
|
||||||
|
b.add(item.localizedName + (timePeriod > 0 ? "\n[lightgray]" + Strings.autoFixed(1f / (timePeriod / 60f), 2) + StatUnit.perSecond.localized() : "")).left().grow();
|
||||||
|
b.add(Core.bundle.format("stat.efficiency", fixValue(efficiency.get(item) * 100f))).right().pad(10f).padRight(15f);
|
||||||
|
}).growX().pad(5).row();
|
||||||
|
}
|
||||||
|
}).growX().colspan(table.getColumns()).row();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public static StatValue liquidEffMultiplier(Floatf<Liquid> efficiency, float amount, Boolf<Liquid> filter){
|
||||||
|
return table -> {
|
||||||
|
table.getCells().peek().growX(); //Expand the spacer on the row above to push everything to the left
|
||||||
|
table.row();
|
||||||
|
table.table(c -> {
|
||||||
|
for(Liquid liquid : content.liquids().select(l -> filter.get(l) && l.unlockedNow() && !l.isHidden())){
|
||||||
|
c.table(Styles.grayPanel, b -> {
|
||||||
|
b.add(displayLiquid(liquid, amount, true)).pad(10f).left().grow();
|
||||||
|
b.add(Core.bundle.format("stat.efficiency", fixValue(efficiency.get(liquid) * 100f))).right().pad(10f).padRight(15f);
|
||||||
|
}).growX().pad(5).row();
|
||||||
|
}
|
||||||
|
}).growX().colspan(table.getColumns()).row();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
public static StatValue speedBoosters(String unit, float amount, float speed, boolean strength, Boolf<Liquid> filter){
|
public static StatValue speedBoosters(String unit, float amount, float speed, boolean strength, Boolf<Liquid> filter){
|
||||||
return table -> {
|
return table -> {
|
||||||
table.row();
|
table.row();
|
||||||
|
|||||||
Reference in New Issue
Block a user