package com.todoroo.zxzx;
import android.graphics.Point;
import com.badlogic.gdx.math.Rectangle;
import com.badlogic.gdx.utils.Array;
import com.todoroo.zxzx.entity.AlienShip;
import com.todoroo.zxzx.general.CollisionGeometry;
public class LevelManager {
abstract public static class LevelData {
public int level;
public float parTime = 10f;
public LevelData(int level) {
this.level = level;
}
abstract public AlienShip createAlienShip();
}
private final LevelData[] levels;
public LevelManager() {
levels = new LevelData[] {
new LevelData(1) {
@Override
public AlienShip createAlienShip() {
AlienShip alienShip = new AlienShip(Assets.alien1,
new String[] { "[Ikaruga]_r1_mdl.xml", "[Ikaruga]_drc2.xml" },
new Point[] { new Point(136, 200), new Point(376, 200) },
60);
Array<Rectangle> rectangles = new Array<Rectangle>();
rectangles.add(new Rectangle(30, 150, 60, 144));
rectangles.add(new Rectangle(415, 150, 60, 144));
rectangles.add(new Rectangle(220, 130, 66, 144));
rectangles.add(new Rectangle(115, 195, 270, 92));
rectangles.add(new Rectangle(30, 250, 445, 116));
rectangles.add(new Rectangle(70, 340, 380, 70));
alienShip.geometry = new CollisionGeometry(rectangles);
return alienShip;
}
},
new LevelData(2) {
@Override
public AlienShip createAlienShip() {
AlienShip alienShip = new AlienShip(Assets.alien2,
new String[] { "248shot.xml", "[G_DARIUS]_homing_laser.xml" },
new Point[] { new Point(71, 271), new Point(437, 271) },
100);
Array<Rectangle> rectangles = new Array<Rectangle>();
rectangles.add(new Rectangle(184, 126, 137, 291));
rectangles.add(new Rectangle(23, 271, 458, 124));
alienShip.geometry = new CollisionGeometry(rectangles);
return alienShip;
}
},
new LevelData(3) {
@Override
public AlienShip createAlienShip() {
AlienShip alienShip = new AlienShip(Assets.alien3,
new String[] { "88way.xml",
"grow.xml", "[daiouzyou]_hibati_2_2_b.xml" },
new Point[] { new Point(76, 224),
new Point(426, 224),
new Point(251, 126) },
140);
Array<Rectangle> rectangles = new Array<Rectangle>();
rectangles.add(new Rectangle(167, 147, 164, 183));
rectangles.add(new Rectangle(113, 195, 277, 160));
rectangles.add(new Rectangle(57, 231, 392, 153));
rectangles.add(new Rectangle(28, 258, 443, 149));
alienShip.geometry = new CollisionGeometry(rectangles);
return alienShip;
}
},
};
}
public AlienShip initAlienShip(int level) {
LevelData levelData = levels[level];
AlienShip alienShip = levelData.createAlienShip();
return alienShip;
}
public boolean wonTheGame(int level) {
return level >= levels.length;
}
}