aboutsummaryrefslogtreecommitdiff
path: root/src/Java/binnie/core/genetics/BeeModifierLogic.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/Java/binnie/core/genetics/BeeModifierLogic.java')
-rw-r--r--src/Java/binnie/core/genetics/BeeModifierLogic.java47
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) });
+ }
+}