You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
226 lines
6.7 KiB
226 lines
6.7 KiB
#include "bullet.h"
|
|
|
|
void renderBullet(unsigned int* framePointer) {
|
|
if(getGuiseBullet() == 0) {
|
|
setGuiseBullet(1);
|
|
renderBullet1(framePointer);
|
|
}else {
|
|
setGuiseBullet(0);
|
|
renderBullet2(framePointer);
|
|
}
|
|
}
|
|
|
|
void renderBullet1(unsigned int* framePointer) {
|
|
if(getTankBulletState() == 1) {
|
|
short initial_x = getTankBulletPositionX();
|
|
short initial_y = getTankBulletPositionY();
|
|
int x, y;
|
|
for(x = 0; x < BLOCK_HEIGHT; x++) {
|
|
for(y = 0; y < BLOCK_WIDTH; y++){
|
|
if ((tankBullet[x%10] & (1<<(BLOCK_WIDTH-1-y)))) {
|
|
framePointer[(initial_y+x)*640 + initial_x+y] = 0x00FFFFFE;
|
|
} else {
|
|
framePointer[(initial_y+x)*640 + initial_x+y] = 0x00000000;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if(getAlien1BulletState() == 1) {
|
|
short initial_x = getAlien1BulletPositionX();
|
|
short initial_y = getAlien1BulletPositionY();
|
|
int x, y;
|
|
for(x = 0; x < BLOCK_HEIGHT; x++) {
|
|
for(y = 0; y < BLOCK_WIDTH; y++){
|
|
if ((alienBullet1_1[x%10] & (1<<(BLOCK_WIDTH-1-y)))) {
|
|
framePointer[(initial_y+x)*640 + initial_x+y] = 0x00FFFFFE;
|
|
} else {
|
|
framePointer[(initial_y+x)*640 + initial_x+y] = 0x00000000;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if(getAlien2BulletState() == 1) {
|
|
short initial_x = getAlien2BulletPositionX();
|
|
short initial_y = getAlien2BulletPositionY();
|
|
int x, y;
|
|
for(x = 0; x < BLOCK_HEIGHT; x++) {
|
|
for(y = 0; y < BLOCK_WIDTH; y++){
|
|
if ((alienBullet2_1[x%10] & (1<<(BLOCK_WIDTH-1-y)))) {
|
|
framePointer[(initial_y+x)*640 + initial_x+y] = 0x00FFFFFE;
|
|
} else {
|
|
framePointer[(initial_y+x)*640 + initial_x+y] = 0x00000000;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if(getAlien3BulletState() == 1) {
|
|
short initial_x = getAlien3BulletPositionX();
|
|
short initial_y = getAlien3BulletPositionY();
|
|
int x, y;
|
|
for(x = 0; x < BLOCK_HEIGHT; x++) {
|
|
for(y = 0; y < BLOCK_WIDTH; y++){
|
|
if ((alienBullet3_1[x%10] & (1<<(BLOCK_WIDTH-1-y)))) {
|
|
framePointer[(initial_y+x)*640 + initial_x+y] = 0x00FFFFFE;
|
|
} else {
|
|
framePointer[(initial_y+x)*640 + initial_x+y] = 0x00000000;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if(getAlien4BulletState() == 1) {
|
|
short initial_x = getAlien4BulletPositionX();
|
|
short initial_y = getAlien4BulletPositionY();
|
|
int x, y;
|
|
for(x = 0; x < BLOCK_HEIGHT; x++) {
|
|
for(y = 0; y < BLOCK_WIDTH; y++){
|
|
if ((alienBullet1_1[x%10] & (1<<(BLOCK_WIDTH-1-y)))) {
|
|
framePointer[(initial_y+x)*640 + initial_x+y] = 0x00FFFFFE;
|
|
} else {
|
|
framePointer[(initial_y+x)*640 + initial_x+y] = 0x00000000;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void renderBullet2(unsigned int* framePointer) {
|
|
if(getTankBulletState() == 1) {
|
|
short initial_x = getTankBulletPositionX();
|
|
short initial_y = getTankBulletPositionY();
|
|
int x, y;
|
|
for(x = 0; x < BLOCK_HEIGHT; x++) {
|
|
for(y = 0; y < BLOCK_WIDTH; y++){
|
|
if ((tankBullet[x%10] & (1<<(BLOCK_WIDTH-1-y)))) {
|
|
framePointer[(initial_y+x)*640 + initial_x+y] = 0x00FFFFFE;
|
|
} else {
|
|
framePointer[(initial_y+x)*640 + initial_x+y] = 0x00000000;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if(getAlien1BulletState() == 1) {
|
|
short initial_x = getAlien1BulletPositionX();
|
|
short initial_y = getAlien1BulletPositionY();
|
|
int x, y;
|
|
for(x = 0; x < BLOCK_HEIGHT; x++) {
|
|
for(y = 0; y < BLOCK_WIDTH; y++){
|
|
if ((alienBullet1_2[x%10] & (1<<(BLOCK_WIDTH-1-y)))) {
|
|
framePointer[(initial_y+x)*640 + initial_x+y] = 0x00FFFFFE;
|
|
} else {
|
|
framePointer[(initial_y+x)*640 + initial_x+y] = 0x00000000;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if(getAlien2BulletState() == 1) {
|
|
short initial_x = getAlien2BulletPositionX();
|
|
short initial_y = getAlien2BulletPositionY();
|
|
int x, y;
|
|
for(x = 0; x < BLOCK_HEIGHT; x++) {
|
|
for(y = 0; y < BLOCK_WIDTH; y++){
|
|
if ((alienBullet2_2[x%10] & (1<<(BLOCK_WIDTH-1-y)))) {
|
|
framePointer[(initial_y+x)*640 + initial_x+y] = 0x00FFFFFE;
|
|
} else {
|
|
framePointer[(initial_y+x)*640 + initial_x+y] = 0x00000000;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if(getAlien3BulletState() == 1) {
|
|
short initial_x = getAlien3BulletPositionX();
|
|
short initial_y = getAlien3BulletPositionY();
|
|
int x, y;
|
|
for(x = 0; x < BLOCK_HEIGHT; x++) {
|
|
for(y = 0; y < BLOCK_WIDTH; y++){
|
|
if ((alienBullet3_2[x%10] & (1<<(BLOCK_WIDTH-1-y)))) {
|
|
framePointer[(initial_y+x)*640 + initial_x+y] = 0x00FFFFFE;
|
|
} else {
|
|
framePointer[(initial_y+x)*640 + initial_x+y] = 0x00000000;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if(getAlien4BulletState() == 1) {
|
|
short initial_x = getAlien4BulletPositionX();
|
|
short initial_y = getAlien4BulletPositionY();
|
|
int x, y;
|
|
for(x = 0; x < BLOCK_HEIGHT; x++) {
|
|
for(y = 0; y < BLOCK_WIDTH; y++){
|
|
if ((alienBullet1_2[x%10] & (1<<(BLOCK_WIDTH-1-y)))) {
|
|
framePointer[(initial_y+x)*640 + initial_x+y] = 0x00FFFFFE;
|
|
} else {
|
|
framePointer[(initial_y+x)*640 + initial_x+y] = 0x00000000;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void blankTankBullet(unsigned int* framePointer){
|
|
short tankx, tanky;
|
|
tankx = getTankBulletPositionX();
|
|
tanky = getTankBulletPositionY();
|
|
short row=0, col=0;
|
|
for(row = 0; row < BLOCK_HEIGHT; row++){
|
|
for(col = 0; col < BLOCK_WIDTH; col++){
|
|
framePointer[(tanky+row)*640 + tankx+col] = 0x00000000;
|
|
}
|
|
}
|
|
}
|
|
|
|
void blankAlienBullet(unsigned int* framePointer, short alienx, short alieny) {
|
|
short row=0, col=0;
|
|
for(row = 0; row < BLOCK_HEIGHT; row++){
|
|
for(col = 0; col < BLOCK_WIDTH; col++){
|
|
framePointer[(alieny+row)*640 + alienx+col] = 0x00000000;
|
|
}
|
|
}
|
|
}
|
|
|
|
void moveBullets(unsigned int* framePointer) {
|
|
if(getTankBulletState() == 1) {
|
|
if(getTankBulletPositionY() == 30) {
|
|
blankTankBullet(framePointer);
|
|
setTankBulletState(0);
|
|
}
|
|
else {
|
|
setTankBulletPositionY(getTankBulletPositionY()-1);
|
|
}
|
|
}
|
|
if(getAlien1BulletState() == 1) {
|
|
if(getAlien1BulletPositionY() == 450) {
|
|
blankAlienBullet(framePointer, getAlien1BulletPositionX(), getAlien1BulletPositionY());
|
|
setAlien1BulletState(0);
|
|
}
|
|
else {
|
|
setAlien1BulletPositionY(getAlien1BulletPositionY()+1);
|
|
}
|
|
}
|
|
if(getAlien2BulletState() == 1) {
|
|
if(getAlien2BulletPositionY() == 450) {
|
|
blankAlienBullet(framePointer, getAlien2BulletPositionX(), getAlien2BulletPositionY());
|
|
setAlien2BulletState(0);
|
|
}
|
|
else {
|
|
setAlien2BulletPositionY(getAlien2BulletPositionY()+1);
|
|
}
|
|
}
|
|
if(getAlien3BulletState() == 1) {
|
|
if(getAlien3BulletPositionY() == 450) {
|
|
blankAlienBullet(framePointer, getAlien3BulletPositionX(), getAlien3BulletPositionY());
|
|
setAlien3BulletState(0);
|
|
}
|
|
else {
|
|
setAlien3BulletPositionY(getAlien3BulletPositionY()+1);
|
|
}
|
|
}
|
|
if(getAlien4BulletState() == 1) {
|
|
if(getAlien4BulletPositionY() == 450) {
|
|
blankAlienBullet(framePointer, getAlien4BulletPositionX(), getAlien4BulletPositionY());
|
|
setAlien4BulletState(0);
|
|
}
|
|
else {
|
|
setAlien4BulletPositionY(getAlien4BulletPositionY()+1);
|
|
}
|
|
}
|
|
}
|
|
|