Percentage modifier stat for status effects (#10306)
* Percentage modifier stat for status effects * Merge true by default Make percentage symbol inherit the color as well * Multipliers instead of percentages
This commit is contained in:
@@ -29,6 +29,7 @@ public class StatUnit{
|
||||
perMinute = new StatUnit("perMinute", false),
|
||||
perShot = new StatUnit("perShot", false),
|
||||
timesSpeed = new StatUnit("timesSpeed", false),
|
||||
multiplier = new StatUnit("multiplier", false),
|
||||
percent = new StatUnit("percent", false),
|
||||
shieldHealth = new StatUnit("shieldHealth"),
|
||||
none = new StatUnit("none"),
|
||||
|
||||
@@ -69,6 +69,48 @@ public class StatValues{
|
||||
return number(value, unit, false);
|
||||
}
|
||||
|
||||
public static StatValue multiplierModifier(float value, StatUnit unit, boolean merge){
|
||||
return table -> {
|
||||
String l1 = (unit.icon == null ? "" : unit.icon + " ") + multStat(value), l2 = (unit.space ? " " : "") + unit.localized();
|
||||
|
||||
if(merge){
|
||||
table.add(l1 + l2).left();
|
||||
}else{
|
||||
table.add(l1).left();
|
||||
table.add(l2).left();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public static StatValue multiplierModifier(float value, StatUnit unit){
|
||||
return multiplierModifier(value, unit, true);
|
||||
}
|
||||
|
||||
public static StatValue multiplierModifier(float value){
|
||||
return multiplierModifier(value, StatUnit.multiplier);
|
||||
}
|
||||
|
||||
public static StatValue percentModifier(float value, StatUnit unit, boolean merge){
|
||||
return table -> {
|
||||
String l1 = (unit.icon == null ? "" : unit.icon + " ") + ammoStat((value - 1) * 100), l2 = (unit.space ? " " : "") + unit.localized();
|
||||
|
||||
if(merge){
|
||||
table.add(l1 + l2).left();
|
||||
}else{
|
||||
table.add(l1).left();
|
||||
table.add(l2).left();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public static StatValue percentModifier(float value, StatUnit unit){
|
||||
return percentModifier(value, unit, true);
|
||||
}
|
||||
|
||||
public static StatValue percentModifier(float value){
|
||||
return percentModifier(value, StatUnit.percent);
|
||||
}
|
||||
|
||||
public static StatValue liquid(Liquid liquid, float amount, boolean perSecond){
|
||||
return table -> table.add(displayLiquid(liquid, amount, perSecond));
|
||||
}
|
||||
@@ -691,6 +733,10 @@ public class StatValues{
|
||||
return (val > 0 ? "[stat]+" : "[negstat]") + Strings.autoFixed(val, 1);
|
||||
}
|
||||
|
||||
private static String multStat(float val){
|
||||
return (val >= 1 ? "[stat]" : "[negstat]") + Strings.autoFixed(val, 2);
|
||||
}
|
||||
|
||||
private static TextureRegion icon(UnlockableContent t){
|
||||
return t.uiIcon;
|
||||
}
|
||||
|
||||
@@ -32,6 +32,16 @@ public class Stats{
|
||||
add(stat, StatValues.number((int)(value * 100), StatUnit.percent));
|
||||
}
|
||||
|
||||
/** Adds a multiplicative modifier stat value. Value is assumed to be in the 0-1 range. */
|
||||
public void addMultModifier(Stat stat, float value){
|
||||
add(stat, StatValues.multiplierModifier(value));
|
||||
}
|
||||
|
||||
/** Adds an percent modifier stat value. Value is assumed to be in the 0-1 range. */
|
||||
public void addPercentModifier(Stat stat, float value){
|
||||
add(stat, StatValues.percentModifier(value));
|
||||
}
|
||||
|
||||
/** Adds a single y/n boolean value. */
|
||||
public void add(Stat stat, boolean value){
|
||||
add(stat, StatValues.bool(value));
|
||||
|
||||
Reference in New Issue
Block a user