Barrage.java :  » UnTagged » dodge-or-death » com » moonflower » dod » component » Android Open Source

Android Open Source » UnTagged » dodge or death 
dodge or death » com » moonflower » dod » component » Barrage.java
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;
    }
  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.