Fixed internal connection divider

This commit is contained in:
Calclavia 2013-12-23 15:09:52 +08:00
parent 7dfcd2e6a2
commit 53ce24127e
2 changed files with 45 additions and 5 deletions

View file

@ -76,6 +76,7 @@ public class ItemWire extends JItemMultiPart
{
list.add("Resistance: " + UnitDisplay.getDisplay(EnumWireMaterial.values()[itemstack.getItemDamage()].resistance, Unit.RESISTANCE));
list.add("Max Amperage: " + UnitDisplay.getDisplay(EnumWireMaterial.values()[itemstack.getItemDamage()].maxAmps, Unit.AMPERE));
list.add("Shock Damage: " + EnumWireMaterial.values()[itemstack.getItemDamage()].damage);
}
@SideOnly(Side.CLIENT)

View file

@ -17,7 +17,6 @@ import resonantinduction.ResonantInduction;
import resonantinduction.Utility;
import resonantinduction.wire.EnumWireMaterial;
import resonantinduction.wire.render.RenderFlatWire;
import universalelectricity.api.energy.IConductor;
import codechicken.lib.colour.Colour;
import codechicken.lib.data.MCDataInput;
import codechicken.lib.data.MCDataOutput;
@ -293,9 +292,10 @@ public class PartFlatWire extends PartAdvancedWire implements TFacePart, JNormal
@Override
public void recalculateConnections()
{
this.connections = new Object[6];
this.updateOpenConnections();
boolean[] calculatedSides = new boolean[6];
/**
* Check external connections.
*/
@ -306,7 +306,10 @@ public class PartFlatWire extends PartAdvancedWire implements TFacePart, JNormal
int absDir = Rotation.rotateSide(this.side, r);
// Check direct connection.
this.setExternalConnection(r, absDir);
if (this.setExternalConnection(r, absDir))
{
calculatedSides[absDir] = true;
}
// Check Corner Connection
BlockCoord cornerPos = new BlockCoord(tile());
@ -326,9 +329,16 @@ public class PartFlatWire extends PartAdvancedWire implements TFacePart, JNormal
// We found a wire, merge networks!
this.connections[absDir] = tp;
this.getNetwork().merge(((PartFlatWire) tp).getNetwork());
calculatedSides[absDir] = true;
continue;
}
}
}
if (!calculatedSides[absDir])
{
this.disconnect(absDir);
}
}
}
@ -339,7 +349,9 @@ public class PartFlatWire extends PartAdvancedWire implements TFacePart, JNormal
{
int absDir = Rotation.rotateSide(this.side, r);
// Check straight ahead.
/**
* Look for an internal straight connection.
*/
if (tile().partMap(PartMap.edgeBetween(absDir, this.side)) == null)
{
TMultiPart tp = tile().partMap(absDir);
@ -352,10 +364,15 @@ public class PartFlatWire extends PartAdvancedWire implements TFacePart, JNormal
continue;
}
}
if (!calculatedSides[absDir])
{
this.disconnect(absDir);
}
}
// Connect to the face of the block the wire is placed on.
this.setExternalConnection(0, this.side);
this.setExternalConnection(-1, this.side);
this.getNetwork().reconstruct();
}
@ -377,6 +394,7 @@ public class PartFlatWire extends PartAdvancedWire implements TFacePart, JNormal
{
// Check the wire we are connecting to and see if THAT block can accept this one.
int otherR = (r + 2) % 4;
if (((PartFlatWire) tp).canConnectTo(this) && ((PartFlatWire) tp).maskOpen(otherR))
{
// We found a wire! Merge connection.
@ -385,6 +403,8 @@ public class PartFlatWire extends PartAdvancedWire implements TFacePart, JNormal
return true;
}
}
this.disconnect(absSide);
}
/**
@ -398,9 +418,28 @@ public class PartFlatWire extends PartAdvancedWire implements TFacePart, JNormal
return true;
}
this.disconnect(absSide);
return false;
}
private void disconnect(int i)
{
if (this.connections[i] != null)
{
if (this.connections[i] instanceof PartFlatWire)
{
PartFlatWire wire = (PartFlatWire) this.connections[i];
this.connections[i] = null;
this.getNetwork().split(this, wire);
}
else
{
this.connections[i] = null;
}
}
}
@Override
public Object[] getConnections()
{