Better display for efficiency multiplier consumes

This commit is contained in:
MEEPofFaith
2024-03-10 12:47:30 -07:00
parent 9e503efd2f
commit 3e68285940
7 changed files with 68 additions and 1 deletions

View File

@@ -996,6 +996,7 @@ stat.buildspeedmultiplier = Build Speed Multiplier
stat.reactive = Reacts
stat.immunities = Immunities
stat.healing = Healing
stat.efficiency = [accent]{0}% Efficiency
ability.forcefield = Force Field
ability.repairfield = Repair Field

View File

@@ -1,6 +1,7 @@
package mindustry.world.consumers;
import mindustry.gen.*;
import mindustry.world.meta.*;
/** For mods. I don't use this (yet). */
public class ConsumeItemCharged extends ConsumeItemFilter{
@@ -20,4 +21,9 @@ public class ConsumeItemCharged extends ConsumeItemFilter{
var item = getConsumed(build);
return item == null ? 0f : item.charge;
}
@Override
public void display(Stats stats){
stats.add(booster ? Stat.booster : Stat.input, StatValues.itemEffMultiplier(i -> i.charge, filter));
}
}

View File

@@ -1,6 +1,7 @@
package mindustry.world.consumers;
import mindustry.gen.*;
import mindustry.world.meta.*;
public class ConsumeItemExplosive extends ConsumeItemFilter{
public float minExplosiveness;
@@ -19,4 +20,9 @@ public class ConsumeItemExplosive extends ConsumeItemFilter{
var item = getConsumed(build);
return item == null ? 0f : item.explosiveness;
}
@Override
public void display(Stats stats){
stats.add(booster ? Stat.booster : Stat.input, StatValues.itemEffMultiplier(i -> i.explosiveness, filter));
}
}

View File

@@ -1,6 +1,7 @@
package mindustry.world.consumers;
import mindustry.gen.*;
import mindustry.world.meta.*;
public class ConsumeItemFlammable extends ConsumeItemFilter{
public float minFlammability;
@@ -19,4 +20,9 @@ public class ConsumeItemFlammable extends ConsumeItemFilter{
var item = getConsumed(build);
return item == null ? 0f : item.flammability;
}
@Override
public void display(Stats stats){
stats.add(booster ? Stat.booster : Stat.input, StatValues.itemEffMultiplier(i -> i.flammability, filter));
}
}

View File

@@ -1,6 +1,7 @@
package mindustry.world.consumers;
import mindustry.gen.*;
import mindustry.world.meta.*;
public class ConsumeItemRadioactive extends ConsumeItemFilter{
public float minRadioactivity;
@@ -19,4 +20,9 @@ public class ConsumeItemRadioactive extends ConsumeItemFilter{
var item = getConsumed(build);
return item == null ? 0f : item.radioactivity;
}
@Override
public void display(Stats stats){
stats.add(booster ? Stat.booster : Stat.input, StatValues.itemEffMultiplier(i -> i.radioactivity, filter));
}
}

View File

@@ -1,6 +1,7 @@
package mindustry.world.consumers;
import mindustry.gen.*;
import mindustry.world.meta.*;
public class ConsumeLiquidFlammable extends ConsumeLiquidFilter{
public float minFlammability;
@@ -24,4 +25,9 @@ public class ConsumeLiquidFlammable extends ConsumeLiquidFilter{
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, filter));
}
}

View File

@@ -292,6 +292,42 @@ public class StatValues{
};
}
public static StatValue itemEffMultiplier(Floatf<Item> efficiency, Boolf<Item> filter){
return table -> {
table.row();
table.table(c -> {
for(Item item : content.items()){
if(!filter.get(item)) continue;
c.table(Styles.grayPanel, b -> {
b.image(item.uiIcon).size(40).pad(10f).left().scaling(Scaling.fit);
b.add(item.localizedName).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());
table.row();
};
}
public static StatValue liquidEffMultiplier(Floatf<Liquid> efficiency, Boolf<Liquid> filter){
return table -> {
table.row();
table.table(c -> {
for(Liquid liquid : content.liquids()){
if(!filter.get(liquid)) continue;
c.table(Styles.grayPanel, b -> {
b.image(liquid.uiIcon).size(40).pad(10f).left().scaling(Scaling.fit);
b.add(liquid.localizedName).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());
table.row();
};
}
public static StatValue speedBoosters(String unit, float amount, float speed, boolean strength, Boolf<Liquid> filter){
return table -> {
table.row();
@@ -554,4 +590,4 @@ public class StatValues{
private static TextureRegion icon(UnlockableContent t){
return t.uiIcon;
}
}
}