From b8a79f7a851c5428673da94744ed97abeac9f815 Mon Sep 17 00:00:00 2001 From: Ben Spiers Date: Wed, 29 May 2013 01:37:14 +0100 Subject: [PATCH] Improve upgrade behaviour --- .../mekanism/common/MekanismUtils.java | 36 +++++++++++++++---- .../TileEntityAdvancedElectricMachine.java | 14 ++++---- .../common/TileEntityElectricMachine.java | 8 ++--- .../mekanism/common/TileEntityFactory.java | 8 ++--- 4 files changed, 45 insertions(+), 21 deletions(-) diff --git a/src/minecraft/mekanism/common/MekanismUtils.java b/src/minecraft/mekanism/common/MekanismUtils.java index 23ac94cdc..f6f2a5882 100644 --- a/src/minecraft/mekanism/common/MekanismUtils.java +++ b/src/minecraft/mekanism/common/MekanismUtils.java @@ -507,24 +507,48 @@ public final class MekanismUtils /** * Gets the operating ticks required for a machine via it's upgrades. - * @param multiplier - speed multiplier + * @param speedUpgrade - number of speed upgrades * @param def - the original, default ticks required * @return max operating ticks */ - public static int getTicks(int multiplier, int def) + public static int getTicks(int speedUpgrade, int def) { - return def/(multiplier+1); + return (int) (def * Math.pow(10, (-speedUpgrade/9.0))); + } + + /** + * Gets the energy required per tick for a machine via it's upgrades. + * @param speedUpgrade - number of speed upgrades + * @param energyUpgrade - number of energy upgrades + * @param def - the original, default energy required + * @return max energy per tick + */ + public static int getEnergyPerTick(int speedUpgrade, int energyUpgrade, int def) + { + return (int) (def * Math.pow(10, ((speedUpgrade-energyUpgrade)/9.0))); + } + + /** + * Gets the energy required per tick for a machine via it's upgrades. + * @param speedUpgrade - number of speed upgrades + * @param energyUpgrade - number of energy upgrades + * @param def - the original, default energy required + * @return max energy per tick + */ + public static double getEnergyPerTick(int speedUpgrade, int energyUpgrade, double def) + { + return (def * Math.pow(10, ((speedUpgrade-energyUpgrade)/9.0))); } /** * Gets the maximum energy for a machine via it's upgrades. - * @param multiplier - energy multiplier + * @param energyUpgrade - number of energy upgrades * @param def - original, default max energy * @return max energy */ - public static double getEnergy(int multiplier, double def) + public static double getEnergy(int energyUpgrade, double def) { - return def*(multiplier+1); + return (int) (def * Math.pow(10, (energyUpgrade/9.0))); } /** diff --git a/src/minecraft/mekanism/common/TileEntityAdvancedElectricMachine.java b/src/minecraft/mekanism/common/TileEntityAdvancedElectricMachine.java index cf71fdc50..d603f0abe 100644 --- a/src/minecraft/mekanism/common/TileEntityAdvancedElectricMachine.java +++ b/src/minecraft/mekanism/common/TileEntityAdvancedElectricMachine.java @@ -126,21 +126,21 @@ public abstract class TileEntityAdvancedElectricMachine extends TileEntityBasicM handleSecondaryFuel(); - if(electricityStored >= ENERGY_PER_TICK && secondaryEnergyStored >= SECONDARY_ENERGY_PER_TICK) + if(electricityStored >= MekanismUtils.getEnergyPerTick(speedMultiplier, energyMultiplier, ENERGY_PER_TICK) && secondaryEnergyStored >= MekanismUtils.getEnergyPerTick(speedMultiplier, energyMultiplier, SECONDARY_ENERGY_PER_TICK)) { - if(canOperate() && (operatingTicks+1) < MekanismUtils.getTicks(speedMultiplier, TICKS_REQUIRED) && secondaryEnergyStored >= SECONDARY_ENERGY_PER_TICK) + if(canOperate() && (operatingTicks+1) < MekanismUtils.getTicks(speedMultiplier, TICKS_REQUIRED) && secondaryEnergyStored >= MekanismUtils.getEnergyPerTick(speedMultiplier, energyMultiplier, SECONDARY_ENERGY_PER_TICK)) { operatingTicks++; - secondaryEnergyStored -= SECONDARY_ENERGY_PER_TICK; - electricityStored -= ENERGY_PER_TICK; + secondaryEnergyStored -= MekanismUtils.getEnergyPerTick(speedMultiplier, energyMultiplier, SECONDARY_ENERGY_PER_TICK); + electricityStored -= MekanismUtils.getEnergyPerTick(speedMultiplier, energyMultiplier, ENERGY_PER_TICK); } else if((operatingTicks+1) >= MekanismUtils.getTicks(speedMultiplier, TICKS_REQUIRED)) { operate(); operatingTicks = 0; - secondaryEnergyStored -= SECONDARY_ENERGY_PER_TICK; - electricityStored -= ENERGY_PER_TICK; + secondaryEnergyStored -= MekanismUtils.getEnergyPerTick(speedMultiplier, energyMultiplier, SECONDARY_ENERGY_PER_TICK); + electricityStored -= MekanismUtils.getEnergyPerTick(speedMultiplier, energyMultiplier, ENERGY_PER_TICK); } } @@ -149,7 +149,7 @@ public abstract class TileEntityAdvancedElectricMachine extends TileEntityBasicM operatingTicks = 0; } - if(canOperate() && electricityStored >= ENERGY_PER_TICK && secondaryEnergyStored >= SECONDARY_ENERGY_PER_TICK) + if(canOperate() && electricityStored >= MekanismUtils.getEnergyPerTick(speedMultiplier, energyMultiplier, ENERGY_PER_TICK) && secondaryEnergyStored >= MekanismUtils.getEnergyPerTick(speedMultiplier, energyMultiplier, SECONDARY_ENERGY_PER_TICK)) { setActive(true); } diff --git a/src/minecraft/mekanism/common/TileEntityElectricMachine.java b/src/minecraft/mekanism/common/TileEntityElectricMachine.java index 0da004c8a..d17b40e6e 100644 --- a/src/minecraft/mekanism/common/TileEntityElectricMachine.java +++ b/src/minecraft/mekanism/common/TileEntityElectricMachine.java @@ -93,19 +93,19 @@ public abstract class TileEntityElectricMachine extends TileEntityBasicMachine upgradeTicks = 0; } - if(electricityStored >= ENERGY_PER_TICK) + if(electricityStored >= MekanismUtils.getEnergyPerTick(speedMultiplier, energyMultiplier, ENERGY_PER_TICK)) { if(canOperate() && (operatingTicks+1) < MekanismUtils.getTicks(speedMultiplier, TICKS_REQUIRED)) { operatingTicks++; - electricityStored -= ENERGY_PER_TICK; + electricityStored -= MekanismUtils.getEnergyPerTick(speedMultiplier, energyMultiplier, ENERGY_PER_TICK); } else if(canOperate() && (operatingTicks+1) >= MekanismUtils.getTicks(speedMultiplier, TICKS_REQUIRED)) { operate(); operatingTicks = 0; - electricityStored -= ENERGY_PER_TICK; + electricityStored -= MekanismUtils.getEnergyPerTick(speedMultiplier, energyMultiplier, ENERGY_PER_TICK); } } @@ -114,7 +114,7 @@ public abstract class TileEntityElectricMachine extends TileEntityBasicMachine operatingTicks = 0; } - if(canOperate() && electricityStored >= ENERGY_PER_TICK) + if(canOperate() && electricityStored >= MekanismUtils.getEnergyPerTick(speedMultiplier, energyMultiplier, ENERGY_PER_TICK)) { setActive(true); } diff --git a/src/minecraft/mekanism/common/TileEntityFactory.java b/src/minecraft/mekanism/common/TileEntityFactory.java index 3eb7e7b8d..7846d3c21 100644 --- a/src/minecraft/mekanism/common/TileEntityFactory.java +++ b/src/minecraft/mekanism/common/TileEntityFactory.java @@ -218,19 +218,19 @@ public class TileEntityFactory extends TileEntityElectricBlock implements IEnerg for(int process = 0; process < tier.processes; process++) { - if(electricityStored >= ENERGY_PER_TICK) + if(electricityStored >= MekanismUtils.getEnergyPerTick(speedMultiplier, energyMultiplier, ENERGY_PER_TICK)) { if(canOperate(getInputSlot(process), getOutputSlot(process)) && (progress[process]+1) < MekanismUtils.getTicks(speedMultiplier, TICKS_REQUIRED)) { progress[process]++; - electricityStored -= ENERGY_PER_TICK; + electricityStored -= MekanismUtils.getEnergyPerTick(speedMultiplier, energyMultiplier, ENERGY_PER_TICK); } else if(canOperate(getInputSlot(process), getOutputSlot(process)) && (progress[process]+1) >= MekanismUtils.getTicks(speedMultiplier, TICKS_REQUIRED)) { operate(getInputSlot(process), getOutputSlot(process)); progress[process] = 0; - electricityStored -= ENERGY_PER_TICK; + electricityStored -= MekanismUtils.getEnergyPerTick(speedMultiplier, energyMultiplier, ENERGY_PER_TICK); } } @@ -253,7 +253,7 @@ public class TileEntityFactory extends TileEntityElectricBlock implements IEnerg } } - if(hasOperation && electricityStored >= ENERGY_PER_TICK) + if(hasOperation && electricityStored >= MekanismUtils.getEnergyPerTick(speedMultiplier, energyMultiplier, ENERGY_PER_TICK)) { setActive(true); }