From a44f3c379f0ef6bb7230876186d06e4b4adf36de Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 22 Dec 2020 14:02:19 -0500 Subject: [PATCH] Ammo/shot display --- core/assets/bundles/bundle.properties | 2 ++ .../mindustry/world/blocks/defense/turrets/Turret.java | 1 + .../mindustry/world/blocks/production/SolidPump.java | 2 +- core/src/mindustry/world/meta/Stat.java | 1 + core/src/mindustry/world/meta/StatUnit.java | 1 + core/src/mindustry/world/meta/Stats.java | 10 +++++----- .../world/meta/values/FloorEfficiencyValue.java | 6 ++++-- 7 files changed, 15 insertions(+), 8 deletions(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 7842607c37..0c6ea87497 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -699,6 +699,7 @@ stat.commandlimit = Command Limit stat.abilities = Abilities stat.canboost = Can Boost stat.flying = Flying +stat.ammouse = Ammo Use ability.forcefield = Force Field ability.repairfield = Repair Field @@ -766,6 +767,7 @@ unit.items = items unit.thousands = k unit.millions = mil unit.billions = b +unit.pershot = /shot category.purpose = Purpose category.general = General category.power = Power diff --git a/core/src/mindustry/world/blocks/defense/turrets/Turret.java b/core/src/mindustry/world/blocks/defense/turrets/Turret.java index 0a00cf9b8a..044f583722 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/Turret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/Turret.java @@ -113,6 +113,7 @@ public class Turret extends ReloadTurret{ stats.add(Stat.reload, 60f / reloadTime * (alternate ? 1 : shots), StatUnit.none); stats.add(Stat.targetsAir, targetAir); stats.add(Stat.targetsGround, targetGround); + if(ammoPerShot != 1) stats.add(Stat.ammoUse, ammoPerShot, StatUnit.perShot); } @Override diff --git a/core/src/mindustry/world/blocks/production/SolidPump.java b/core/src/mindustry/world/blocks/production/SolidPump.java index d49a6499ac..78a423dcec 100644 --- a/core/src/mindustry/world/blocks/production/SolidPump.java +++ b/core/src/mindustry/world/blocks/production/SolidPump.java @@ -56,7 +56,7 @@ public class SolidPump extends Pump{ stats.remove(Stat.output); stats.add(Stat.output, result, 60f * pumpAmount, true); if(attribute != null){ - stats.add(baseEfficiency > 0.0001f ? Stat.affinities : Stat.tiles, attribute); + stats.add(baseEfficiency > 0.0001f ? Stat.affinities : Stat.tiles, attribute, floating, 1f, baseEfficiency <= 0.001f); } } diff --git a/core/src/mindustry/world/meta/Stat.java b/core/src/mindustry/world/meta/Stat.java index 8f1d23820b..2f933bb46a 100644 --- a/core/src/mindustry/world/meta/Stat.java +++ b/core/src/mindustry/world/meta/Stat.java @@ -70,6 +70,7 @@ public enum Stat{ targetsGround(StatCat.function), damage(StatCat.function), ammo(StatCat.function), + ammoUse(StatCat.function), shieldHealth(StatCat.function), cooldownTime(StatCat.function), diff --git a/core/src/mindustry/world/meta/StatUnit.java b/core/src/mindustry/world/meta/StatUnit.java index b2a866be3e..f2d1ba07c3 100644 --- a/core/src/mindustry/world/meta/StatUnit.java +++ b/core/src/mindustry/world/meta/StatUnit.java @@ -20,6 +20,7 @@ public enum StatUnit{ minutes, perSecond, perMinute, + perShot, timesSpeed(false), percent(false), shieldHealth, diff --git a/core/src/mindustry/world/meta/Stats.java b/core/src/mindustry/world/meta/Stats.java index 0b1bf192da..39d887f188 100644 --- a/core/src/mindustry/world/meta/Stats.java +++ b/core/src/mindustry/world/meta/Stats.java @@ -55,22 +55,22 @@ public class Stats{ } public void add(Stat stat, Attribute attr){ - add(stat, attr, false, 1f); + add(stat, attr, false, 1f, false); } public void add(Stat stat, Attribute attr, float scale){ - add(stat, attr, false, scale); + add(stat, attr, false, scale, false); } public void add(Stat stat, Attribute attr, boolean floating){ - add(stat, attr, floating, 1f); + add(stat, attr, floating, 1f, false); } - public void add(Stat stat, Attribute attr, boolean floating, float scale){ + public void add(Stat stat, Attribute attr, boolean floating, float scale, boolean startZero){ for(var block : Vars.content.blocks() .select(block -> block instanceof Floor f && f.attributes.get(attr) != 0 && !(f.isLiquid && !floating)) .as().with(s -> s.sort(f -> f.attributes.get(attr)))){ - add(stat, new FloorEfficiencyValue(block, block.attributes.get(attr) * scale)); + add(stat, new FloorEfficiencyValue(block, block.attributes.get(attr) * scale, startZero)); } } diff --git a/core/src/mindustry/world/meta/values/FloorEfficiencyValue.java b/core/src/mindustry/world/meta/values/FloorEfficiencyValue.java index 619598a230..ad32ecf453 100644 --- a/core/src/mindustry/world/meta/values/FloorEfficiencyValue.java +++ b/core/src/mindustry/world/meta/values/FloorEfficiencyValue.java @@ -10,16 +10,18 @@ import mindustry.world.meta.*; public class FloorEfficiencyValue implements StatValue{ private final Floor floor; private final float multiplier; + private final boolean startZero; - public FloorEfficiencyValue(Floor floor, float multiplier){ + public FloorEfficiencyValue(Floor floor, float multiplier, boolean startZero){ this.floor = floor; this.multiplier = multiplier; + this.startZero = startZero; } @Override public void display(Table table){ table.stack(new Image(floor.icon(Cicon.medium)).setScaling(Scaling.fit), new Table(t -> { - t.top().right().add((multiplier < 0 ? "[scarlet]" : "[accent]+") + (int)((multiplier) * 100) + "%").style(Styles.outlineLabel); + t.top().right().add((multiplier < 0 ? "[scarlet]" : startZero ? "[accent]" : "[accent]+") + (int)((multiplier) * 100) + "%").style(Styles.outlineLabel); })); } }