package gamelogic; import gui.simpleUI.ModifierGroup; import gui.simpleUI.modifiers.InfoText; import gui.simpleUI.modifiers.PlusMinusModifier; import android.view.Gravity; import de.rwth.R; public class FactorBooster extends Booster { /** * this allows bonus values like -10% (90%) or originalValue*3 (300%) for * any stat * * @param uniqueName * @param iconId * @param percentValue * will change the stats value to a specific percentlevel. * Example: statValue=50 percentValue=80 -> resultValue=40 */ public FactorBooster(String uniqueName, int iconId, float percentValue) { super(uniqueName, iconId, percentValue); } @Override public float getValue(float finalValue, float originalValue) { /* * the original manipulations of the originalValue have to be permanent. * * finalValue=110 * * originalValue=100 * * percentValue=10% * * so normaly return 10 but final value is 110 so return * (110-100)+10%*100=20 correct * * 200% -> return (110-100)+200%*100=210 also correct * * * finalValue=50 originalValue=50 50% 50-100 + 50 = 0 */ return (finalValue - originalValue) + originalValue * myValue / 100; } @Override public void generateEditGUI(ModifierGroup s) { s.addModifier(new PlusMinusModifier(R.drawable.minuscirclegray, R.drawable.pluscirclegray) { @Override public boolean save(double currentValue) { myValue = (float) currentValue; return true; } @Override public double plusEvent(double currentValue) { return currentValue + 10; } @Override public double minusEvent(double currentValue) { if (currentValue - 1 <= myValue) return myValue; return currentValue - 10; } @Override public double load() { return myValue; } @Override public String getVarName() { return myName + " (in %)"; } }); } @Override public void generateViewGUI(ModifierGroup s) { if (myValue >= 0) s.addModifier(new InfoText(" +" + myValue + "% by " + myName, Gravity.RIGHT)); else s.addModifier(new InfoText(" " + myValue + "% by " + myName, Gravity.RIGHT)); } }