Some more work on mechanical network

This commit is contained in:
Calclavia 2014-01-18 10:17:44 +08:00
parent 22b4188443
commit 5c3601585d
5 changed files with 38 additions and 9 deletions

View file

@ -22,7 +22,7 @@ public class TileGenerator extends TileElectrical implements IMechanical
public TileGenerator() public TileGenerator()
{ {
energy = new EnergyStorageHandler(10000, 100); energy = new EnergyStorageHandler(10000, 1000);
this.ioMap = 728; this.ioMap = 728;
} }
@ -44,7 +44,9 @@ public class TileGenerator extends TileElectrical implements IMechanical
if (mechanical instanceof IMechanical) if (mechanical instanceof IMechanical)
{ {
long extract = energy.extractEnergy(); long extract = energy.extractEnergy();
((IMechanical) mechanical).onReceiveEnergy(getOuputDirection().getOpposite(), (long) (extract / 0.5f), 0.5f);
if (extract > 0)
((IMechanical) mechanical).onReceiveEnergy(getOuputDirection().getOpposite(), (long) (500), extract / 500f);
} }
} }
} }

View file

@ -14,6 +14,7 @@ import resonantinduction.electrical.wire.EnumWireMaterial;
import calclavia.lib.utility.LanguageUtility; import calclavia.lib.utility.LanguageUtility;
import codechicken.lib.vec.BlockCoord; import codechicken.lib.vec.BlockCoord;
import codechicken.lib.vec.Vector3; import codechicken.lib.vec.Vector3;
import codechicken.multipart.ControlKeyModifer;
import codechicken.multipart.MultiPartRegistry; import codechicken.multipart.MultiPartRegistry;
import codechicken.multipart.TMultiPart; import codechicken.multipart.TMultiPart;
import codechicken.multipart.TileMultipart; import codechicken.multipart.TileMultipart;
@ -30,7 +31,7 @@ public class ItemMultimeter extends ItemMultipartBase
@Override @Override
public TMultiPart newPart(ItemStack itemStack, EntityPlayer player, World world, BlockCoord pos, int side, Vector3 hit) public TMultiPart newPart(ItemStack itemStack, EntityPlayer player, World world, BlockCoord pos, int side, Vector3 hit)
{ {
if (world.getBlockTileEntity(pos.x, pos.y, pos.z) instanceof TileMultipart) if (world.getBlockTileEntity(pos.x, pos.y, pos.z) instanceof TileMultipart && !ControlKeyModifer.isControlDown(player))
{ {
pos.offset(side ^ 1, -1); pos.offset(side ^ 1, -1);
} }

View file

@ -87,11 +87,19 @@ public class PartGear extends JCuboidPart implements JNormalOcclusion, TFacePart
manualCrankTime--; manualCrankTime--;
} }
if (!world().isRemote)
{
//TODO: Save packets.
if (markRotationUpdate || this.getNetwork().getPrevTorque() != this.getNetwork().getTorque() || this.getNetwork().getPrevAngularVelocity() != this.getNetwork().getAngularVelocity())
{
this.sendRotationUpdate(this.getNetwork().getTorque(), this.getNetwork().getAngularVelocity());
}
}
if (markRotationUpdate) if (markRotationUpdate)
{ {
refresh(); refresh();
} }
} }
@Override @Override
@ -194,7 +202,7 @@ public class PartGear extends JCuboidPart implements JNormalOcclusion, TFacePart
@Override @Override
public boolean activate(EntityPlayer player, MovingObjectPosition hit, ItemStack item) public boolean activate(EntityPlayer player, MovingObjectPosition hit, ItemStack item)
{ {
System.out.println(this.getNetwork().getAngularVelocity()); System.out.println(world().isRemote + " : " + this.getNetwork().getAngularVelocity());
if (player.isSneaking()) if (player.isSneaking())
{ {
this.manualCrankTime = 20; this.manualCrankTime = 20;
@ -207,9 +215,6 @@ public class PartGear extends JCuboidPart implements JNormalOcclusion, TFacePart
{ {
getNetwork().applyEnergy(torque, angularVelocity); getNetwork().applyEnergy(torque, angularVelocity);
markRotationUpdate = true; markRotationUpdate = true;
if (!world().isRemote)
this.sendRotationUpdate(torque, angularVelocity);
} }
@Override @Override

View file

@ -26,6 +26,10 @@ public interface IMechanicalNetwork extends INetwork<IMechanicalNetwork, IMechan
*/ */
public float getAngularVelocity(); public float getAngularVelocity();
public int getPrevTorque();
public float getPrevAngularVelocity();
/** Called to rebuild the network */ /** Called to rebuild the network */
public void reconstruct(); public void reconstruct();

View file

@ -29,6 +29,9 @@ import universalelectricity.core.net.NetworkTickHandler;
*/ */
public class MechanicalNetwork extends Network<IMechanicalNetwork, IMechanicalConnector, IMechanical> implements IMechanicalNetwork public class MechanicalNetwork extends Network<IMechanicalNetwork, IMechanicalConnector, IMechanical> implements IMechanicalNetwork
{ {
public int prevTorque = 0;
public float prevAngularVelocity = 0;
public int torque = 0; public int torque = 0;
public float angularVelocity = 0; public float angularVelocity = 0;
@ -38,6 +41,9 @@ public class MechanicalNetwork extends Network<IMechanicalNetwork, IMechanicalCo
@Override @Override
public void update() public void update()
{ {
prevTorque = torque;
prevAngularVelocity = angularVelocity;
for (IMechanicalConnector connector : this.getConnectors()) for (IMechanicalConnector connector : this.getConnectors())
{ {
connector.networkUpdate(); connector.networkUpdate();
@ -50,7 +56,6 @@ public class MechanicalNetwork extends Network<IMechanicalNetwork, IMechanicalCo
node.onReceiveEnergy(dir, torque, angularVelocity); node.onReceiveEnergy(dir, torque, angularVelocity);
} }
} }
torque = 0; torque = 0;
angularVelocity = 0; angularVelocity = 0;
} }
@ -263,4 +268,16 @@ public class MechanicalNetwork extends Network<IMechanicalNetwork, IMechanicalCo
newNetwork.reconstruct(); newNetwork.reconstruct();
} }
} }
@Override
public int getPrevTorque()
{
return prevTorque;
}
@Override
public float getPrevAngularVelocity()
{
return prevAngularVelocity;
}
} }