From 6183c03fd124edfd5ca726f6dc25ccc1d46596f7 Mon Sep 17 00:00:00 2001 From: Calclavia Date: Fri, 23 Jan 2015 23:06:00 +0800 Subject: [PATCH] Added dynamic terminal field --- src/main/scala/edx/core/Settings.scala | 2 - .../edx/electrical/battery/TileBattery.scala | 41 ++++++++++--------- .../electrical/generator/TileSolarPanel.scala | 19 ++++++--- 3 files changed, 34 insertions(+), 28 deletions(-) diff --git a/src/main/scala/edx/core/Settings.scala b/src/main/scala/edx/core/Settings.scala index b9327ad4c..d51b14264 100644 --- a/src/main/scala/edx/core/Settings.scala +++ b/src/main/scala/edx/core/Settings.scala @@ -25,8 +25,6 @@ object Settings var SHINY_SILVER = true @Config var allowTurbineStacking: Boolean = true // Power Settings - @Config(category = "Power", key = "SolorPanel") - var solarPower: Int = 50 @Config(category = "Power") var fulminationOutputMultiplier: Double = 1 @Config(category = "Power", key = "WindTubineRatio") diff --git a/src/main/scala/edx/electrical/battery/TileBattery.scala b/src/main/scala/edx/electrical/battery/TileBattery.scala index f65def0df..0339fa883 100644 --- a/src/main/scala/edx/electrical/battery/TileBattery.scala +++ b/src/main/scala/edx/electrical/battery/TileBattery.scala @@ -67,18 +67,6 @@ class TileBattery extends SpatialTile(Material.iron) with TIO with TElectric wit updateConnectionMask() } - def updateConnectionMask() - { - electricNode.connectionMask = ForgeDirection.VALID_DIRECTIONS.filter(getIO(_) > 0).map(d => 1 << d.ordinal()).foldLeft(0)(_ | _) - electricNode.positiveTerminals.clear() - electricNode.negativeTerminals.clear() - electricNode.positiveTerminals.addAll(getInputDirections()) - electricNode.negativeTerminals.addAll(getOutputDirections()) - electricNode.reconstruct() - markUpdate() - notifyChange() - } - override def update() { super.update() @@ -95,15 +83,16 @@ class TileBattery extends SpatialTile(Material.iron) with TIO with TElectric wit val dissipatedEnergy = electricNode.power / 20 energy -= dissipatedEnergy } - else - { - //Recharge battery when current is flowing negative direction - energy += electricNode.power / 20 - } - - if (energy.prev != energy.value) - 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. @@ -141,6 +130,18 @@ class TileBattery extends SpatialTile(Material.iron) with TIO with TElectric wit updateConnectionMask() } + def updateConnectionMask() + { + electricNode.connectionMask = ForgeDirection.VALID_DIRECTIONS.filter(getIO(_) > 0).map(d => 1 << d.ordinal()).foldLeft(0)(_ | _) + electricNode.positiveTerminals.clear() + electricNode.negativeTerminals.clear() + electricNode.positiveTerminals.addAll(getInputDirections()) + electricNode.negativeTerminals.addAll(getOutputDirections()) + electricNode.reconstruct() + markUpdate() + notifyChange() + } + override def onPlaced(entityLiving: EntityLivingBase, itemStack: ItemStack) { if (!world.isRemote && itemStack.getItem.isInstanceOf[ItemBlockBattery]) diff --git a/src/main/scala/edx/electrical/generator/TileSolarPanel.scala b/src/main/scala/edx/electrical/generator/TileSolarPanel.scala index b53fdee5e..9dfaf7074 100644 --- a/src/main/scala/edx/electrical/generator/TileSolarPanel.scala +++ b/src/main/scala/edx/electrical/generator/TileSolarPanel.scala @@ -1,24 +1,31 @@ package edx.electrical.generator import cpw.mods.fml.relauncher.{Side, SideOnly} -import edx.core.{Reference, Settings} +import edx.core.Reference import net.minecraft.block.material.Material import net.minecraft.client.renderer.texture.IIconRegister import net.minecraft.util.IIcon +import net.minecraftforge.common.util.ForgeDirection import resonant.lib.content.prefab.TIO -import resonant.lib.prefab.tile.mixed.TileElectric -import resonant.lib.prefab.tile.spatial.SpatialBlock +import resonant.lib.grid.core.TSpatialNodeProvider +import resonant.lib.prefab.tile.spatial.{SpatialBlock, SpatialTile} +import resonant.lib.prefab.tile.traits.TElectric import resonant.lib.render.block.RenderConnectedTexture import resonant.lib.transform.region.Cuboid -class TileSolarPanel extends TileElectric(Material.iron) with TIO with RenderConnectedTexture +import scala.collection.convert.wrapAll._ + +class TileSolarPanel extends SpatialTile(Material.iron) with TElectric with TSpatialNodeProvider with TIO with RenderConnectedTexture { ioMap = 728 textureName = "solarPanel_top" bounds = new Cuboid(0, 0, 0, 1, 0.3f, 1) isOpaqueCube = false - edgeTexture = Reference.prefix + "tankEdge" + electricNode.dynamicTerminals + electricNode.positiveTerminals.addAll(Seq(ForgeDirection.NORTH, ForgeDirection.EAST)) + electricNode.negativeTerminals.addAll(Seq(ForgeDirection.SOUTH, ForgeDirection.WEST)) + nodes.add(electricNode) @SideOnly(Side.CLIENT) override def registerIcons(iconReg: IIconRegister) @@ -51,7 +58,7 @@ class TileSolarPanel extends TileElectric(Material.iron) with TIO with RenderCon { if (!(world.isThundering || world.isRaining)) { - electricNode.generateVoltage(Settings.solarPower / 20) + electricNode.generateVoltage(15) } } }