Added BeeModifiers (based on BeeHousingModifier)

This commit is contained in:
bdew committed 2015-08-16 20:25:06 +03:00
1 parent 882a3dc1f4
commit 44a86cd45f
2 files changed
+50 -3

No files matched your search

@@ -12,6 +12,7 @@ package net.bdew.gendustry.custom
import forestry.api.apiculture._
import forestry.api.core.{EnumHumidity, EnumTemperature}
import forestry.api.genetics.{AlleleManager, IAllele}
import net.bdew.gendustry.forestry.BeeModifiers
import net.bdew.lib.Misc
import net.minecraft.block.Block
import net.minecraft.item.ItemStack
@@ -55,9 +56,7 @@ class BeeMutation(parent1: IAlleleBeeSpecies, parent2: IAlleleBeeSpecies, result
else {
val bkm = getRoot.getBeekeepingMode(housing.getWorld)
var processedChance = chance
import scala.collection.JavaConversions._
for (mod <- housing.getBeeModifiers)
processedChance *= mod.getMutationModifier(genome0, genome1, processedChance)
processedChance *= BeeModifiers.from(housing).getMutationModifier(genome0, genome1, processedChance)
processedChance *= bkm.getBeeModifier.getMutationModifier(genome0, genome1, processedChance)
processedChance
}
@@ -0,0 +1,48 @@
/*
* Copyright (c) bdew, 2013 - 2015
* https://github.com/bdew/gendustry
*
* This mod is distributed under the terms of the Minecraft Mod Public
* License 1.0, or MMPL. Please check the contents of the license located in
* http://bdew.net/minecraft-mod-public-license/
*/
package net.bdew.gendustry.forestry
import forestry.api.apiculture.{IBeeGenome, IBeeHousing, IBeeModifier}
import scala.collection.JavaConversions._
/**
* Combines multiple IBeeModifier together
* Conceptually based on BeeHousingModifier from Forestry
* @param modifiers collection of modifiers
*/
case class BeeModifiers(modifiers: Traversable[IBeeModifier]) extends IBeeModifier {
override def getTerritoryModifier(genome: IBeeGenome, currentModifier: Float): Float =
modifiers.foldLeft(1F)((v, m) => m.getTerritoryModifier(genome, v * currentModifier))
override def getMutationModifier(genome: IBeeGenome, mate: IBeeGenome, currentModifier: Float): Float =
modifiers.foldLeft(1F)((v, m) => m.getMutationModifier(genome, mate, v * currentModifier))
override def getLifespanModifier(genome: IBeeGenome, mate: IBeeGenome, currentModifier: Float): Float =
modifiers.foldLeft(1F)((v, m) => m.getLifespanModifier(genome, mate, v * currentModifier))
override def getProductionModifier(genome: IBeeGenome, currentModifier: Float): Float =
modifiers.foldLeft(1F)((v, m) => m.getProductionModifier(genome, v * currentModifier))
override def getFloweringModifier(genome: IBeeGenome, currentModifier: Float): Float =
modifiers.foldLeft(1F)((v, m) => m.getFloweringModifier(genome, v * currentModifier))
override def getGeneticDecay(genome: IBeeGenome, currentModifier: Float): Float =
modifiers.foldLeft(1F)((v, m) => m.getGeneticDecay(genome, v * currentModifier))
override def isSealed: Boolean = modifiers.exists(_.isSealed)
override def isSelfLighted: Boolean = modifiers.exists(_.isSelfLighted)
override def isSunlightSimulated: Boolean = modifiers.exists(_.isSunlightSimulated)
override def isHellish: Boolean = modifiers.exists(_.isHellish)
}
object BeeModifiers {
def from(beeHousing: IBeeHousing) = BeeModifiers(beeHousing.getBeeModifiers)
}