Показать сообщение отдельно
Старый 12.08.2009, 15:54   #11
Novichok8
Местный
 
Регистрация: 24.12.2007
Адрес: Россия(СССР)
Сообщений: 987
Отправить сообщение для Novichok8 с помощью ICQ Отправить сообщение для Novichok8 с помощью Skype™
По умолчанию

/* Formation - Decompiled by JODE
* Visit http://jode.sourceforge.net/
*/
package com.maddox.il2.ai;
import com.maddox.JGP.Point3d;
import com.maddox.JGP.Vector3d;
import com.maddox.JGP.Vector3f;
import com.maddox.il2.ai.air.Maneuver;
import com.maddox.il2.engine.Actor;
import com.maddox.il2.fm.FlightModel;
import com.maddox.il2.objects.air.A6M;
import com.maddox.il2.objects.air.Aircraft;
import com.maddox.il2.objects.air.B5N;
import com.maddox.il2.objects.air.BF_109;
import com.maddox.il2.objects.air.BF_110;
import com.maddox.il2.objects.air.B_17;
import com.maddox.il2.objects.air.B_25;
import com.maddox.il2.objects.air.B_29;
import com.maddox.il2.objects.air.D3A;
import com.maddox.il2.objects.air.FW_190;
import com.maddox.il2.objects.air.G4M;
import com.maddox.il2.objects.air.H8K;
import com.maddox.il2.objects.air.HE_111H2;
import com.maddox.il2.objects.air.IL_2;
import com.maddox.il2.objects.air.JU_88;
import com.maddox.il2.objects.air.KI_43;
import com.maddox.il2.objects.air.KI_46;
import com.maddox.il2.objects.air.KI_61;
import com.maddox.il2.objects.air.KI_84;
import com.maddox.il2.objects.air.ME_323;
import com.maddox.il2.objects.air.N1K;
import com.maddox.il2.objects.air.PE_2;
import com.maddox.il2.objects.air.PE_8;
import com.maddox.il2.objects.air.SBD;
import com.maddox.il2.objects.air.SPITFIRE;
import com.maddox.il2.objects.air.Scheme1;
import com.maddox.il2.objects.air.TA_152H1;
import com.maddox.il2.objects.air.TBF;
import com.maddox.il2.objects.air.TB_3;
import com.maddox.il2.objects.air.TU_2;
import com.maddox.il2.objects.air.YAK;

public class Formation
{
public static final byte F_DEFAULT = 0;
public static final byte F_PREVIOUS = 1;
public static final byte F_ECHELONRIGHT = 2;
public static final byte F_ECHELONLEFT = 3;
public static final byte F_LINEABREAST = 4;
public static final byte F_LINEASTERN = 5;
public static final byte F_VIC = 6;
public static final byte F_FINGERFOUR = 7;
public static final byte F_DIAMOND = 8;
private static final Vector3f WR = new Vector3f(100.0F, 100.0F, 0.0F);
private static final Vector3d dd = new Vector3d();
private static final Point3d Pd = new Point3d();

public static final void generate(Aircraft[] aircrafts) {
gen(aircrafts, WR);
}

private static final float scaleCoeff(Aircraft aircraft) {
if (aircraft instanceof ME_323)
return 5.0F;
if (aircraft instanceof PE_8 || aircraft instanceof TB_3
|| aircraft instanceof B_17 || aircraft instanceof B_29)
return 3.5F;
if (aircraft instanceof TA_152H1)
return 2.0F;
if (aircraft instanceof SBD)
return 1.8F;
if (aircraft instanceof TBF)
return 1.9F;
if (aircraft instanceof FW_190)
return 1.4F;
if (!(aircraft instanceof Scheme1))
return 2.2F;
return 1.2F;
}

public static final void gather(FlightModel flightmodel, byte i) {
gather(flightmodel, i, flightmodel.Offset);
}

public static final void gather(FlightModel flightmodel, byte i,
Vector3d vector3d) {
Aircraft aircraft = (Aircraft) flightmodel.actor;
FlightModel flightmodel_0_ = flightmodel;
int i_1_ = ((Maneuver) flightmodel).Group.numInGroup(aircraft);
float f = flightmodel.formationScale;
switch (i) {
case 0:
if (aircraft instanceof BF_109 || aircraft instanceof BF_110
|| aircraft instanceof FW_190 || aircraft instanceof SPITFIRE)
gather(flightmodel, (byte) 7, vector3d);
else {
if (aircraft instanceof IL_2 || aircraft instanceof YAK
|| aircraft instanceof PE_2 || aircraft instanceof TU_2)
gather(flightmodel, (byte) 6, vector3d);
else {
if (aircraft instanceof A6M || aircraft instanceof B5N
|| aircraft instanceof D3A || aircraft instanceof G4M
|| aircraft instanceof KI_43
|| aircraft instanceof KI_46
|| aircraft instanceof KI_84 || aircraft instanceof N1K
|| aircraft instanceof H8K
|| aircraft instanceof KI_61)
gather(flightmodel, (byte) 6, vector3d);
else {
if (aircraft instanceof JU_88
|| aircraft instanceof HE_111H2)
gather(flightmodel, (byte) 8, vector3d);
else {
if (aircraft instanceof ME_323)
gather(flightmodel, (byte) 8, vector3d);
else {
if (aircraft instanceof PE_8
|| aircraft instanceof B_17
|| aircraft instanceof B_25
|| aircraft instanceof B_29)
gather(flightmodel, (byte) 6, vector3d);
else {
gather(flightmodel, (byte) 2, vector3d);
return;
}
return;
}
return;
}
return;
}
return;
}
return;
}
return;
case 1:
gather(flightmodel, flightmodel.formationType, vector3d);
return;
case 2:
flightmodel.formationType = i;
vector3d.set(25.0, 25.0, 0.0);
break;
case 3:
flightmodel.formationType = i;
vector3d.set(25.0, -25.0, 0.0);
break;
case 4:
flightmodel.formationType = i;
if (i_1_ == 0)
vector3d.set(25.0, 75.0, 0.0);
else
vector3d.set(1.0, 33.0, 0.0);
break;
case 5:
flightmodel.formationType = i;
if (i_1_ == 0)
vector3d.set(120.0, 0.0, 15.0);
else
vector3d.set(80.0, 0.0, 10.0);
vector3d.scale((double) f);
return;
case 6:
flightmodel.formationType = i;
switch (i_1_) {
case 0:
vector3d.set(55.0, 55.0, 0.0);
break;
case 1:
vector3d.set(25.0, 25.0, 0.0);
break;
case 2:
vector3d.set(0.0, -50.0, 0.0);
break;
case 3:
vector3d.set(25.0, -25.0, 0.0);
break;
}
break;
case 7:
flightmodel.formationType = i;
switch (i_1_) {
case 0:
vector3d.set(25.0, 25.0, 0.0);
break;
case 1:
vector3d.set(15.0, 30.0, 0.0);
break;
case 2:
vector3d.set(25.0, -60.0, 0.0);
break;
case 3:
vector3d.set(15.0, -20.0, 0.0);
break;
}
break;
case 8:
flightmodel.formationType = i;
switch (i_1_) {
case 0:
vector3d.set(75.0, 30.0, 0.0);
break;
case 1:
vector3d.set(25.0, 25.0, 0.0);
break;
case 2:
vector3d.set(0.0, -50.0, 0.0);
break;
case 3:
vector3d.set(25.0, 25.0, 0.0);
break;
default:
break;
}
break;
}
vector3d.scale((double) (f * scaleCoeff(aircraft)));
}

public static final void leaderOffset(FlightModel flightmodel, byte i,
Vector3d vector3d) {
Aircraft aircraft = (Aircraft) flightmodel.actor;
Wing wing = (Wing) flightmodel.actor.getOwner();
int i_2_;
if (wing != null)
i_2_ = wing.indexInSquadron();
else
i_2_ = 0;
switch (i_2_) {
case 0:
vector3d.set(300.0, -150.0, 0.0);
break;
case 1:
if (i != 2)
vector3d.set(100.0, 100.0, 0.0);
else
vector3d.set(200.0, 200.0, 0.0);
break;
case 2:
if (i != 3 && i != 6)
vector3d.set(150.0, -150.0, 0.0);
else
vector3d.set(210.0, -210.0, 0.0);
break;
case 3:
if (i != 5)
vector3d.set(150.0, 0.0, 0.0);
else
vector3d.set(300.0, 0.0, 0.0);
break;
}
vector3d.scale(0.7 * (double) scaleCoeff(aircraft));
}

private static final void gen(Aircraft[] aircrafts, Vector3f vector3f) {
dd.set(vector3f);
aircrafts[0].pos.getAbsOrient().transform(dd);
int i = 0;
for (int i_3_ = 1; i_3_ < aircrafts.length; i_3_++) {
if (Actor.isValid(aircrafts[i_3_])) {
aircrafts[i_3_].FM.Offset.set(vector3f);
aircrafts[i_3_].FM.Leader = aircrafts[i].FM;
aircrafts[i].FM.Wingman = aircrafts[i_3_].FM;
aircrafts[i].pos.getAbs(Pd);
Pd.sub(dd);
aircrafts[i_3_].pos.setAbs(Pd);
i = i_3_;
}
}
}
}
Novichok8 вне форума   Ответить с цитированием