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