electrodynamics/src/main/scala/edx/mechanical/fluid/transport/NodePump.scala
2015-01-26 20:17:04 +08:00

36 lines
986 B
Scala

package edx.mechanical.fluid.transport
import edx.core.prefab.node.NodeFluidPressure
import net.minecraftforge.common.util.ForgeDirection
import net.minecraftforge.fluids.IFluidHandler
import resonantengine.api.graph.INodeProvider
/**
* A node for the pump
* @author Calclavia
*/
class NodePump(parent: INodeProvider) extends NodeFluidPressure(parent)
{
override def pressure(dir: ForgeDirection): Int =
{
if (pump.mechanicalNode.power > 0)
{
if (dir == pump.getDirection)
{
return Math.max(Math.log(Math.abs(pump.mechanicalNode.torque) + 1) * 3, 2).toInt
}
return -Math.max(Math.log(Math.abs(pump.mechanicalNode.torque) + 1) * 3, 2).toInt
}
return 0
}
def pump: TilePump = getParent.asInstanceOf[TilePump]
override def canConnect[B <: IFluidHandler](source: B, from: ForgeDirection): Boolean =
{
return super.canConnect(source, from) && (from == pump.getDirection || from == pump.getDirection.getOpposite)
}
}