Звичайна людина на Землі
Регистрация: 06.11.2011
Адрес: Україна, м.Київ, Печерський район, вул. Кіквідзе
Сообщений: 8,085
|
Это основной класс:
PHP код:
// Source File Name: RocketX4_F.java
package com.maddox.il2.objects.weapons;
import com.maddox.JGP.*;
import com.maddox.il2.ai.MsgExplosion;
import com.maddox.il2.ai.World;
import com.maddox.il2.ai.air.NearestTargets;
import com.maddox.il2.ai.air.Pilot;
import com.maddox.il2.engine.*;
import com.maddox.il2.fm.FlightModel;
import com.maddox.il2.fm.RealFlightModel;
import com.maddox.il2.objects.air.Aircraft;
import com.maddox.il2.objects.air.TypeX4Carrier;
import com.maddox.rts.*;
import java.io.IOException;
import java.io.PrintStream;
// Referenced classes of package com.maddox.il2.objects.weapons:
// Rocket
public class RocketX4_F extends Rocket
{
static class SPAWN
implements NetSpawn
{
public void netSpawn(int i, NetMsgInput netmsginput)
{
NetObj netobj = netmsginput.readNetObj();
if(netobj == null)
return;
try
{
Actor actor = (Actor)netobj.superObj();
Point3d point3d = new Point3d(netmsginput.readFloat(), netmsginput.readFloat(), netmsginput.readFloat());
Orient orient = new Orient(netmsginput.readFloat(), netmsginput.readFloat(), 0.0F);
float f = netmsginput.readFloat();
RocketX4_F RocketX4_f = new RocketX4_F(actor, netmsginput.channel(), i, point3d, orient, f);
}
catch(Exception exception)
{
System.out.println(exception.getMessage());
exception.printStackTrace();
}
}
SPAWN()
{
}
}
class Mirror extends ActorNet
{
public void msgNetNewChannel(NetChannel netchannel)
{
if(!Actor.isValid(actor()))
return;
if(netchannel.isMirrored(this))
return;
try
{
if(netchannel.userState == 0)
{
NetMsgSpawn netmsgspawn = actor().netReplicate(netchannel);
if(netmsgspawn != null)
{
postTo(netchannel, netmsgspawn);
actor().netFirstUpdate(netchannel);
}
}
}
catch(Exception exception)
{
NetObj.printDebug(exception);
}
}
public boolean netInput(NetMsgInput netmsginput)
throws IOException
{
if(netmsginput.isGuaranted())
return false;
if(isMirrored())
{
out.unLockAndSet(netmsginput, 0);
postReal(Message.currentTime(true), out);
}
RocketX4_F.p.x = netmsginput.readFloat();
RocketX4_F.p.y = netmsginput.readFloat();
RocketX4_F.p.z = netmsginput.readFloat();
int i = netmsginput.readShort();
int j = netmsginput.readShort();
float f = -(((float)i * 180F) / 32000F);
float f1 = ((float)j * 90F) / 32000F;
RocketX4_F.or.set(f, f1, 0.0F);
pos.setAbs(RocketX4_F.p, RocketX4_F.or);
return true;
}
NetMsgFiltered out;
public Mirror(Actor actor, NetChannel netchannel, int i)
{
super(actor, netchannel, i);
out = new NetMsgFiltered();
}
}
class Master extends ActorNet
implements NetUpdate
{
public void msgNetNewChannel(NetChannel netchannel)
{
if(!Actor.isValid(actor()))
return;
if(netchannel.isMirrored(this))
return;
try
{
if(netchannel.userState == 0)
{
NetMsgSpawn netmsgspawn = actor().netReplicate(netchannel);
if(netmsgspawn != null)
{
postTo(netchannel, netmsgspawn);
actor().netFirstUpdate(netchannel);
}
}
}
catch(Exception exception)
{
NetObj.printDebug(exception);
}
}
public boolean netInput(NetMsgInput netmsginput)
throws IOException
{
return false;
}
public void netUpdate()
{
try
{
out.unLockAndClear();
pos.getAbs(RocketX4_F.p, RocketX4_F.or);
out.writeFloat((float)RocketX4_F.p.x);
out.writeFloat((float)RocketX4_F.p.y);
out.writeFloat((float)RocketX4_F.p.z);
RocketX4_F.or.wrap();
int i = (int)((RocketX4_F.or.getYaw() * 32000F) / 180F);
int j = (int)((RocketX4_F.or.tangage() * 32000F) / 90F);
out.writeShort(i);
out.writeShort(j);
post(Time.current(), out);
}
catch(Exception exception)
{
NetObj.printDebug(exception);
}
}
NetMsgFiltered out;
public Master(Actor actor)
{
super(actor);
out = new NetMsgFiltered();
}
}
public boolean interpolateStep()
{
float f = Time.tickLenFs();
float f1 = (float)getSpeed(null);
f1 += (320F - f1) * 0.1F * f;
pos.getAbs(p, or);
v.set(1.0D, 0.0D, 0.0D);
or.transform(v);
v.scale(f1);
setSpeed(v);
p.x += v.x * (double)f;
p.y += v.y * (double)f;
p.z += v.z * (double)f;
if(isNet() && isNetMirror())
{
pos.setAbs(p, or);
return false;
}
if(Actor.isValid(getOwner()))
{
if((getOwner() != World.getPlayerAircraft() || !((RealFlightModel)fm).isRealMode()) && (fm instanceof Pilot))
{
Pilot pilot = (Pilot)fm;
if(pilot.target != null)
{
pilot.target.Loc.get(pT);
pT.sub(p);
or.transformInv(pT);
if(pT.x > -10D)
{
double d = Aircraft.cvt(fm.Skill, 0.0F, 3F, 15F, 0.0F);
if(pT.y > d)
((TypeX4Carrier)fm.actor).typeX4CAdjSideMinus();
if(pT.y < -d)
((TypeX4Carrier)fm.actor).typeX4CAdjSidePlus();
if(pT.z < -d)
((TypeX4Carrier)fm.actor).typeX4CAdjAttitudeMinus();
if(pT.z > d)
((TypeX4Carrier)fm.actor).typeX4CAdjAttitudePlus();
}
}
}
or.increment(25F * f * ((TypeX4Carrier)fm.actor).typeX4CgetdeltaAzimuth(), 25F * f * ((TypeX4Carrier)fm.actor).typeX4CgetdeltaTangage(), 0.0F);
or.setYPR(or.getYaw(), or.getPitch(), 0.0F);
((TypeX4Carrier)fm.actor).typeX4CResetControls();
}
pos.setAbs(p, or);
if(Time.current() > tStart)
{
hunted = NearestTargets.getEnemy(9, -1, p, 800D, 0);
if(Actor.isValid(hunted))
{
float f2 = (float)p.distance(hunted.pos.getAbsPoint());
if((hunted instanceof Aircraft) && (f2 > 20F || f2 < 65F))
{
doExplosionAir();
postDestroy();
collide(false);
drawing(false);
}
prevd = f2;
} else
{
prevd = 1000F;
}
}
if(!Actor.isValid(getOwner()) || !(getOwner() instanceof Aircraft))
{
doExplosionAir();
postDestroy();
collide(false);
drawing(false);
return false;
} else
{
return false;
}
}
public RocketX4_F()
{
fm = null;
tStart = 0L;
prevd = 1000F;
}
public RocketX4_F(Actor actor, NetChannel netchannel, int i, Point3d point3d, Orient orient, float f)
{
fm = null;
tStart = 0L;
prevd = 1000F;
net = new Mirror(this, netchannel, i);
pos.setAbs(point3d, orient);
pos.reset();
pos.setBase(actor, null, true);
doStart(-1F);
v.set(1.0D, 0.0D, 0.0D);
orient.transform(v);
v.scale(f);
setSpeed(v);
collide(false);
}
public void start(float f, int i)
{
Actor actor = pos.base();
if(Actor.isValid(actor) && (actor instanceof Aircraft))
{
if(actor.isNetMirror())
{
destroy();
return;
}
net = new Master(this);
}
doStart(f);
}
----------------------------
Ниже продолжение:
Последний раз редактировалось Vasya; 28.11.2015 в 08:21.
|