package com.moonflower.dod.component;
import java.util.Vector;
import android.content.SharedPreferences;
import android.graphics.Canvas;
import com.moonflower.dod.component.bullet.Bullet;
import com.moonflower.dod.component.bullet.HiSpeedBullet;
import com.moonflower.dod.component.bullet.HiSpeedTraceBullet;
import com.moonflower.dod.component.bullet.NormalBullet;
import com.moonflower.dod.component.bullet.TraceBullet;
import com.moonflower.util.DbKey;
public class Barrage {
private SharedPreferences preferences = null;
private int min_num = 20;
private int max_num = 50;
private Vector<Bullet> bullets = null;
private int count = 0;
private Plane plane = null;
private final int NORMAL = 0;
private final int HISPEED = 1;
private final int TRACE = 2;
private final int HISPEED_TRACE = 3;
private int cur_state = 0;
public Barrage(Plane p, SharedPreferences sp) {
bullets = new Vector<Bullet>();
preferences = sp;
plane = p;
}
public void refresh() {
count++;
for(int i = 0; i < bullets.size(); i++) {
Bullet bullet = bullets.get(i);
bullet.setTarget(plane);
bullet.move();
if(bullet.isOut()) {
bullets.remove(i);
bullets.add(getBulletOnState());
}
else {
if(bullet.isHit(plane)) {
plane.blast();
}
}
}
//add a bullet each 3 seconds
if(count%60 == 0 && bullets.size() < max_num) {
bullets.add(getBulletOnState());
}
//change bullet state each 5 seconds
if(count%100 == 0) {
changeBulletState();
}
}
public void draw(Canvas canvas) {
for(int i = 0; i < bullets.size(); i++) {
bullets.get(i).draw(canvas);
}
}
public void reset() {
//----------
String game_level = preferences.getString(DbKey.KEY_LEVEL, "Normal");
if(game_level.equals("Easy")) {
min_num = 10;
max_num = 40;
}
else if(game_level.equals("Normal")) {
min_num = 20;
max_num = 50;
}
else if(game_level.equals("Hard")) {
min_num = 30;
max_num = 60;
}
bullets.clear();
for(int i = 0; i < min_num; i++) {
bullets.add(new NormalBullet());
}
count = 0;
cur_state = 1;
}
public String getDescription() {
String str = null;
switch(getState()) {
case NORMAL:
str = new String(" ");
break;
case HISPEED:
str = new String("High speed bullets");
break;
case TRACE:
str = new String("Trace bullets");
break;
case HISPEED_TRACE:
str = new String("High speed trace bullets");
break;
}
return str;
}
private Bullet getBulletOnState() {
Bullet bullet = null;
switch(getState()) {
case NORMAL:
bullet = new NormalBullet();
break;
case HISPEED:
bullet = new HiSpeedBullet();
break;
case TRACE:
bullet = new TraceBullet();
break;
case HISPEED_TRACE:
bullet = new HiSpeedTraceBullet();
break;
}
return bullet;
}
private void changeBulletState() {
cur_state++;
if(cur_state >= 7) {
cur_state = 1;
}
}
private int getState() {
if(cur_state % 2 == 1) {
return 0;
}
else {
return cur_state/2;
}
}
}
|