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