bullet.java :  » UnTagged » tankforandroid » com » ipanel » tank » Android Open Source

Android Open Source » UnTagged » tankforandroid 
tankforandroid » com » ipanel » tank » bullet.java
package com.ipanel.tank;

import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;

import com.ipanel.game.Layer;
import com.ipanel.game.LayerManager;
import com.ipanel.game.Sprite;

public class bullet extends Sprite {

  private TankSprite parent;// 

  public static final int SMALL = 1;

  public static final int MAX = 2;

  int speed = 2;// 

  int direct = -1;// 

  public bullet(TankSprite parent, int width, int height) {
    super(null, width, height);
    this.parent = parent;
  }

  public bullet(TankSprite parent, int type) {
    if (type == SMALL) {
      this.width = 5;
      this.height = 5;
    } else {
      this.width = 10;
      this.height = 10;
    }
    this.parent = parent;
  }

  public void move() {
    switch (direct) {
    case Constants.LEFT:
      move(-speed, 0);
      break;
    case Constants.RIGHT:
      move(speed, 0);
      break;
    case Constants.UP:
      move(0, -speed);
      break;
    case Constants.DOWN:
      move(0, speed);
      break;
    default:
      move(0, 0);
      break;
    }
  }

  public int getSpeed() {
    return speed;
  }

  public void setSpeed(int speed) {
    this.speed = speed;
  }

  public TankSprite getParent() {
    return parent;
  }

  public int getDirect() {
    return direct;
  }

  public void setDirect(int direct) {
    this.direct = direct;
  }
  
  public void calcShutPosition(){
    switch(direct){
    case Constants.UP:
      x = parent.getX() + (parent.getWidth() >> 1) - (width >> 1);
      y = parent.getY();
      break;
    case Constants.DOWN:
      x = parent.getX() + (parent.getWidth() >> 1) - (width >> 1);
      y = parent.getY() + parent.getHeight();
      break;
    case Constants.LEFT:
      x = parent.getX();
      y = parent.getY() + (parent.getHeight() >> 1) - (height >> 1);
      break;
    case Constants.RIGHT:
      x = parent.getX() + parent.getWidth();
      y = parent.getY() + (parent.getHeight() >> 1) - (height >> 1);
      break;
    }
  }

  @Override
  public void paint(Canvas c) {
    if (x < 0 || x > c.getWidth() || y < 0 || y > c.getHeight()){
      parent.getLayerManager().remove(this);
    }
    
    if (conllision()){
      return;
    }
    
    move();
    Paint mPaint = new Paint();
    mPaint.setColor(Color.WHITE);
    Rect r = new Rect(x, y, x + width, y + height);
    c.drawRect(r, mPaint);
    
  }
  
  private boolean conllision(){
    LayerManager layerManager = parent.getLayerManager();
    int size = layerManager.getSize();
    Layer layer = null;
    Sprite sprite = null;
    for(int i=0;i<size;i++){
      sprite = (Sprite)layerManager.getLayerAt(i);
      if (sprite == this){
        continue;
      }
      if (collidesWith(sprite, true)){
        this.setVisible(false);
        sprite.setVisible(false);
        return true;
      }
    }
    return false;
  }

}
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.