diff options
Diffstat (limited to 'src/Java/binnie/core/genetics/BeeModifierLogic.java')
-rw-r--r-- | src/Java/binnie/core/genetics/BeeModifierLogic.java | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/Java/binnie/core/genetics/BeeModifierLogic.java b/src/Java/binnie/core/genetics/BeeModifierLogic.java new file mode 100644 index 0000000000..65a2ab3103 --- /dev/null +++ b/src/Java/binnie/core/genetics/BeeModifierLogic.java @@ -0,0 +1,47 @@ +package binnie.core.genetics; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class BeeModifierLogic +{ + private Map<EnumBeeModifier, Float[]> modifiers = new HashMap(); + private List<EnumBeeBooleanModifier> booleanModifiers = new ArrayList(); + + public float getModifier(EnumBeeModifier modifier, float currentModifier) + { + if (!this.modifiers.containsKey(modifier)) { + return 1.0F; + } + float mult = ((Float[])this.modifiers.get(modifier))[0].floatValue(); + float max = ((Float[])this.modifiers.get(modifier))[1].floatValue(); + if (max >= 1.0F) + { + if (max <= currentModifier) { + return 1.0F; + } + return Math.min(max / currentModifier, mult); + } + if (max >= currentModifier) { + return 1.0F; + } + return Math.max(max / currentModifier, mult); + } + + public boolean getModifier(EnumBeeBooleanModifier modifier) + { + return this.booleanModifiers.contains(modifier); + } + + public void setModifier(EnumBeeBooleanModifier modifier) + { + this.booleanModifiers.add(modifier); + } + + public void setModifier(EnumBeeModifier modifier, float mult, float max) + { + this.modifiers.put(modifier, new Float[] { Float.valueOf(mult), Float.valueOf(max) }); + } +} |