Batteries now can be charged

This commit is contained in:
Calclavia 2015-01-23 19:43:08 +08:00
parent a273ca3975
commit f555eb9506
2 changed files with 28 additions and 20 deletions

View file

@ -87,26 +87,34 @@ class TileBattery extends SpatialTile(Material.iron) with TIO with TElectric wit
{ {
if (isIndirectlyPowered) if (isIndirectlyPowered)
{ {
if (energy > 0) if (electricNode.voltage >= 0)
{ {
//Discharge battery when current is flowing positive direction
//TODO: Allow player to set the power output //TODO: Allow player to set the power output
electricNode.generatePower(10000) electricNode.generatePower(Math.min(10000, energy.value))
val dissipatedEnergy = electricNode.power / 20 val dissipatedEnergy = electricNode.power / 20
energy -= dissipatedEnergy energy -= dissipatedEnergy
markUpdate()
} }
else
{
//Recharge battery when current is flowing negative direction
energy += electricNode.power / 20
}
if (energy.prev != energy.value)
markUpdate()
} }
/** /**
* Update packet when energy level changes. * Update packet when energy level changes.
*/
val prevEnergyLevel = energyRenderLevel val prevEnergyLevel = energyRenderLevel
energyRenderLevel = Math.round((energy.value / TileBattery.getEnergyForTier(getBlockMetadata).toDouble) * 8).toInt energyRenderLevel = Math.round((energy.value / TileBattery.getEnergyForTier(getBlockMetadata).toDouble) * 8).toInt
if (prevEnergyLevel != energyRenderLevel) if (prevEnergyLevel != energyRenderLevel)
{ {
markUpdate() markUpdate()
} }*/
} }
} }

View file

@ -48,8 +48,8 @@ class TileWindTurbine extends TileTurbine with IBoilHandler
private var openBlockCache = new Array[Byte](224) private var openBlockCache = new Array[Byte](224)
private var checkCount = 0 private var checkCount = 0
private var efficiency = 0f private var efficiency = 0f
private var windPower = 0d private var windTorque = 0d
private var nextWindPower = 0d private var nextWindTorque = 0d
//Constructor //Constructor
this.itemBlock = classOf[ItemBlockMetadata] this.itemBlock = classOf[ItemBlockMetadata]
@ -76,13 +76,13 @@ class TileWindTurbine extends TileTurbine with IBoilHandler
if (ticks % 20 == 0) if (ticks % 20 == 0)
computePower() computePower()
windPower = MathUtility.lerp(windPower, nextWindPower, ticks % 20 / 20d) windTorque = MathUtility.lerp(windTorque, nextWindTorque, ticks % 20 / 20d)
getMultiBlock.get.mechanicalNode.accelerate(windPower * multiBlockRadius / 20) getMultiBlock.get.mechanicalNode.accelerate(windTorque * multiBlockRadius)
} }
//Generate from steam //Generate from steam
val steamPower = if (gasTank.getFluid != null) gasTank.drain(gasTank.getFluidAmount, true).amount else 0 * 1000 * Settings.steamMultiplier val steamPower = if (gasTank.getFluid != null) gasTank.drain(gasTank.getFluidAmount, true).amount else 0 * 1000 * Settings.steamMultiplier
getMultiBlock.get.mechanicalNode.accelerate(steamPower * multiBlockRadius / 20) getMultiBlock.get.mechanicalNode.accelerate(steamPower * multiBlockRadius)
} }
} }
} }
@ -136,7 +136,7 @@ class TileWindTurbine extends TileTurbine with IBoilHandler
val hasBonus = biome.isInstanceOf[BiomeGenOcean] || biome.isInstanceOf[BiomeGenPlains] || biome == BiomeGenBase.river val hasBonus = biome.isInstanceOf[BiomeGenOcean] || biome.isInstanceOf[BiomeGenPlains] || biome == BiomeGenBase.river
val windSpeed = (worldObj.rand.nextFloat / 5) + (yCoord / 256f) * (if (hasBonus) 1.2f else 1) + worldObj.getRainStrength(0.5f) val windSpeed = (worldObj.rand.nextFloat / 5) + (yCoord / 256f) * (if (hasBonus) 1.2f else 1) + worldObj.getRainStrength(0.5f)
nextWindPower = 10 * materialMultiplier * multiblockMultiplier * windSpeed * efficiency * Settings.WIND_POWER_RATIO / 20 nextWindTorque = 5 * materialMultiplier * multiblockMultiplier * windSpeed * efficiency * Settings.WIND_POWER_RATIO / 20
} }
override def getSubBlocks(par1: Item, par2CreativeTabs: CreativeTabs, par3List: List[_]) override def getSubBlocks(par1: Item, par2CreativeTabs: CreativeTabs, par3List: List[_])
@ -195,6 +195,15 @@ class TileWindTurbine extends TileTurbine with IBoilHandler
} }
} }
@SideOnly(Side.CLIENT)
override def renderInventory(itemStack: ItemStack)
{
GL11.glPushMatrix()
GL11.glTranslatef(0.5f, 0.5f, 0.5f)
render(itemStack.getItemDamage, 1, false)
GL11.glPopMatrix()
}
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
def render(tier: Int, size: Int, isConstructed: Boolean) def render(tier: Int, size: Int, isConstructed: Boolean)
{ {
@ -238,13 +247,4 @@ class TileWindTurbine extends TileTurbine with IBoilHandler
TileWindTurbine.model.renderOnly("SmallHub") TileWindTurbine.model.renderOnly("SmallHub")
} }
} }
@SideOnly(Side.CLIENT)
override def renderInventory(itemStack: ItemStack)
{
GL11.glPushMatrix()
GL11.glTranslatef(0.5f, 0.5f, 0.5f)
render(itemStack.getItemDamage, 1, false)
GL11.glPopMatrix()
}
} }