Added ability to change torque to velocity ratio in generator

This commit is contained in:
Calclavia 2014-01-18 12:43:41 +08:00
parent 883930a1bf
commit a5c124eeac
4 changed files with 41 additions and 16 deletions

View file

@ -35,6 +35,23 @@ public class BlockGenerator extends BlockRIRotatable
return false; return false;
} }
@Override
public boolean onSneakUseWrench(World world, int x, int y, int z, EntityPlayer entityPlayer, int side, float hitX, float hitY, float hitZ)
{
TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
if (tileEntity instanceof TileGenerator)
{
if (!world.isRemote)
{
entityPlayer.addChatMessage("Generator torque ratio: " + ((TileGenerator) tileEntity).toggleRatio());
}
return true;
}
return false;
}
@Override @Override
public TileEntity createNewTileEntity(World world) public TileEntity createNewTileEntity(World world)
{ {

View file

@ -19,12 +19,19 @@ public class TileGenerator extends TileElectrical implements IMechanical
/** Generator turns KE -> EE. Inverted one will turn EE -> KE. */ /** Generator turns KE -> EE. Inverted one will turn EE -> KE. */
public boolean isInversed = false; public boolean isInversed = false;
private float torqueRatio = 500;
public TileGenerator() public TileGenerator()
{ {
energy = new EnergyStorageHandler(10000, 1000); energy = new EnergyStorageHandler(10000);
this.ioMap = 728; this.ioMap = 728;
} }
public float toggleRatio()
{
return torqueRatio = (torqueRatio + 100) % energy.getMaxExtract();
}
@Override @Override
public void updateEntity() public void updateEntity()
{ {
@ -44,7 +51,11 @@ public class TileGenerator extends TileElectrical implements IMechanical
long extract = energy.extractEnergy(); long extract = energy.extractEnergy();
if (extract > 0) if (extract > 0)
((IMechanical) mechanical).onReceiveEnergy(getOuputDirection().getOpposite(), (long) (500), extract / 500f); {
float angularVelocity = extract / torqueRatio;
long torque = (long) (extract / angularVelocity);
((IMechanical) mechanical).onReceiveEnergy(getOuputDirection().getOpposite(), torque, angularVelocity);
}
} }
} }
} }

View file

@ -81,6 +81,11 @@ public class PartGear extends JCuboidPart implements JNormalOcclusion, TFacePart
@Override @Override
public void update() public void update()
{ {
if (markRotationUpdate)
{
updateRotations();
}
if (!this.world().isRemote) if (!this.world().isRemote)
{ {
if (manualCrankTime > 0) if (manualCrankTime > 0)
@ -91,11 +96,6 @@ public class PartGear extends JCuboidPart implements JNormalOcclusion, TFacePart
} }
else else
{ {
if (markRotationUpdate)
{
updateRotations();
}
/** /**
* Update angle rotation. * Update angle rotation.
*/ */
@ -110,13 +110,6 @@ public class PartGear extends JCuboidPart implements JNormalOcclusion, TFacePart
@Override @Override
public void onNetworkChanged() public void onNetworkChanged()
{ {
if (world() != null)
{
if (markRotationUpdate)
{
updateRotations();
}
}
} }
/** /**
@ -338,7 +331,7 @@ public class PartGear extends JCuboidPart implements JNormalOcclusion, TFacePart
@Override @Override
public void sendNetworkPacket(long torque, float angularVelocity) public void sendNetworkPacket(long torque, float angularVelocity)
{System.out.println("SEND"); {
tile().getWriteStream(this).writeByte(0).writeLong(torque).writeFloat(angularVelocity).writeBoolean(isClockwise); tile().getWriteStream(this).writeByte(0).writeLong(torque).writeFloat(angularVelocity).writeBoolean(isClockwise);
} }

View file

@ -162,6 +162,10 @@ public class MechanicalNetwork extends Network<IMechanicalNetwork, IMechanicalCo
} }
} }
} }
// Reset energy.
prevTorque = torque = 0;
prevAngularVelocity = angularVelocity = 0;
} }
/** Segmented out call so overriding can be done when conductors are reconstructed. */ /** Segmented out call so overriding can be done when conductors are reconstructed. */