|
|
|
#11 |
|
Местный
|
/* 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_; } } } } |
|
|
|
| Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|