package com.ptrprograms.asteroidbelttv.Objects; import com.ptrprograms.asteroidbelttv.Utils.Constants; import com.ptrprograms.asteroidbelttv.Utils.ShapeBuffer; import com.ptrprograms.asteroidbelttv.Utils.Utils; /** * Created by PaulTR on 7/20/14. */ public class Bullet { private Utils.Color mColor = new Utils.Color(); private float mBulletSize = 1.0f; private float mVelocityX; private float mVelocityY; public float mPositionX; public float mPositionY; public int mLifeTimer = 5 * 60; public Bullet( Utils.Color color, float shotDx, float shotDy, float positionX, float positionY ) { this.mColor.set( color ); mVelocityX = shotDx; mVelocityY = shotDy; mPositionX = positionX; mPositionY = positionY; } public void draw( ShapeBuffer sb ) { sb.add2DShape( mPositionX, mPositionY, mColor, getBulletVerticies(), mBulletSize, mBulletSize, 0, 0 ); } public float[] getBulletVerticies() { float vertices[] = new float[ 361*3 ]; vertices[0] = 0; vertices[1] = 0; vertices[2] = 0; for(int i =1; i <361; i++){ vertices[(i * 3)] = (float) (0.5 * Math.cos((3.14/180) * (float)i ) + vertices[0]); vertices[(i * 3)+ 1] = (float) (0.5 * Math.sin((3.14/180) * (float)i ) + vertices[1]); vertices[(i * 3)+ 2] = 0; } return vertices; } public void update( float delta ) { if( mLifeTimer > 0 ) { updateBulletPosition(delta); mLifeTimer--; } } public void updateBulletPosition( float delta ) { setPositionX( mPositionX + ( mVelocityX * delta ) ); setPositionY( mPositionY + ( mVelocityY * delta ) ); } public void setPositionX( float positionX ) { if( Constants.MAP_LEFT_COORDINATE - mBulletSize < positionX && positionX < Constants.MAP_RIGHT_COORDINATE + mBulletSize ) { mPositionX = positionX; } else if( positionX > Constants.MAP_RIGHT_COORDINATE ) { mPositionX = Constants.MAP_LEFT_COORDINATE; } else if( positionX < Constants.MAP_LEFT_COORDINATE ) { mPositionX = Constants.MAP_RIGHT_COORDINATE; } } public void setPositionY( float positionY ) { if( Constants.MAP_BOTTOM_COORDINATE - mBulletSize < positionY && positionY < Constants.MAP_TOP_COORDINATE + mBulletSize ) { mPositionY = positionY; } else if( positionY > Constants.MAP_TOP_COORDINATE + mBulletSize ) { mPositionY = Constants.MAP_BOTTOM_COORDINATE; } else if( positionY < Constants.MAP_BOTTOM_COORDINATE - mBulletSize ) { mPositionY = Constants.MAP_TOP_COORDINATE; } } }