Added helper create method in Resonant

This commit is contained in:
Calclavia 2014-09-14 14:40:19 +08:00
parent 0b8230f4b1
commit fa255a469b
11 changed files with 26 additions and 26 deletions

View file

@ -12,13 +12,15 @@ object ResonantPartFactory extends IPartFactory
{ {
val prefix = Reference.prefix val prefix = Reference.prefix
private val partMap = mutable.Map.empty[String, Class[_<:TMultiPart]] private val partMap = mutable.Map.empty[String, Class[_ <: TMultiPart]]
def register(part: Class[_<:TMultiPart]) def register(part: Class[_ <: TMultiPart])
{ {
partMap.put(prefix + part.getClass.getSimpleName, part) partMap += (prefix + part.getSimpleName -> part)
} }
def create[C <: TMultiPart](part: Class[C]): C = MultiPartRegistry.createPart((partMap map (_.swap)).get(part).get, false).asInstanceOf[C]
def init() = MultiPartRegistry.registerParts(this, partMap.keys.toArray) def init() = MultiPartRegistry.registerParts(this, partMap.keys.toArray)
def createPart(name: String, client: Boolean): TMultiPart = partMap(name).newInstance() def createPart(name: String, client: Boolean): TMultiPart = partMap(name).newInstance()

View file

@ -1,4 +1,4 @@
package resonantinduction.core.prefab.part package resonantinduction.core.prefab.part.connector
import java.util import java.util
import java.util.{Collection, HashSet, Set} import java.util.{Collection, HashSet, Set}

View file

@ -1,4 +1,4 @@
package resonantinduction.core.prefab.part package resonantinduction.core.prefab.part.connector
import codechicken.lib.data.{MCDataInput, MCDataOutput} import codechicken.lib.data.{MCDataInput, MCDataOutput}
import codechicken.multipart.TMultiPart import codechicken.multipart.TMultiPart

View file

@ -1,4 +1,4 @@
package resonantinduction.core.prefab.part package resonantinduction.core.prefab.part.connector
import codechicken.lib.data.{MCDataInput, MCDataOutput} import codechicken.lib.data.{MCDataInput, MCDataOutput}
import codechicken.multipart.TMultiPart import codechicken.multipart.TMultiPart

View file

@ -1,8 +1,7 @@
package resonantinduction.core.prefab.part package resonantinduction.core.prefab.part.connector
import codechicken.lib.data.{MCDataInput, MCDataOutput} import codechicken.lib.data.{MCDataInput, MCDataOutput}
import codechicken.multipart.TMultiPart import codechicken.multipart.TMultiPart
import net.minecraft.item.Item
import net.minecraft.nbt.NBTTagCompound import net.minecraft.nbt.NBTTagCompound
/** /**

View file

@ -1,4 +1,4 @@
package resonantinduction.core.prefab.part package resonantinduction.core.prefab.part.connector
import codechicken.multipart.{IRedstonePart, TMultiPart} import codechicken.multipart.{IRedstonePart, TMultiPart}
import net.minecraft.item.ItemStack import net.minecraft.item.ItemStack

View file

@ -113,7 +113,8 @@ object Electrical
modproxies.preInit() modproxies.preInit()
} }
@EventHandler def init(evt: FMLInitializationEvent) @EventHandler
def init(evt: FMLInitializationEvent)
{ {
Electrical.proxy.init Electrical.proxy.init
modproxies.init() modproxies.init()

View file

@ -15,13 +15,13 @@ import net.minecraftforge.common.util.ForgeDirection
import org.lwjgl.input.Keyboard import org.lwjgl.input.Keyboard
import resonant.lib.render.EnumColor import resonant.lib.render.EnumColor
import resonant.lib.utility.LanguageUtility import resonant.lib.utility.LanguageUtility
import resonant.lib.wrapper.WrapList._
import resonantinduction.core.util.MultipartUtil import resonantinduction.core.util.MultipartUtil
import resonantinduction.core.{Reference, ResonantTab} import resonantinduction.core.{Reference, ResonantPartFactory, ResonantTab}
import resonantinduction.electrical.wire.base.{WireMaterial, TWire} import resonantinduction.electrical.wire.base.WireMaterial
import resonantinduction.electrical.wire.flat.{PartFlatWire, RenderFlatWire} import resonantinduction.electrical.wire.flat.{PartFlatWire, RenderFlatWire}
import resonantinduction.electrical.wire.framed.PartFramedWire import resonantinduction.electrical.wire.framed.PartFramedWire
import universalelectricity.api.UnitDisplay import universalelectricity.api.UnitDisplay
import resonant.lib.wrapper.WrapList._
class ItemWire extends TItemMultiPart class ItemWire extends TItemMultiPart
{ {
@ -40,7 +40,7 @@ class ItemWire extends TItemMultiPart
return null return null
} }
val wire = (if(ControlKeyHandler.isPressed) MultiPartRegistry.createPart("resonant_induction_framed_wire", false) else MultiPartRegistry.createPart("resonant_induction_flat_wire", false)).asInstanceOf[TWire] val wire = if (ControlKeyHandler.isPressed) ResonantPartFactory.create(classOf[PartFramedWire]) else ResonantPartFactory.create(classOf[PartFlatWire])
if (wire != null) if (wire != null)
{ {

View file

@ -5,13 +5,13 @@ import codechicken.multipart.TMultiPart
import net.minecraft.item.{Item, ItemStack} import net.minecraft.item.{Item, ItemStack}
import net.minecraft.nbt.NBTTagCompound import net.minecraft.nbt.NBTTagCompound
import net.minecraftforge.common.util.ForgeDirection import net.minecraftforge.common.util.ForgeDirection
import resonantinduction.core.prefab.part.{TColorable, TInsulatable, TMaterial, TPart} import resonantinduction.core.prefab.part.connector.{TColorable, TInsulatable, TMaterial, TPart}
import resonantinduction.electrical.ElectricalContent import resonantinduction.electrical.ElectricalContent
import universalelectricity.api.core.grid.INodeProvider import universalelectricity.api.core.grid.INodeProvider
import universalelectricity.simulator.dc.DCNode import universalelectricity.simulator.dc.DCNode
/** /**
* Trait implemented by wires * Class extended by wires
* @author Calclavia * @author Calclavia
*/ */
abstract class TWire extends TMultiPart with TPart with TMaterial[WireMaterial] with TInsulatable with TColorable abstract class TWire extends TMultiPart with TPart with TMaterial[WireMaterial] with TInsulatable with TColorable

View file

@ -2,7 +2,7 @@ package resonantinduction.mechanical.fluid.pipe
import codechicken.lib.data.MCDataInput import codechicken.lib.data.MCDataInput
import codechicken.lib.render.CCRenderState import codechicken.lib.render.CCRenderState
import codechicken.lib.vec.{Cuboid6, Vector3} import codechicken.lib.vec.Vector3
import codechicken.multipart.{TNormalOcclusion, TSlottedPart} import codechicken.multipart.{TNormalOcclusion, TSlottedPart}
import cpw.mods.fml.relauncher.{Side, SideOnly} import cpw.mods.fml.relauncher.{Side, SideOnly}
import net.minecraft.client.renderer.RenderBlocks import net.minecraft.client.renderer.RenderBlocks
@ -11,7 +11,7 @@ import net.minecraft.nbt.NBTTagCompound
import net.minecraftforge.common.util.ForgeDirection import net.minecraftforge.common.util.ForgeDirection
import net.minecraftforge.fluids._ import net.minecraftforge.fluids._
import resonant.lib.`type`.EvictingList import resonant.lib.`type`.EvictingList
import resonantinduction.core.prefab.part.{PartFramedNode, TColorable, TMaterial} import resonantinduction.core.prefab.part.connector.{PartFramedNode, TColorable, TMaterial}
import resonantinduction.mechanical.Mechanical import resonantinduction.mechanical.Mechanical
import resonantinduction.mechanical.fluid.pipe.PipeMaterials.PipeMaterial import resonantinduction.mechanical.fluid.pipe.PipeMaterials.PipeMaterial
@ -32,7 +32,7 @@ class PartPipe extends PartFramedNode with TMaterial[PipeMaterial] with TColorab
setNode(new PipePressureNode(this)) setNode(new PipePressureNode(this))
def preparePlacement(meta:Int) def preparePlacement(meta: Int)
{ {
setMaterial(meta) setMaterial(meta)
} }
@ -44,7 +44,6 @@ class PartPipe extends PartFramedNode with TMaterial[PipeMaterial] with TColorab
def getMaterialID: Int = material.id def getMaterialID: Int = material.id
override def update() override def update()
{ {
super.update() super.update()
@ -67,11 +66,11 @@ class PartPipe extends PartFramedNode with TMaterial[PipeMaterial] with TColorab
var averageAmount: Int = 0 var averageAmount: Int = 0
if (averageTankData.size > 0) if (averageTankData.size > 0)
{ {
for (i <- 0 until averageTankData.size) for (i <- 0 until averageTankData.size)
{
{ {
{ averageAmount += averageTankData.get(i)
averageAmount += averageTankData.get(i) }
}
} }
averageAmount /= averageTankData.size averageAmount /= averageTankData.size

View file

@ -5,8 +5,7 @@ import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.IFluidHandler; import net.minecraftforge.fluids.IFluidHandler;
import resonant.lib.utility.WorldUtility; import resonant.lib.utility.WorldUtility;
import resonantinduction.core.prefab.node.NodePressure; import resonantinduction.core.prefab.node.NodePressure;
import resonantinduction.core.prefab.part.TColorable; import resonantinduction.core.prefab.part.connector.TColorable$;
import resonantinduction.core.prefab.part.TColorable$;
import universalelectricity.api.core.grid.INode; import universalelectricity.api.core.grid.INode;
import universalelectricity.api.core.grid.INodeProvider; import universalelectricity.api.core.grid.INodeProvider;