📄 weapon.java
字号:
{
Landscape _tmp1 = landscape;
if(positionY <= 150)
break label2;
}
}
weaponDone();
return;
}
smokeTrailSize[curTrail] = 10;
landscape.center(positionX, positionY);
if(activeWeapon == 3 || activeWeapon == 2)
{
landscape.circle_init[0] = false;
landscape.circle_init[1] = false;
landscape.circle_init[2] = false;
landscape.circle_init[3] = false;
landscape.circle_init[4] = false;
if(blowUpTime == 0)
{
explode(positionX, positionY, 1);
if(activeWeapon == 3)
activeWeapon = -1;
if(activeWeapon == 2)
{
activeWeapon = 5;
initialX = positionX;
initialY = positionY;
time = 0;
for(int j = 0; j < explosionStartTime.length; j++)
{
if(j < 2)
angle = Math.abs(random.nextInt()) % 90;
else
angle = Math.abs(random.nextInt()) % 90 + 270;
sinAng[j] = Game.table[angle % 360] * 15;
cosAng[j] = Game.table[(angle + 90) % 360] * 15;
time = 60;
sinAng[j] *= deltaTime;
cosAng[j] *= deltaTime;
sinAngleI[j] = 0;
cosAngleI[j] = 0;
gravityAdd[j] = -2501 * deltaTime;
gravityI[j] = 0;
clustletX[j] = positionX;
clustletY[j] = positionY;
}
}
} else
{
if(time > 500 && (landscape.earthCollision(positionX - 4, positionY, true, null) || landscape.earthCollision(positionX + 4, positionY, true, null) || landscape.earthCollision(positionX - 4, positionY + 4, true, null) || landscape.earthCollision(positionX + 4, positionY + 4, true, null)))
fire(game, landscape, parentWorm, activeWeapon, positionX, positionY - 4, windFactor, velocity / 2 + velocity / 4, angle, false);
if(activeWeapon == 3)
grenade.setFrame(Game.curFrame % grenade.frameCount);
if(activeWeapon == 2)
cluster.setFrame(Game.curFrame % cluster.frameCount);
}
}
if(activeWeapon == 0 || activeWeapon == 1)
{
landscape.circle_init[0] = false;
landscape.circle_init[1] = false;
landscape.circle_init[2] = false;
landscape.circle_init[3] = false;
landscape.circle_init[4] = false;
boolean flag = false;
if(weaponIterationCount < 8)
flag = CollisionIterator.checkCollision(oldPositionX, oldPositionY, positionX, positionY, landscape, parentWorm);
else
flag = CollisionIterator.checkCollision(oldPositionX, oldPositionY, positionX, positionY, landscape, null);
if(flag)
{
positionX = CollisionIterator.collisionX;
positionY = CollisionIterator.collisionY;
if(activeWeapon == 0)
{
explode(positionX, positionY, 1);
activeWeapon = -1;
}
if(activeWeapon == 1)
{
explode(positionX, positionY, 2);
activeWeapon = -1;
}
}
}
}
if(activeWeapon == 5)
{
landscape.center(clustletX[0] + clustletX[1] + clustletX[2] + clustletX[3] >> 2, clustletY[0] + clustletY[1] + clustletY[2] + clustletY[3] >> 2);
for(int k = 0; k < clustletY.length; k++)
if(!clustletExploded[k])
if(!landscape.earthCollision(clustletX[k], clustletY[k], true, null))
{
clustletX[k] = initialX + (cosAngleI[k] >> 16);
clustletY[k] = initialY - (sinAngleI[k] + (gravityI[k] >> 9) * time >> 16);
if(clustletY[k] > 150)
clustletExploded[k] = true;
time += deltaTime;
sinAngleI[k] += sinAng[k];
cosAngleI[k] += cosAng[k];
gravityI[k] += gravityAdd[k];
} else
{
explode(clustletX[k], clustletY[k], 0);
clustletExploded[k] = true;
}
time += deltaTime;
}
}
if(activeWeapon == 5)
{
landscape.circle_init[0] = false;
landscape.circle_init[1] = false;
landscape.circle_init[2] = false;
landscape.circle_init[3] = false;
landscape.circle_init[4] = false;
boolean flag1 = true;
for(int l = 0; l < clustletExploded.length; l++)
if(!clustletExploded[l])
flag1 = false;
if(flag1)
weaponDone();
}
}
public static boolean isActive()
{
return state == 1;
}
public static boolean isDynamiteActive()
{
return state == 2;
}
public static void paint(Graphics g)
{
rocket.setPosition((positionX - rocket.width / 2) + Landscape.levelX, (positionY - rocket.height / 2) + Landscape.levelY);
mortar.setPosition((positionX - mortar.width / 2) + Landscape.levelX, (positionY - mortar.height / 2) + Landscape.levelY);
grenade.setPosition((positionX - grenade.width / 2) + Landscape.levelX, (positionY - grenade.height / 2) + Landscape.levelY);
cluster.setPosition((positionX - cluster.width / 2) + Landscape.levelX, (positionY - cluster.height / 2) + Landscape.levelY);
dynamite.setPosition((positionX - dynamite.width / 2) + Landscape.levelX, (positionY - dynamite.height / 2) + Landscape.levelY);
for(int i = smokeTrailX.length - 1; i > 0; i--)
if(smokeTrailX[i] != -1 && smokeTrailSize[i] <= 8)
{
g.setColor(255 - (10 - smokeTrailSize[i]) * 10, 255 - (10 - smokeTrailSize[i]) * 10, 255 - (10 - smokeTrailSize[i]) * 10);
g.fillArc((smokeTrailX[i] + Landscape.levelX) - smokeTrailSize[i] / 2, (smokeTrailY[i] + Landscape.levelY) - smokeTrailSize[i] / 2, smokeTrailSize[i], smokeTrailSize[i], 0, 360);
}
if(state == 1)
{
if(activeWeapon == 0)
rocket.paint(g);
if(activeWeapon == 1)
mortar.paint(g);
if(activeWeapon == 3)
grenade.paint(g);
if(activeWeapon == 2)
cluster.paint(g);
if(activeWeapon == 5)
{
for(int j = 0; j < clustletX.length; j++)
if(!clustletExploded[j])
{
clustlet.setPosition((clustletX[j] + Landscape.levelX) - clustlet.width / 2, (clustletY[j] + Landscape.levelY) - clustlet.height / 2);
clustlet.setFrame((Game.curFrame + clustletStartFrame[j]) % clustlet.frameCount);
clustlet.paint(g);
}
}
if(blowUpTime > 0)
{
if(activeWeapon == 3)
FontRender.writeString(g, "" + blowUpTime, grenade.positionX - 6, grenade.positionY - 6);
if(activeWeapon == 2)
FontRender.writeString(g, "" + blowUpTime, grenade.positionX - 6, grenade.positionY - 6);
}
}
if(state == 2)
{
if(activeWeapon == 4)
dynamite.paint(g);
FontRender.writeString(g, "" + blowUpTime, dynamite.positionX + 2, dynamite.positionY - 10);
}
for(int k = 0; k < explosionStartTime.length; k++)
if(explosionStartTime[k] != -1L)
{
explosionFrame[k] = (int)(Worms.getTime() - explosionStartTime[k]) / deviceTimerDivide;
if(explosionFrame[k] <= 70)
{
curExplosionSpr.setPosition((explosionX[k] + Landscape.levelX) - 17, (explosionY[k] + Landscape.levelY) - 17);
paintPhattExplosions(g, explosionFrame[k], (explosionX[k] + Landscape.levelX) - explosionHeight / 2, (explosionY[k] + Landscape.levelY) - explosionHeight / 2, explosionHeight, explosionHeight, k);
} else
if(explosionFrame[k] > 70)
{
/* if(Menu.vibratorEnabled())
Game.vibrationOFF();*/
wormHit = false;
if(landscape != null && !doneQuartile4[k])
landscape.mapCircle_quartile4(k, explosionX[k], explosionY[k], explosionHeight);
doneQuartile1[k] = false;
doneQuartile2[k] = false;
doneQuartile3[k] = false;
doneQuartile4[k] = false;
explosionStartTime[k] = -1L;
explodeTerrain[k] = true;
}
}
}
public static void reset()
{
state = 0;
for(int i = 0; i < smokeTrailX.length; i++)
{
smokeTrailX[i] = -1;
smokeTrailY[i] = -1;
}
curTrail = 0;
}
public static void paintPhattExplosions(Graphics g, int i, int j, int k, int l, int i1, int j1)
{
if(i > 70)
return;
try
{
byte byte0;
int k1;
if(i < 30)
{
byte0 = 1;
k1 = 0;
g.setColor(255, 255, 230);
if(explodeTerrain[j1])
{
landscape.paint_explosion(j1, explosionX[j1], explosionY[j1], explosionHeight);
explodeTerrain[j1] = false;
if(Menu.soundEnabled()) {
//Game.sound_EXPLOSION.start();
Game.sound.getPlayer(2);
Game.sound.start();
}
/*if(Menu.vibratorEnabled() && wormHit)
{
Worms.vibratorStartTime = Worms.getTime();
Game.vibrationON();
}*/
}
} else
if(i < 40)
{
byte0 = 2;
k1 = (j / 5) * byte0;
g.setColor(225, 225, 225);
curExplosionSpr.setFrame(1);
curExplosionSpr.paint(g);
if(!doneQuartile1[j1])
{
landscape.mapCircle_quartile1(j1, explosionX[j1], explosionY[j1], explosionHeight);
doneQuartile1[j1] = true;
//Game.vibrationOFF();
}
} else
if(i < 50)
{
byte0 = 3;
k1 = (j / 5) * byte0;
g.setColor(200, 200, 200);
if(!doneQuartile2[j1])
{
landscape.mapCircle_quartile2(j1, explosionX[j1], explosionY[j1], explosionHeight);
doneQuartile2[j1] = true;
//Game.vibrationOFF();
}
} else
if(i < 60)
{
byte0 = 4;
k1 = (j / 5) * byte0;
g.setColor(175, 175, 175);
if(!doneQuartile3[j1])
{
landscape.mapCircle_quartile3(j1, explosionX[j1], explosionY[j1], explosionHeight);
doneQuartile3[j1] = true;
//Game.vibrationOFF();
}
} else
{
byte0 = 5;
k1 = (j / 5) * byte0;
g.setColor(150, 150, 150);
if(!doneQuartile4[j1])
{
landscape.mapCircle_quartile4(j1, explosionX[j1], explosionY[j1], explosionHeight);
doneQuartile4[j1] = true;
//Game.vibrationOFF();
}
}
g.fillArc(j + k1 / 2, k + k1 / 2, l - k1, i1 - k1, 0, 360);
if(byte0 < 3)
{
curExplosionSpr.setFrame(2);
curExplosionSpr.paint(g);
} else
if(byte0 == 3)
{
int l1 = i / 5;
g.setColor(150, 150, 0);
g.drawArc(j, k, l, i1, 0, 360);
g.setColor(200, 200, 0);
g.drawArc(j - l1, k - l1, l + 2 * l1, i1 + 2 * l1, 0, 360);
g.setColor(255, 255, 100);
g.drawArc(j - 2 * l1, k - 2 * l1, l + 4 * l1, i1 + 4 * l1, 0, 360);
} else
if(byte0 == 4)
{
int i2 = i / 5;
g.setColor(100, 100, 0);
g.drawArc(j, k, l, i1, 0, 360);
g.setColor(150, 50, 50);
g.drawArc(j - i2, k - i2, l + 2 * i2, i1 + 2 * i2, 0, 360);
g.setColor(200, 200, 200);
g.drawArc(j - 2 * i2, k - 2 * i2, l + 4 * i2, i1 + 4 * i2, 0, 360);
} else
if(byte0 == 5)
{
int j2 = i / 5;
g.setColor(150, 150, 150);
g.drawArc(j - j2, k - j2, l + 2 * j2, i1 + 2 * j2, 0, 360);
}
}
catch(Exception exception)
{
exception.printStackTrace();
}
return;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -