Notice of explosiveness

I feel like my changes are getting a *bit* intrusive.
This commit is contained in:
MEEPofFaith
2024-03-15 09:25:10 -07:00
parent e96e312693
commit 24b845e8b1
8 changed files with 57 additions and 27 deletions

View File

@@ -996,7 +996,8 @@ 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 = [accent]{0}% Efficiency stat.efficiency = [stat]{0}% Efficiency
stat.explosive = [negstat]Explosive
ability.forcefield = Force Field ability.forcefield = Force Field
ability.repairfield = Repair Field ability.repairfield = Repair Field

View File

@@ -73,6 +73,14 @@ public class ConsumeGenerator extends PowerGenerator{
if(outputLiquid != null){ if(outputLiquid != null){
stats.add(Stat.output, StatValues.liquid(outputLiquid.liquid, outputLiquid.amount * 60f, true)); stats.add(Stat.output, StatValues.liquid(outputLiquid.liquid, outputLiquid.amount * 60f, true));
} }
if(filterItem != null){
ConsumeItemExplode explode = findConsumer(c -> c instanceof ConsumeItemExplode);
if(explode != null){
stats.remove(Stat.input);
stats.add(Stat.input, StatValues.itemEffMultiplier(i -> filterItem.itemEfficiencyMultiplier(i), filterItem.filter, explode.filter));
}
}
} }
public class ConsumeGeneratorBuild extends GeneratorBuild{ public class ConsumeGeneratorBuild extends GeneratorBuild{

View File

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

View File

@@ -1,6 +1,7 @@
package mindustry.world.consumers; package mindustry.world.consumers;
import mindustry.gen.*; import mindustry.gen.*;
import mindustry.type.*;
import mindustry.world.meta.*; import mindustry.world.meta.*;
public class ConsumeItemExplosive extends ConsumeItemFilter{ public class ConsumeItemExplosive extends ConsumeItemFilter{
@@ -15,14 +16,13 @@ public class ConsumeItemExplosive extends ConsumeItemFilter{
this(0.2f); this(0.2f);
} }
@Override
public float efficiencyMultiplier(Building build){
var item = getConsumed(build);
return item == null ? 0f : item.explosiveness;
}
@Override @Override
public void display(Stats stats){ public void display(Stats stats){
stats.add(booster ? Stat.booster : Stat.input, StatValues.itemEffMultiplier(i -> i.explosiveness, filter)); stats.add(booster ? Stat.booster : Stat.input, StatValues.itemEffMultiplier(i -> i.explosiveness, filter));
} }
@Override
public float itemEfficiencyMultiplier(Item item){
return item.explosiveness;
}
} }

View File

@@ -68,4 +68,14 @@ public class ConsumeItemFilter extends Consume{
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, stats.timePeriod < 0 ? StatValues.items(filter) : 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;
}
} }

View File

@@ -1,6 +1,7 @@
package mindustry.world.consumers; package mindustry.world.consumers;
import mindustry.gen.*; import mindustry.gen.*;
import mindustry.type.*;
import mindustry.world.meta.*; import mindustry.world.meta.*;
public class ConsumeItemFlammable extends ConsumeItemFilter{ public class ConsumeItemFlammable extends ConsumeItemFilter{
@@ -15,14 +16,13 @@ public class ConsumeItemFlammable extends ConsumeItemFilter{
this(0.2f); this(0.2f);
} }
@Override
public float efficiencyMultiplier(Building build){
var item = getConsumed(build);
return item == null ? 0f : item.flammability;
}
@Override @Override
public void display(Stats stats){ public void display(Stats stats){
stats.add(booster ? Stat.booster : Stat.input, StatValues.itemEffMultiplier(i -> i.flammability, filter)); stats.add(booster ? Stat.booster : Stat.input, StatValues.itemEffMultiplier(i -> i.flammability, filter));
} }
@Override
public float itemEfficiencyMultiplier(Item item){
return item.flammability;
}
} }

View File

@@ -1,6 +1,7 @@
package mindustry.world.consumers; package mindustry.world.consumers;
import mindustry.gen.*; import mindustry.gen.*;
import mindustry.type.*;
import mindustry.world.meta.*; import mindustry.world.meta.*;
public class ConsumeItemRadioactive extends ConsumeItemFilter{ public class ConsumeItemRadioactive extends ConsumeItemFilter{
@@ -15,14 +16,13 @@ public class ConsumeItemRadioactive extends ConsumeItemFilter{
this(0.2f); this(0.2f);
} }
@Override
public float efficiencyMultiplier(Building build){
var item = getConsumed(build);
return item == null ? 0f : item.radioactivity;
}
@Override @Override
public void display(Stats stats){ public void display(Stats stats){
stats.add(booster ? Stat.booster : Stat.input, StatValues.itemEffMultiplier(i -> i.radioactivity, filter)); stats.add(booster ? Stat.booster : Stat.input, StatValues.itemEffMultiplier(i -> i.radioactivity, filter));
} }
@Override
public float itemEfficiencyMultiplier(Item item){
return item.radioactivity;
}
} }

View File

@@ -292,7 +292,7 @@ public class StatValues{
}; };
} }
public static StatValue itemEffMultiplier(Floatf<Item> efficiency, Boolf<Item> filter){ public static StatValue itemEffMultiplier(Floatf<Item> efficiency, Boolf<Item> filter, Boolf<Item> explosive){
return table -> { return table -> {
table.row(); table.row();
table.table(c -> { table.table(c -> {
@@ -300,7 +300,14 @@ public class StatValues{
c.table(Styles.grayPanel, b -> { c.table(Styles.grayPanel, b -> {
b.image(item.uiIcon).size(40).pad(10f).left().scaling(Scaling.fit); b.image(item.uiIcon).size(40).pad(10f).left().scaling(Scaling.fit);
b.add(item.localizedName).left().grow(); b.add(item.localizedName).left().grow();
b.add(Core.bundle.format("stat.efficiency", fixValue(efficiency.get(item) * 100f))).right().pad(10f).padRight(15f); b.table(e -> {
e.add(Core.bundle.format("stat.efficiency", fixValue(efficiency.get(item) * 100f))).right().labelAlign(Align.right);
if(explosive.get(item)){
e.row();
e.add(Core.bundle.get("stat.explosive")).right().labelAlign(Align.right);
}
}).right().pad(10f).padRight(15f);
}).growX().pad(5).row(); }).growX().pad(5).row();
} }
}).growX().colspan(table.getColumns()); }).growX().colspan(table.getColumns());
@@ -308,6 +315,10 @@ public class StatValues{
}; };
} }
public static StatValue itemEffMultiplier(Floatf<Item> efficiency, Boolf<Item> filter){
return itemEffMultiplier(efficiency, filter, i -> false);
}
public static StatValue liquidEffMultiplier(Floatf<Liquid> efficiency, Boolf<Liquid> filter){ public static StatValue liquidEffMultiplier(Floatf<Liquid> efficiency, Boolf<Liquid> filter){
return table -> { return table -> {
table.row(); table.row();