From 3e682859402e272785cf1698923ba4475841d334 Mon Sep 17 00:00:00 2001 From: MEEPofFaith <54301439+MEEPofFaith@users.noreply.github.com> Date: Sun, 10 Mar 2024 12:47:30 -0700 Subject: [PATCH] Better display for efficiency multiplier consumes --- core/assets/bundles/bundle.properties | 1 + .../world/consumers/ConsumeItemCharged.java | 6 +++ .../world/consumers/ConsumeItemExplosive.java | 6 +++ .../world/consumers/ConsumeItemFlammable.java | 6 +++ .../consumers/ConsumeItemRadioactive.java | 6 +++ .../consumers/ConsumeLiquidFlammable.java | 6 +++ core/src/mindustry/world/meta/StatValues.java | 38 ++++++++++++++++++- 7 files changed, 68 insertions(+), 1 deletion(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index e9805b2eb0..314251af28 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -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 diff --git a/core/src/mindustry/world/consumers/ConsumeItemCharged.java b/core/src/mindustry/world/consumers/ConsumeItemCharged.java index 20d6a00769..f466ec4b28 100644 --- a/core/src/mindustry/world/consumers/ConsumeItemCharged.java +++ b/core/src/mindustry/world/consumers/ConsumeItemCharged.java @@ -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)); + } } diff --git a/core/src/mindustry/world/consumers/ConsumeItemExplosive.java b/core/src/mindustry/world/consumers/ConsumeItemExplosive.java index 0bed91970b..776008542c 100644 --- a/core/src/mindustry/world/consumers/ConsumeItemExplosive.java +++ b/core/src/mindustry/world/consumers/ConsumeItemExplosive.java @@ -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)); + } } diff --git a/core/src/mindustry/world/consumers/ConsumeItemFlammable.java b/core/src/mindustry/world/consumers/ConsumeItemFlammable.java index 34b5a74b02..1515cf010a 100644 --- a/core/src/mindustry/world/consumers/ConsumeItemFlammable.java +++ b/core/src/mindustry/world/consumers/ConsumeItemFlammable.java @@ -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)); + } } diff --git a/core/src/mindustry/world/consumers/ConsumeItemRadioactive.java b/core/src/mindustry/world/consumers/ConsumeItemRadioactive.java index b4beca53b2..03583d747a 100644 --- a/core/src/mindustry/world/consumers/ConsumeItemRadioactive.java +++ b/core/src/mindustry/world/consumers/ConsumeItemRadioactive.java @@ -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)); + } } diff --git a/core/src/mindustry/world/consumers/ConsumeLiquidFlammable.java b/core/src/mindustry/world/consumers/ConsumeLiquidFlammable.java index be39903154..63ca76cdb3 100644 --- a/core/src/mindustry/world/consumers/ConsumeLiquidFlammable.java +++ b/core/src/mindustry/world/consumers/ConsumeLiquidFlammable.java @@ -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)); + } } diff --git a/core/src/mindustry/world/meta/StatValues.java b/core/src/mindustry/world/meta/StatValues.java index 36872d3546..b135b14bc1 100644 --- a/core/src/mindustry/world/meta/StatValues.java +++ b/core/src/mindustry/world/meta/StatValues.java @@ -292,6 +292,42 @@ public class StatValues{ }; } + public static StatValue itemEffMultiplier(Floatf efficiency, Boolf 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 efficiency, Boolf 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 filter){ return table -> { table.row(); @@ -554,4 +590,4 @@ public class StatValues{ private static TextureRegion icon(UnlockableContent t){ return t.uiIcon; } -} \ No newline at end of file +}