From 7516f9c5d394b16fc1fb3bd807835f9a1c11d6fb Mon Sep 17 00:00:00 2001 From: Nicholas Ignoffo Date: Fri, 29 Jul 2016 21:10:22 -0700 Subject: [PATCH] Added a way to view the progress towards the next upgrade level Override `getProgress()` and return a value between 0.0 (0%) and 1.0 (100%) --- .../api/livingArmour/StatTracker.java | 14 +++++++++++++ .../item/armour/ItemLivingArmour.java | 21 ++++++++++++++++++- .../tracker/StatTrackerArrowProtect.java | 7 +++++++ .../tracker/StatTrackerArrowShot.java | 7 +++++++ .../tracker/StatTrackerCriticalStrike.java | 7 +++++++ .../tracker/StatTrackerDigging.java | 7 +++++++ .../tracker/StatTrackerExperience.java | 7 +++++++ .../tracker/StatTrackerFallProtect.java | 7 +++++++ .../tracker/StatTrackerFireResist.java | 7 +++++++ .../livingArmour/tracker/StatTrackerFood.java | 7 +++++++ .../tracker/StatTrackerGraveDigger.java | 7 +++++++ .../tracker/StatTrackerGrimReaperSprint.java | 7 +++++++ .../tracker/StatTrackerHealthboost.java | 7 +++++++ .../livingArmour/tracker/StatTrackerJump.java | 7 +++++++ .../tracker/StatTrackerMeleeDamage.java | 7 +++++++ .../tracker/StatTrackerMovement.java | 7 +++++++ .../tracker/StatTrackerPhysicalProtect.java | 7 +++++++ .../tracker/StatTrackerPoison.java | 7 +++++++ .../tracker/StatTrackerSelfSacrifice.java | 7 +++++++ .../tracker/StatTrackerSolarPowered.java | 7 +++++++ .../tracker/StatTrackerSprintAttack.java | 7 +++++++ .../tracker/StatTrackerStepAssist.java | 9 ++++++++ .../java/WayofTime/bloodmagic/util/Utils.java | 10 +++++++++ .../assets/bloodmagic/lang/en_US.lang | 1 + 24 files changed, 187 insertions(+), 1 deletion(-) diff --git a/src/main/java/WayofTime/bloodmagic/api/livingArmour/StatTracker.java b/src/main/java/WayofTime/bloodmagic/api/livingArmour/StatTracker.java index b7dd5428..feed71dd 100644 --- a/src/main/java/WayofTime/bloodmagic/api/livingArmour/StatTracker.java +++ b/src/main/java/WayofTime/bloodmagic/api/livingArmour/StatTracker.java @@ -41,6 +41,20 @@ public abstract class StatTracker public abstract List getUpgrades(); + /** + * Used to obtain the progress from the current level to the next level. + * + * 0.0 being 0% - 1.0 being 100%. + * + * @param livingArmour + * The equipped LivingArmour + * @return the progress from the current level to the next level. + */ + public double getProgress(LivingArmour livingArmour, int currentLevel) + { + return 1.0D; + } + public final boolean isDirty() { return isDirty; diff --git a/src/main/java/WayofTime/bloodmagic/item/armour/ItemLivingArmour.java b/src/main/java/WayofTime/bloodmagic/item/armour/ItemLivingArmour.java index d61e05ac..4af14de2 100644 --- a/src/main/java/WayofTime/bloodmagic/item/armour/ItemLivingArmour.java +++ b/src/main/java/WayofTime/bloodmagic/item/armour/ItemLivingArmour.java @@ -8,6 +8,7 @@ import java.util.Map; import java.util.Map.Entry; import java.util.UUID; +import WayofTime.bloodmagic.api.livingArmour.StatTracker; import net.minecraft.client.entity.EntityPlayerSP; import net.minecraft.client.renderer.ItemMeshDefinition; import net.minecraft.client.renderer.block.model.ModelResourceLocation; @@ -22,6 +23,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.datasync.DataParameter; import net.minecraft.util.DamageSource; import net.minecraft.util.ResourceLocation; +import net.minecraft.util.math.MathHelper; import net.minecraft.world.World; import net.minecraftforge.common.ISpecialArmor; import net.minecraftforge.fml.relauncher.ReflectionHelper; @@ -45,6 +47,7 @@ import WayofTime.bloodmagic.util.helper.TextHelper; import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; +import org.lwjgl.input.Keyboard; public class ItemLivingArmour extends ItemArmor implements ISpecialArmor, IMeshProvider { @@ -269,7 +272,23 @@ public class ItemLivingArmour extends ItemArmor implements ISpecialArmor, IMeshP LivingArmourUpgrade upgrade = entry.getValue(); if (upgrade != null) { - tooltip.add(TextHelper.localize("tooltip.BloodMagic.livingArmour.upgrade.level", TextHelper.localize(upgrade.getUnlocalizedName()), (upgrade.getUpgradeLevel() + 1))); + if (Keyboard.isKeyDown(Keyboard.KEY_LSHIFT) && Keyboard.isKeyDown(Keyboard.KEY_M)) + { + StatTracker tracker = null; + for (StatTracker searchTracker : armour.trackerMap.values()) { + if (searchTracker != null && searchTracker.providesUpgrade(upgrade.getUniqueIdentifier())) { + tracker = searchTracker; + break; + } + } + + if (tracker != null) { + double progress = tracker.getProgress(armour, upgrade.getUpgradeLevel()); + tooltip.add(TextHelper.localize("tooltip.BloodMagic.livingArmour.upgrade.progress", TextHelper.localize(upgrade.getUnlocalizedName()), MathHelper.clamp_int((int) (progress * 100D), 0, 100))); + } + } else { + tooltip.add(TextHelper.localize("tooltip.BloodMagic.livingArmour.upgrade.level", TextHelper.localize(upgrade.getUnlocalizedName()), upgrade.getUpgradeLevel() + 1)); + } } } diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerArrowProtect.java b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerArrowProtect.java index 910c6ec2..0904b75d 100644 --- a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerArrowProtect.java +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerArrowProtect.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import WayofTime.bloodmagic.util.Utils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; @@ -95,6 +96,12 @@ public class StatTrackerArrowProtect extends StatTracker return upgradeList; } + @Override + public double getProgress(LivingArmour livingArmour, int currentLevel) + { + return Utils.calculateStandardProgress(totalDamage, damageRequired, currentLevel); + } + @Override public boolean providesUpgrade(String key) { diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerArrowShot.java b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerArrowShot.java index 47f23370..0c9eeed9 100644 --- a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerArrowShot.java +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerArrowShot.java @@ -5,6 +5,7 @@ import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade; import WayofTime.bloodmagic.api.livingArmour.StatTracker; import WayofTime.bloodmagic.livingArmour.LivingArmour; import WayofTime.bloodmagic.livingArmour.upgrade.LivingArmourUpgradeArrowShot; +import WayofTime.bloodmagic.util.Utils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; @@ -95,6 +96,12 @@ public class StatTrackerArrowShot extends StatTracker return upgradeList; } + @Override + public double getProgress(LivingArmour livingArmour, int currentLevel) + { + return Utils.calculateStandardProgress(totalShots, shotsRequired, currentLevel); + } + @Override public boolean providesUpgrade(String key) { diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerCriticalStrike.java b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerCriticalStrike.java index 1fc102f2..60986cf0 100644 --- a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerCriticalStrike.java +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerCriticalStrike.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import WayofTime.bloodmagic.util.Utils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; @@ -95,6 +96,12 @@ public class StatTrackerCriticalStrike extends StatTracker return upgradeList; } + @Override + public double getProgress(LivingArmour livingArmour, int currentLevel) + { + return Utils.calculateStandardProgress(totalDamageDealt, damageRequired, currentLevel); + } + @Override public boolean providesUpgrade(String key) { diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerDigging.java b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerDigging.java index 85e366fb..528dfad0 100644 --- a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerDigging.java +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerDigging.java @@ -5,6 +5,7 @@ import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade; import WayofTime.bloodmagic.api.livingArmour.StatTracker; import WayofTime.bloodmagic.livingArmour.LivingArmour; import WayofTime.bloodmagic.livingArmour.upgrade.LivingArmourUpgradeDigging; +import WayofTime.bloodmagic.util.Utils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; @@ -95,6 +96,12 @@ public class StatTrackerDigging extends StatTracker return upgradeList; } + @Override + public double getProgress(LivingArmour livingArmour, int currentLevel) + { + return Utils.calculateStandardProgress(totalBlocksDug, blocksRequired, currentLevel); + } + @Override public boolean providesUpgrade(String key) { diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerExperience.java b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerExperience.java index d69cb2c5..0bd168a5 100644 --- a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerExperience.java +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerExperience.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import WayofTime.bloodmagic.util.Utils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; @@ -95,6 +96,12 @@ public class StatTrackerExperience extends StatTracker return upgradeList; } + @Override + public double getProgress(LivingArmour livingArmour, int currentLevel) + { + return Utils.calculateStandardProgress(totalExperienceGained, experienceRequired, currentLevel); + } + @Override public boolean providesUpgrade(String key) { diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerFallProtect.java b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerFallProtect.java index 556bd2d4..c164ef66 100644 --- a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerFallProtect.java +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerFallProtect.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import WayofTime.bloodmagic.util.Utils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; @@ -95,6 +96,12 @@ public class StatTrackerFallProtect extends StatTracker return upgradeList; } + @Override + public double getProgress(LivingArmour livingArmour, int currentLevel) + { + return Utils.calculateStandardProgress(totalDamage, damageRequired, currentLevel); + } + @Override public boolean providesUpgrade(String key) { diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerFireResist.java b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerFireResist.java index be46075b..b05cccae 100644 --- a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerFireResist.java +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerFireResist.java @@ -3,6 +3,7 @@ package WayofTime.bloodmagic.livingArmour.tracker; import java.util.ArrayList; import java.util.List; +import WayofTime.bloodmagic.util.Utils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; @@ -77,6 +78,12 @@ public class StatTrackerFireResist extends StatTracker return upgradeList; } + @Override + public double getProgress(LivingArmour livingArmour, int currentLevel) + { + return Utils.calculateStandardProgress(totalFireTicks, fireTicksRequired, currentLevel); + } + @Override public boolean providesUpgrade(String key) { diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerFood.java b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerFood.java index ec6a0276..3ed629a9 100644 --- a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerFood.java +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerFood.java @@ -5,6 +5,7 @@ import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade; import WayofTime.bloodmagic.api.livingArmour.StatTracker; import WayofTime.bloodmagic.livingArmour.LivingArmour; import WayofTime.bloodmagic.livingArmour.upgrade.LivingArmourUpgradeKnockbackResist; +import WayofTime.bloodmagic.util.Utils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; @@ -97,6 +98,12 @@ public class StatTrackerFood extends StatTracker return upgradeList; } + @Override + public double getProgress(LivingArmour livingArmour, int currentLevel) + { + return Utils.calculateStandardProgress(foodEaten, foodRequired, currentLevel); + } + @Override public boolean providesUpgrade(String key) { diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerGraveDigger.java b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerGraveDigger.java index 03e6843b..2ea689f5 100644 --- a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerGraveDigger.java +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerGraveDigger.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import WayofTime.bloodmagic.util.Utils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; @@ -95,6 +96,12 @@ public class StatTrackerGraveDigger extends StatTracker return upgradeList; } + @Override + public double getProgress(LivingArmour livingArmour, int currentLevel) + { + return Utils.calculateStandardProgress(totalDamageDealt, damageRequired, currentLevel); + } + @Override public boolean providesUpgrade(String key) { diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerGrimReaperSprint.java b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerGrimReaperSprint.java index 8a90cebf..0513ccaa 100644 --- a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerGrimReaperSprint.java +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerGrimReaperSprint.java @@ -5,6 +5,7 @@ import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade; import WayofTime.bloodmagic.api.livingArmour.StatTracker; import WayofTime.bloodmagic.livingArmour.LivingArmour; import WayofTime.bloodmagic.livingArmour.upgrade.LivingArmourUpgradeGrimReaperSprint; +import WayofTime.bloodmagic.util.Utils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; @@ -102,6 +103,12 @@ public class StatTrackerGrimReaperSprint extends StatTracker return upgradeList; } + @Override + public double getProgress(LivingArmour livingArmour, int currentLevel) + { + return Utils.calculateStandardProgress(totalDeaths, deathsRequired, currentLevel); + } + @Override public boolean providesUpgrade(String key) { diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerHealthboost.java b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerHealthboost.java index ae047fa3..69922343 100644 --- a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerHealthboost.java +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerHealthboost.java @@ -5,6 +5,7 @@ import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade; import WayofTime.bloodmagic.api.livingArmour.StatTracker; import WayofTime.bloodmagic.livingArmour.LivingArmour; import WayofTime.bloodmagic.livingArmour.upgrade.LivingArmourUpgradeHealthboost; +import WayofTime.bloodmagic.util.Utils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; @@ -95,6 +96,12 @@ public class StatTrackerHealthboost extends StatTracker return upgradeList; } + @Override + public double getProgress(LivingArmour livingArmour, int currentLevel) + { + return Utils.calculateStandardProgress(totalHealthGenned, healthedRequired, currentLevel); + } + @Override public boolean providesUpgrade(String key) { diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerJump.java b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerJump.java index c91d570b..9df17da4 100644 --- a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerJump.java +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerJump.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import WayofTime.bloodmagic.util.Utils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; @@ -96,6 +97,12 @@ public class StatTrackerJump extends StatTracker return upgradeList; } + @Override + public double getProgress(LivingArmour livingArmour, int currentLevel) + { + return Utils.calculateStandardProgress(totalJumps, jumpsRequired, currentLevel); + } + @Override public boolean providesUpgrade(String key) { diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerMeleeDamage.java b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerMeleeDamage.java index 679b3270..6edaa36e 100644 --- a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerMeleeDamage.java +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerMeleeDamage.java @@ -5,6 +5,7 @@ import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade; import WayofTime.bloodmagic.api.livingArmour.StatTracker; import WayofTime.bloodmagic.livingArmour.LivingArmour; import WayofTime.bloodmagic.livingArmour.upgrade.LivingArmourUpgradeMeleeDamage; +import WayofTime.bloodmagic.util.Utils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; @@ -95,6 +96,12 @@ public class StatTrackerMeleeDamage extends StatTracker return upgradeList; } + @Override + public double getProgress(LivingArmour livingArmour, int currentLevel) + { + return Utils.calculateStandardProgress(totalDamageDealt, damageRequired, currentLevel); + } + @Override public boolean providesUpgrade(String key) { diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerMovement.java b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerMovement.java index cd7fbcb6..ceb3d6bf 100644 --- a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerMovement.java +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerMovement.java @@ -5,6 +5,7 @@ import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade; import WayofTime.bloodmagic.api.livingArmour.StatTracker; import WayofTime.bloodmagic.livingArmour.LivingArmour; import WayofTime.bloodmagic.livingArmour.upgrade.LivingArmourUpgradeSpeed; +import WayofTime.bloodmagic.util.Utils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; @@ -105,6 +106,12 @@ public class StatTrackerMovement extends StatTracker return upgradeList; } + @Override + public double getProgress(LivingArmour livingArmour, int currentLevel) + { + return Utils.calculateStandardProgress(totalMovement, blocksRequired, currentLevel); + } + @Override public boolean providesUpgrade(String key) { diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerPhysicalProtect.java b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerPhysicalProtect.java index b24cd1af..7a746a7a 100644 --- a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerPhysicalProtect.java +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerPhysicalProtect.java @@ -5,6 +5,7 @@ import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade; import WayofTime.bloodmagic.api.livingArmour.StatTracker; import WayofTime.bloodmagic.livingArmour.LivingArmour; import WayofTime.bloodmagic.livingArmour.upgrade.LivingArmourUpgradePhysicalProtect; +import WayofTime.bloodmagic.util.Utils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; @@ -95,6 +96,12 @@ public class StatTrackerPhysicalProtect extends StatTracker return upgradeList; } + @Override + public double getProgress(LivingArmour livingArmour, int currentLevel) + { + return Utils.calculateStandardProgress(totalDamage, damageRequired, currentLevel); + } + @Override public boolean providesUpgrade(String key) { diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerPoison.java b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerPoison.java index 048b896d..7a6b6f52 100644 --- a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerPoison.java +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerPoison.java @@ -3,6 +3,7 @@ package WayofTime.bloodmagic.livingArmour.tracker; import java.util.ArrayList; import java.util.List; +import WayofTime.bloodmagic.util.Utils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.MobEffects; import net.minecraft.nbt.NBTTagCompound; @@ -78,6 +79,12 @@ public class StatTrackerPoison extends StatTracker return upgradeList; } + @Override + public double getProgress(LivingArmour livingArmour, int currentLevel) + { + return Utils.calculateStandardProgress(totalPoisonTicks, poisonTicksRequired, currentLevel); + } + @Override public boolean providesUpgrade(String key) { diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerSelfSacrifice.java b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerSelfSacrifice.java index 9fb29137..45374986 100644 --- a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerSelfSacrifice.java +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerSelfSacrifice.java @@ -5,6 +5,7 @@ import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade; import WayofTime.bloodmagic.api.livingArmour.StatTracker; import WayofTime.bloodmagic.livingArmour.LivingArmour; import WayofTime.bloodmagic.livingArmour.upgrade.LivingArmourUpgradeSelfSacrifice; +import WayofTime.bloodmagic.util.Utils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; @@ -96,6 +97,12 @@ public class StatTrackerSelfSacrifice extends StatTracker return upgradeList; } + @Override + public double getProgress(LivingArmour livingArmour, int currentLevel) + { + return Utils.calculateStandardProgress(totalSacrifices, sacrificesRequired, currentLevel); + } + @Override public boolean providesUpgrade(String key) { diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerSolarPowered.java b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerSolarPowered.java index b3006d27..44cd60b8 100644 --- a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerSolarPowered.java +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerSolarPowered.java @@ -5,6 +5,7 @@ import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade; import WayofTime.bloodmagic.api.livingArmour.StatTracker; import WayofTime.bloodmagic.livingArmour.LivingArmour; import WayofTime.bloodmagic.livingArmour.upgrade.LivingArmourUpgradeSolarPowered; +import WayofTime.bloodmagic.util.Utils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; @@ -95,6 +96,12 @@ public class StatTrackerSolarPowered extends StatTracker return upgradeList; } + @Override + public double getProgress(LivingArmour livingArmour, int currentLevel) + { + return Utils.calculateStandardProgress(totalHealthGenned, healthedRequired, currentLevel); + } + @Override public boolean providesUpgrade(String key) { diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerSprintAttack.java b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerSprintAttack.java index 6f27954a..16dc7b54 100644 --- a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerSprintAttack.java +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerSprintAttack.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import WayofTime.bloodmagic.util.Utils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; @@ -95,6 +96,12 @@ public class StatTrackerSprintAttack extends StatTracker return upgradeList; } + @Override + public double getProgress(LivingArmour livingArmour, int currentLevel) + { + return Utils.calculateStandardProgress(totalDamageDealt, damageRequired, currentLevel); + } + @Override public boolean providesUpgrade(String key) { diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerStepAssist.java b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerStepAssist.java index fc33c3f0..efebb923 100644 --- a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerStepAssist.java +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerStepAssist.java @@ -103,6 +103,15 @@ public class StatTrackerStepAssist extends StatTracker return upgradeList; } + @Override + public double getProgress(LivingArmour livingArmour, int currentLevel) + { + if (currentLevel == 1) + return 1.0D; + + return totalMovement / (double) blocksRequired; + } + @Override public boolean providesUpgrade(String key) { diff --git a/src/main/java/WayofTime/bloodmagic/util/Utils.java b/src/main/java/WayofTime/bloodmagic/util/Utils.java index 3c6fe795..fb143eef 100644 --- a/src/main/java/WayofTime/bloodmagic/util/Utils.java +++ b/src/main/java/WayofTime/bloodmagic/util/Utils.java @@ -199,6 +199,16 @@ public class Utils return false; } + public static double calculateStandardProgress(Number currentValue, int[] requiredValues, int currentLevel) + { + int nextLevel = currentLevel + 1; + if (nextLevel >= requiredValues.length) + return 1.0D; + + int required = requiredValues[nextLevel]; + return Double.parseDouble("" + currentValue) / (double) required; + } + @Nullable public static IItemHandler getInventory(TileEntity tile, @Nullable EnumFacing facing) { diff --git a/src/main/resources/assets/bloodmagic/lang/en_US.lang b/src/main/resources/assets/bloodmagic/lang/en_US.lang index 53e50d08..b3e90b5b 100644 --- a/src/main/resources/assets/bloodmagic/lang/en_US.lang +++ b/src/main/resources/assets/bloodmagic/lang/en_US.lang @@ -378,6 +378,7 @@ tooltip.BloodMagic.livingArmour.upgrade.elytra=Elytra tooltip.BloodMagic.livingArmour.upgrade.slowness=Limp Leg tooltip.BloodMagic.livingArmour.upgrade.crippledArm=Crippled Arm tooltip.BloodMagic.livingArmour.upgrade.level=%s (Level %d) +tooltip.BloodMagic.livingArmour.upgrade.progress=%s (%d/100) tooltip.BloodMagic.livingArmour.upgrade.points=&6Upgrade points: %s / %s tooltip.BloodMagic.will=Will Quality: %1$,.2f