public class ExplodierenEffekt {
private int i = 30;
private int[] x = new int[12], y = new int[12];
int koernigKeit;
int step = 0;
public ExplodierenEffekt(TankManager tankManager, int x_Koordinate, int y_Koordinate) {
init(tankManager, x_Koordinate, y_Koordinate);
}
protected void init(TankManager tankManager, int x_koordinate, int y_koordinate) {
this.tankManager = tankManager;
this.x_Koordinate = x_koordinate;
this.y_Koordinate = y_koordinate;
this.koernigKeit = tankManager.screenWidth / 60;
int koernigKeit2 = koernigKeit * 2;
int koernigKeit4 = koernigKeit * 4;
int koernigKeit6 = koernigKeit * 6;
int koernigKeit7 = koernigKeit * 7;
x[0] = x_Koordinate + koernigKeit2;
y[0] = y_koordinate;
x[1] = x_Koordinate + koernigKeit4;
y[1] = y_koordinate + koernigKeit2;
x[2] = x_Koordinate + koernigKeit2;
y[2] = y_koordinate + koernigKeit4;
x[3] = x_Koordinate;
y[3] = y_koordinate + koernigKeit2;
x[4] = x_Koordinate + koernigKeit2;
y[4] = y_koordinate - koernigKeit * 3;
x[5] = x_Koordinate + koernigKeit6;
y[5] = y_koordinate - koernigKeit2;
x[6] = x_Koordinate + koernigKeit7;
y[6] = y_koordinate + koernigKeit2;
x[7] = x_Koordinate + koernigKeit6;
y[7] = y_koordinate + koernigKeit6;
x[8] = x_Koordinate + koernigKeit2;
y[8] = y_koordinate + koernigKeit7;
x[9] = x_Koordinate - koernigKeit2;
y[9] = y_koordinate + koernigKeit6;
x[10] = x_Koordinate - koernigKeit * 3;
y[10] = y_koordinate + koernigKeit2;
x[11] = x_Koordinate - koernigKeit2;
y[11] = y_koordinate - koernigKeit2;
}
public void malen() {
int c = Math.abs(i % 3);
switch (c) {
case 0:
tankManager.maler.setColor(255, 0, 0);
break;
case 1:
tankManager.maler.setColor(0, 255, 0);
break;
case 2:
tankManager.maler.setColor(0, 0, 255);
break;
}
fillTriangle(x[4], y[4], x[3], y[3], x[1], y[1]);
fillTriangle(x[3], y[3], x[5], y[5], x[2], y[2]);
fillTriangle(x[0], y[0], x[6], y[6], x[2], y[2]);
fillTriangle(x[0], y[0], x[7], y[7], x[3], y[3]);
fillTriangle(x[1], y[1], x[8], y[8], x[3], y[3]);
fillTriangle(x[1], y[1], x[9], y[9], x[0], y[0]);
fillTriangle(x[2], y[2], x[10], y[10], x[0], y[0]);
fillTriangle(x[2], y[2], x[11], y[11], x[1], y[1]);
i--;
if (i == 0)
explodieren();
}
public void fillTriangle(int i, int j, int k, int l, int i1, int j1) {
int ai[] = new int[4];
int ai1[] = new int[4];
ai[0] = i;
ai[1] = k;
ai[2] = i1;
ai1[0] = j;
ai1[1] = l;
ai1[2] = j1;
if (ai[0] > ai[1]) {
ai[3] = ai[1];
ai1[3] = ai1[1];
ai[1] = ai[0];
ai1[1] = ai1[0];
ai[0] = ai[3];
ai1[0] = ai1[3];
}
if (ai[1] > ai[2]) {
ai[3] = ai[2];
ai1[3] = ai1[2];
ai[2] = ai[1];
ai1[2] = ai1[1];
ai[1] = ai[3];
ai1[1] = ai1[3];
}
if (ai[0] > ai[1]) {
ai[3] = ai[1];
ai1[3] = ai1[1];
ai[1] = ai[0];
ai1[1] = ai1[0];
ai[0] = ai[3];
ai1[0] = ai1[3];
}
int k1 = (ai1[1] - ai1[0]) * 2 + 1;
int l1 = ai[1] - ai[0];
int i2 = (ai1[2] - ai1[0]) * 2 + 1;
int j2 = ai[2] - ai[0];
int k2 = (ai1[2] - ai1[1]) * 2 + 1;
int l2 = ai[2] - ai[1];
if (l1 != 0 && j2 != 0) {
for (int i3 = 0; i3 < l1; i3++) {
int k3 = i3 + ai[0];
int i4 = (k1 * i3) / l1 / 2 + ai1[0];
int k4 = (i2 * i3) / j2 / 2 + ai1[0];
tankManager.maler.drawLine(k3, i4, k3, k4);
}
}
if (l2 != 0 && j2 != 0) {
for (int j3 = 0; j3 <= l2; j3++) {
int l3 = j3 + ai[1];
int j4 = (k2 * j3) / l2 / 2 + ai1[1];
int l4 = (i2 * (j3 + l1)) / j2 / 2 + ai1[0];
tankManager.maler.drawLine(l3, j4, l3, l4);
}
}
}
protected void explodieren() {
tankManager.expEffekt.removeElement(this);
}
}