More work on TWire to unify framed and flat wire code

This commit is contained in:
Calclavia 2014-09-13 21:33:58 +08:00
parent 35afb54126
commit 07e50eb5dd
7 changed files with 46 additions and 72 deletions

View file

@ -12,7 +12,7 @@ import resonantinduction.core.util.ResonantUtil
* Trait applied to objects that can associates with a color.
* @author Calclavia
*/
trait TColorable[M] extends TMultiPart with TPart
trait TColorable extends TMultiPart with TPart
{
val defaultColor = 15
var colorID = defaultColor
@ -74,7 +74,7 @@ trait TColorable[M] extends TMultiPart with TPart
{
if (packetID == 2)
{
colorID = packet.readInt
colorID = packet.readInt()
tile.markRender()
}
}
@ -90,5 +90,4 @@ trait TColorable[M] extends TMultiPart with TPart
super.load(nbt)
this.colorID = nbt.getInteger("dyeID")
}
}

View file

@ -12,6 +12,7 @@ import scala.collection.convert.wrapAll._
import scala.collection.mutable
/**
* Trait applied to objects that can be insulated/enhanced by a certain item.
* @author Calclavia
*/
trait TInsulatable extends TMultiPart with TPart

View file

@ -24,7 +24,7 @@ trait TMaterial[M] extends TMultiPart
override def writeDesc(packet: MCDataOutput)
{
packet.writeByte(getMaterialID.asInstanceOf[Byte])
packet.writeByte(getMaterialID.toByte)
}
override def save(nbt: NBTTagCompound)

View file

@ -57,7 +57,7 @@ class ItemWire extends TItemMultiPart
override def getUnlocalizedName(itemStack: ItemStack): String =
{
return super.getUnlocalizedName(itemStack) + "." + WireMaterial.values()(itemStack.getItemDamage).getName.toLowerCase
return super.getUnlocalizedName(itemStack) + "." + WireMaterial.values()(itemStack.getItemDamage).name.toLowerCase
}
@SuppressWarnings(Array("unchecked")) override def addInformation(itemStack: ItemStack, player: EntityPlayer, list: List[_], par4: Boolean)
@ -69,7 +69,7 @@ class ItemWire extends TItemMultiPart
else
{
list.add(EnumColor.AQUA + LanguageUtility.getLocal("tooltip.wire.resistance").replace("%v", "" + EnumColor.ORANGE + new UnitDisplay(UnitDisplay.Unit.RESISTANCE, WireMaterial.values()(itemStack.getItemDamage).resistance)))
list.add(EnumColor.AQUA + LanguageUtility.getLocal("tooltip.wire.current").replace("%v", "" + EnumColor.ORANGE + new UnitDisplay(UnitDisplay.Unit.AMPERE, WireMaterial.values()(itemStack.getItemDamage).maxAmps)))
list.add(EnumColor.AQUA + LanguageUtility.getLocal("tooltip.wire.current").replace("%v", "" + EnumColor.ORANGE + new UnitDisplay(UnitDisplay.Unit.AMPERE, WireMaterial.values()(itemStack.getItemDamage).maxCurrent)))
list.add(EnumColor.AQUA + LanguageUtility.getLocal("tooltip.wire.damage").replace("%v", "" + EnumColor.ORANGE + WireMaterial.values()(itemStack.getItemDamage).damage))
list.addAll(LanguageUtility.splitStringPerWord(LanguageUtility.getLocal("tooltip.wire.helpText"), 5))
}
@ -88,7 +88,7 @@ class ItemWire extends TItemMultiPart
@SideOnly(Side.CLIENT) override def getColorFromItemStack(itemStack: ItemStack, par2: Int): Int =
{
return new Color(WireMaterial.values()(itemStack.getItemDamage).color.rgb).darker.getRGB
return new Color(WireMaterial.values()(itemStack.getItemDamage).color).darker.getRGB
}
override def getSubItems(itemID: Item, tab: CreativeTabs, listToAddTo: List[_])

View file

@ -80,7 +80,7 @@ public abstract class PartAdvancedWire extends PartConductor
//@Override
public long getCurrentCapacity()
{
return this.getMaterial().maxAmps;
return this.getMaterial().maxCurrent;
}
/** Material Methods */

View file

@ -4,82 +4,53 @@ import net.minecraft.block.Block;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.oredict.OreDictionary;
import codechicken.lib.colour.ColourRGBA;
/**
* An enumerator for different wire materials. The metadata of the wire determines the type of the
* wire.
*
* @author Calclavia
*
*/
public enum WireMaterial
{
/** Copper: General. */
COPPER("Copper", 1.68f, 5, 200, 184, 115, 51),
/** Tin: Low shock, cheap */
TIN("Tin", 3.1f, 1, 100, 132, 132, 130),
/** Iron: High Capacity */
IRON("Iron", 3f, 3, 800, 97, 102, 105),
/** Aluminum: High Shock */
ALUMINUM("Aluminum", 2.6f, 10, 600, 215, 205, 181),
/** Aluminum: Low Resistance */
SILVER("Silver", 1.59f, 5, 700, 192, 192, 192),
/** Superconductor: Over-powered */
SUPERCONDUCTOR("Superconductor", 0, 10, 1000000, 255, 255, 1);
/**
* Copper: General.
*/
COPPER("Copper", 1.68f, 5, 200, 0xB87333),
/**
* Tin: Low shock, cheap
*/
TIN("Tin", 3.1f, 1, 100, 0x848482),
/**
* Iron: High Capacity
*/
IRON("Iron", 3f, 3, 800, 0x616669),
/**
* Aluminum: High Shock
*/
ALUMINUM("Aluminum", 2.6f, 10, 600, 0xD7CDB5),
/**
* Aluminum: Low Resistance
*/
SILVER("Silver", 1.59f, 5, 700, 0xC0C0C0),
/**
* Superconductor: Over-powered
*/
SUPERCONDUCTOR("Superconductor", 0, 10, 1000000, 0xFFFF01);
public final String name;
public final float resistance;
public final int damage;
public final long maxAmps;
public final ColourRGBA color;
private ItemStack wire;
private final String name;
public final long maxCurrent;
public final int color;
private WireMaterial(String name, float resistance, int electrocutionDamage, long maxAmps, int r, int g, int b)
private WireMaterial(String name, float resistance, int damage, long maxCurrent, int color)
{
this.name = name;
/** Multiply the realistic resistance by a factor for game balance. */
this.resistance = resistance / 100;
this.damage = electrocutionDamage;
this.maxAmps = maxAmps;
this.color = new ColourRGBA(r, g, b, 255);
this.resistance = resistance;
this.damage = damage;
this.maxCurrent = maxCurrent;
this.color = color;
}
public String getName()
{
return name;
}
public ItemStack getWire()
{
return getWire(1);
}
public ItemStack getWire(int amount)
{
ItemStack returnStack = wire.copy();
returnStack.stackSize = amount;
return returnStack;
}
public void setWire(ItemStack item)
{
if (wire == null)
{
wire = item;
OreDictionary.registerOre(getName().toLowerCase() + "Wire", wire);
}
}
public void setWire(Item item)
{
setWire(new ItemStack(item, 1, ordinal()));
}
public void setWire(Block block)
{
setWire(new ItemStack(block, 1, ordinal()));
}
}

View file

@ -1,15 +1,18 @@
package resonantinduction.electrical.wire.base
import net.minecraft.item.ItemStack
import resonantinduction.core.prefab.part.TColorable
import net.minecraft.item.{Item, ItemStack}
import resonantinduction.core.prefab.part.{TMaterial, TInsulatable, TColorable}
import resonantinduction.electrical.ElectricalContent
import resonantinduction.electrical.wire.WireMaterial
/**
* Trait implemented by wires
* @author Calclavia
*/
trait TWire extends TColorable[WireMaterial]
trait TWire extends TColorable with TMaterial[WireMaterial] with TInsulatable
{
override protected val insulationItem: Item = ElectricalContent.itemInsulation
def preparePlacement(side: Int, meta: Int)
override def setMaterial(i: Int)