📄 zworld.jad
字号:
// Decompiled by DJ v2.9.9.60 Copyright 2000 Atanas Neshkov Date: 2004-12-12 17:51:59
// Home Page : http://members.fortunecity.com/neshkov/dj.html - Check often for new version!
// Decompiler options: packimports(3)
// Source File Name: ZWorld.java
import java.applet.AudioClip;
import java.awt.Graphics;
import java.awt.Point;
public class ZWorld
{
public ZWorld()
{
fNumObjects = 0;
fObjects = null;
fPolygonList = null;
}
public void RemoveDeadObjects()
{
for(int i = 0; i < fNumObjects; i++)
{
ZObject zobject = fObjects[i];
if(zobject.fStatus == 0)
{
for(int j = i; j < fNumObjects - 1; j++)
fObjects[j] = fObjects[j + 1];
fNumObjects--;
}
}
}
public void CheckCollision()
{
for(int i = 0; i < fNumObjects; i++)
{
ZObject zobject = fObjects[i];
if(zobject.fShouldBeCheckForCollision)
{
for(int j = 0; j < fNumObjects; j++)
{
ZObject zobject1 = fObjects[j];
if(i != j && zobject1.fShouldBeCheckForCollision && zobject.CheckCollision(zobject1) && zobject.fType == 0)
{
if(zobject1.fType != 5)
{
zobject.fStatus = 0;
zobject.fMaxLifeTime = 0;
}
if(zobject1.fType == 1)
fViewer.fScore += 100;
if(zobject1.fCanBeHitByPlayerBullet)
{
zobject1.HandleCollisionWithBullet(zobject);
fCollideSnd.play();
}
}
}
}
}
}
public void Create(int i, ZLight zlight, AudioClip audioclip, AudioClip audioclip1, AudioClip audioclip2)
{
fObjects = new ZObject[i];
fPolygonList = new ZPolygonList();
ZObject.SetWorld(this);
fLight = zlight;
fCollideSnd = audioclip;
fExplodeSnd = audioclip1;
fViewerCollisionSnd = audioclip2;
}
public void Draw()
{
fPolygonList.MakePolygonList(this);
fPolygonList.Draw();
CheckLifeTime();
}
public void Add(ZObject zobject)
{
fObjects[fNumObjects] = zobject;
for(int i = 0; i < zobject.fNumPolygons; i++)
{
zobject.fPolygons[i].SetLight(fLight);
zobject.fPolygons[i].SetGraphics(fOffScrGraphics, fScrWidth, fScrHeight, fScrMidX, fScrMidY);
}
zobject.fViewerDistance = fViewerDistance;
fNumObjects++;
}
public void RemoveAllObjects()
{
fNumObjects = 0;
}
public void CheckLifeTime()
{
for(int i = 0; i < fNumObjects; i++)
{
ZObject zobject = fObjects[i];
if(zobject.fLifeTime > zobject.fMaxLifeTime)
{
for(int j = i; j < fNumObjects - 1; j++)
fObjects[j] = fObjects[j + 1];
fNumObjects--;
if(zobject.fType == 0)
fViewer.fNumActiveBullets--;
if(zobject.fType == 1)
fViewer.fRemainingEnemies--;
}
}
}
public void CheckCollisionWithEnemyBullet()
{
for(int i = 0; i < fNumObjects; i++)
{
ZObject zobject = fObjects[i];
if(zobject.fType == 5 && zobject.CheckCollisionWhenMoving(fViewer.fX - 20, fViewer.fZ - 20, fViewer.fX + 20, fViewer.fZ + 20))
{
zobject.fStatus = 0;
zobject.fMaxLifeTime = 0;
fViewer.fEnergy--;
if(fViewer.fEnergy <= 0)
fViewer.fEnergy = 0;
}
}
}
public void SetWireframeMode(boolean flag)
{
fPolygonList.fWireframeMode = flag;
}
public void SetViewerMidPos(int i, int j)
{
for(int k = 0; k < fNumObjects; k++)
fObjects[k].SetViewerMidPos(i, j);
}
public void SetGraphics(Graphics g, int i, int j, int k, int l)
{
g.clipRect(0, 0, i - 1, j - 1);
fScrWidth = i;
fScrHeight = j;
fScrMidX = k;
fScrMidY = l;
fOffScrGraphics = g;
for(int i1 = 0; i1 < fNumObjects; i1++)
{
for(int j1 = 0; j1 < fObjects[i1].fNumPolygons; j1++)
fObjects[i1].fPolygons[j1].SetGraphics(g, i, j, k, l);
}
}
public void Transform(ZMatrix zmatrix)
{
fPlayExplodeSnd = false;
ZMatrix zmatrix1 = new ZMatrix();
for(int i = 0; i < fNumObjects; i++)
{
ZObject zobject = fObjects[i];
zmatrix1.InitTrans();
zobject.Rotate(zmatrix1);
zobject.Translate(zmatrix1);
zobject.Transform(zmatrix1);
zobject.Move();
zobject.DoAction();
}
if(fPlayExplodeSnd)
{
fExplodeSnd.play();
fPlayExplodeSnd = false;
}
}
public void SetEnemyDeployPoints(int ai[])
{
fNumEnemyDeployPoints = ai[0];
fEnemyDeployPoints = new Point[fNumEnemyDeployPoints];
for(int i = 0; i < fNumEnemyDeployPoints; i += 2)
fEnemyDeployPoints[i] = new Point(ai[i + 1], ai[i + 2]);
}
public void SetEdges(int i, int j, int k, int l)
{
fLeftEdge = i;
fRightEdge = k;
fTopEdge = j;
fBotEdge = l;
fWidth = k - i;
fHeight = l - j;
}
public void SetLight(ZLight zlight)
{
fLight = zlight;
for(int i = 0; i < fNumObjects; i++)
{
for(int j = 0; j < fObjects[i].fNumPolygons; j++)
fObjects[i].fPolygons[j].SetLight(fLight);
}
}
public boolean CheckCollisionWithViewer()
{
int i = fViewer.fX - 30;
int j = fViewer.fX + 30;
int k = fViewer.fZ - 30;
int l = fViewer.fZ + 30;
for(int i1 = 0; i1 < fNumObjects; i1++)
{
ZObject zobject = fObjects[i1];
if(zobject.CheckCollisionWhenMoving(i, k, j, l))
{
fViewerCollisionSnd.play();
return true;
}
}
return false;
}
public void SetViewerDistance(int i)
{
fViewerDistance = i;
}
boolean HasPassedWorldEdges(int i, int j)
{
return i <= fLeftEdge || i >= fRightEdge || j <= fTopEdge || j >= fBotEdge;
}
void AlignWithViewer(ZMatrix zmatrix)
{
for(int i = 0; i < fNumObjects; i++)
{
fObjects[i].ATransform(zmatrix);
fObjects[i].AProject();
}
}
public void RemoveObject(ZObject zobject)
{
for(int i = 0; i < fNumObjects; i++)
if(zobject == fObjects[i])
{
for(int j = i; j < fNumObjects - 1; j++)
fObjects[j] = fObjects[j + 1];
fNumObjects--;
}
}
public void SetView(ZView zview)
{
fPolygonList.fView = zview;
fViewer = zview;
}
void DeployEnemy()
{
}
static int fViewerDistance;
ZObject fObjects[];
int fNumObjects;
static ZLight fLight;
ZPolygonList fPolygonList;
static int fScrWidth;
static int fScrHeight;
static int fScrMidX;
static int fScrMidY;
static Graphics fOffScrGraphics;
static int fWidth;
static int fHeight;
static int fLeftEdge;
static int fRightEdge;
static int fTopEdge;
static int fBotEdge;
static ZView fViewer;
AudioClip fCollideSnd;
AudioClip fExplodeSnd;
AudioClip fViewerCollisionSnd;
boolean fPlayExplodeSnd;
Point fEnemyDeployPoints[];
int fNumEnemyDeployPoints;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -