Вот есть готовый код для бомбометания на больших скоростях:
Код:
public boolean typeDiveBomberToggleAutomation()
{
return false;
}
public void typeDiveBomberAdjAltitudeReset()
{
}
public void typeDiveBomberAdjAltitudePlus()
{
}
public void typeDiveBomberAdjAltitudeMinus()
{
}
public void typeDiveBomberAdjVelocityReset()
{
}
public void typeDiveBomberAdjVelocityPlus()
{
}
public void typeDiveBomberAdjVelocityMinus()
{
}
public void typeDiveBomberAdjDiveAngleReset()
{
}
public void typeDiveBomberAdjDiveAnglePlus()
{
}
public void typeDiveBomberAdjDiveAngleMinus()
{
}
public void typeDiveBomberReplicateToNet(NetMsgGuaranted netmsgguaranted)
throws IOException
{
}
public void typeDiveBomberReplicateFromNet(NetMsgInput netmsginput)
throws IOException
{
}
public boolean typeBomberToggleAutomation()
{
bSightAutomation = !bSightAutomation;
bSightBombDump = false;
HUD.log(AircraftHotKeys.hudLogWeaponId, "BombsightAutomation" + (bSightAutomation ? "ON" : "OFF"));
return bSightAutomation;
}
public void typeBomberAdjDistanceReset()
{
fSightCurDistance = 0.0F;
fSightCurForwardAngle = 0.0F;
}
public void typeBomberAdjDistancePlus()
{
fSightCurForwardAngle++;
if(fSightCurForwardAngle > 85F)
fSightCurForwardAngle = 85F;
fSightCurDistance = fSightCurAltitude * (float)Math.tan(Math.toRadians(fSightCurForwardAngle));
HUD.log(AircraftHotKeys.hudLogWeaponId, "BombsightElevation", new Object[] {
new Integer((int)fSightCurForwardAngle)
});
if(bSightAutomation)
typeBomberToggleAutomation();
}
public void typeBomberAdjDistanceMinus()
{
fSightCurForwardAngle--;
if(fSightCurForwardAngle < 0.0F)
fSightCurForwardAngle = 0.0F;
fSightCurDistance = fSightCurAltitude * (float)Math.tan(Math.toRadians(fSightCurForwardAngle));
HUD.log(AircraftHotKeys.hudLogWeaponId, "BombsightElevation", new Object[] {
new Integer((int)fSightCurForwardAngle)
});
if(bSightAutomation)
typeBomberToggleAutomation();
}
public void typeBomberAdjSideslipReset()
{
fSightCurSideslip = 0.0F;
}
public void typeBomberAdjSideslipPlus()
{
fSightCurSideslip += 0.05F;
if(fSightCurSideslip > 3F)
fSightCurSideslip = 3F;
HUD.log(AircraftHotKeys.hudLogWeaponId, "BombsightSlip", new Object[] {
new Float(fSightCurSideslip * 10F)
});
}
public void typeBomberAdjSideslipMinus()
{
fSightCurSideslip -= 0.05F;
if(fSightCurSideslip < -3F)
fSightCurSideslip = -3F;
HUD.log(AircraftHotKeys.hudLogWeaponId, "BombsightSlip", new Object[] {
new Float(fSightCurSideslip * 10F)
});
}
public void typeBomberAdjAltitudeReset()
{
fSightCurAltitude = 850F;
}
public void typeBomberAdjAltitudePlus()
{
fSightCurAltitude += 10F;
if(fSightCurAltitude > 6000F)
fSightCurAltitude = 6000F;
HUD.log(AircraftHotKeys.hudLogWeaponId, "BombsightAltitude", new Object[] {
new Integer((int)fSightCurAltitude)
});
fSightCurDistance = fSightCurAltitude * (float)Math.tan(Math.toRadians(fSightCurForwardAngle));
}
public void typeBomberAdjAltitudeMinus()
{
fSightCurAltitude -= 10F;
if(fSightCurAltitude < 850F)
fSightCurAltitude = 850F;
HUD.log(AircraftHotKeys.hudLogWeaponId, "BombsightAltitude", new Object[] {
new Integer((int)fSightCurAltitude)
});
fSightCurDistance = fSightCurAltitude * (float)Math.tan(Math.toRadians(fSightCurForwardAngle));
}
public void typeBomberAdjSpeedReset()
{
fSightCurSpeed = 250F;
}
public void typeBomberAdjSpeedPlus()
{
fSightCurSpeed += 10F;
if(fSightCurSpeed > 900F)
fSightCurSpeed = 900F;
HUD.log(AircraftHotKeys.hudLogWeaponId, "BombsightSpeed", new Object[] {
new Integer((int)fSightCurSpeed)
});
}
public void typeBomberAdjSpeedMinus()
{
fSightCurSpeed -= 10F;
if(fSightCurSpeed < 150F)
fSightCurSpeed = 150F;
HUD.log(AircraftHotKeys.hudLogWeaponId, "BombsightSpeed", new Object[] {
new Integer((int)fSightCurSpeed)
});
}
public void typeBomberUpdate(float f)
{
if((double)Math.abs(FM.Or.getKren()) > 4.5D)
{
fSightCurReadyness -= 0.0666666F * f;
if(fSightCurReadyness < 0.0F)
fSightCurReadyness = 0.0F;
}
if(fSightCurReadyness < 1.0F)
fSightCurReadyness += 0.0333333F * f;
else
if(bSightAutomation)
{
fSightCurDistance -= (fSightCurSpeed / 3.6F) * f;
if(fSightCurDistance < 0.0F)
{
fSightCurDistance = 0.0F;
typeBomberToggleAutomation();
}
fSightCurForwardAngle = (float)Math.toDegrees(Math.atan(fSightCurDistance / fSightCurAltitude));
if((double)fSightCurDistance < (double)(fSightCurSpeed / 3.6F) * Math.sqrt(fSightCurAltitude * 0.2038736F))
bSightBombDump = true;
if(bSightBombDump)
if(FM.isTick(3, 0))
{
if(FM.CT.Weapons[3] != null && FM.CT.Weapons[3][FM.CT.Weapons[3].length - 1] != null && FM.CT.Weapons[3][FM.CT.Weapons[3].length - 1].haveBullets())
{
FM.CT.WeaponControl[3] = true;
HUD.log(AircraftHotKeys.hudLogWeaponId, "BombsightBombdrop");
}
} else
{
FM.CT.WeaponControl[3] = false;
}
}
}
public void typeBomberReplicateToNet(NetMsgGuaranted netmsgguaranted)
throws IOException
{
netmsgguaranted.writeByte((bSightAutomation ? 1 : 0) | (bSightBombDump ? 2 : 0));
netmsgguaranted.writeFloat(fSightCurDistance);
netmsgguaranted.writeByte((int)fSightCurForwardAngle);
netmsgguaranted.writeByte((int)((fSightCurSideslip + 3F) * 33.33333F));
netmsgguaranted.writeFloat(fSightCurAltitude);
netmsgguaranted.writeFloat(fSightCurSpeed);
netmsgguaranted.writeByte((int)(fSightCurReadyness * 200F));
}
public void typeBomberReplicateFromNet(NetMsgInput netmsginput)
throws IOException
{
int i = netmsginput.readUnsignedByte();
bSightAutomation = (i & 1) != 0;
bSightBombDump = (i & 2) != 0;
fSightCurDistance = netmsginput.readFloat();
fSightCurForwardAngle = netmsginput.readUnsignedByte();
fSightCurSideslip = -3F + (float)netmsginput.readUnsignedByte() / 33.33333F;
fSightCurAltitude = netmsginput.readFloat();
fSightCurSpeed = netmsginput.readFloat();
fSightCurReadyness = (float)netmsginput.readUnsignedByte() / 200F;
}