lots of work
This commit is contained in:
parent
4036b5f07e
commit
06648c2dc1
18 changed files with 640 additions and 113 deletions
33
src/chrome.h
33
src/chrome.h
|
|
@ -174,6 +174,15 @@ static void updateMap(){
|
|||
VDP_setTileMapXY(BG_A, MAP_PLAYER_TILE, MAP_X + MAP_W / 2, MAP_Y + pRow);
|
||||
}
|
||||
|
||||
s16 lastLevel;
|
||||
static void drawLevel(){
|
||||
char lvlStr[4];
|
||||
uintToStr(level + 1, lvlStr, 1);
|
||||
VDP_drawText("L", 1, 26);
|
||||
VDP_drawText(lvlStr, 2, 26);
|
||||
lastLevel = level;
|
||||
}
|
||||
|
||||
void loadChrome(){
|
||||
VDP_loadTileSet(imageFontBig.tileset, FONT_BIG_I, DMA);
|
||||
VDP_loadTileSet(imageFontBigShadow.tileset, FONT_BIG_I + 32, DMA);
|
||||
|
|
@ -183,6 +192,7 @@ void loadChrome(){
|
|||
lastScore = 1;
|
||||
drawScore();
|
||||
drawLives();
|
||||
drawLevel();
|
||||
}
|
||||
|
||||
bool didGameOver;
|
||||
|
|
@ -191,7 +201,25 @@ static void doGameOver(){
|
|||
didGameOver = TRUE;
|
||||
for(s16 i = 0; i < BULLET_COUNT; i++) if(bullets[i].active) SPR_setPalette(bullets[i].image, PAL1);
|
||||
for(s16 i = 0; i < ENEMY_COUNT; i++) if(enemies[i].active) SPR_setPalette(enemies[i].image, PAL1);
|
||||
for(s16 i = 0; i < HUMAN_COUNT; i++) if(humans[i].active) SPR_setPalette(humans[i].image, PAL1);
|
||||
for(s16 i = 0; i < HUMAN_COUNT; i++) if(humans[i].active){
|
||||
if(humans[i].state == HUMAN_COLLECTED){
|
||||
// spawn player bullet explosion at carried human position
|
||||
struct bulletSpawner spawner = {
|
||||
.x = humans[i].pos.x, .y = humans[i].pos.y,
|
||||
.anim = 0, .speed = 0, .angle = 0, .player = TRUE
|
||||
};
|
||||
void noop(s16 j){ (void)j; }
|
||||
spawnBullet(spawner, noop);
|
||||
for(s16 j = BULLET_COUNT - 1; j >= 0; j--){
|
||||
if(bullets[j].active && !bullets[j].explosion
|
||||
&& bullets[j].pos.x == humans[i].pos.x && bullets[j].pos.y == humans[i].pos.y){
|
||||
killBullet(j, TRUE);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
killHuman(i);
|
||||
}
|
||||
SPR_releaseSprite(player.image);
|
||||
// clear minimap
|
||||
VDP_clearTileMapRect(BG_A, MAP_X, MAP_Y, MAP_W, MAP_H);
|
||||
|
|
@ -210,6 +238,7 @@ static void showPause(){
|
|||
for(s16 i = 0; i < ENEMY_COUNT; i++) if(enemies[i].active) SPR_setPalette(enemies[i].image, PAL1);
|
||||
for(s16 i = 0; i < HUMAN_COUNT; i++) if(humans[i].active) SPR_setPalette(humans[i].image, PAL1);
|
||||
SPR_setPalette(player.image, PAL1);
|
||||
XGM2_pause();
|
||||
VDP_drawText("PAUSE", 17, 13);
|
||||
}
|
||||
|
||||
|
|
@ -218,6 +247,7 @@ static void clearPause(){
|
|||
for(s16 i = 0; i < ENEMY_COUNT; i++) if(enemies[i].active) SPR_setPalette(enemies[i].image, PAL0);
|
||||
for(s16 i = 0; i < HUMAN_COUNT; i++) if(humans[i].active) SPR_setPalette(humans[i].image, PAL0);
|
||||
SPR_setPalette(player.image, PAL0);
|
||||
XGM2_resume();
|
||||
VDP_clearText(17, 13, 5);
|
||||
}
|
||||
|
||||
|
|
@ -276,5 +306,6 @@ void updateChrome(){
|
|||
drawScore();
|
||||
}
|
||||
if(lastLives != player.lives) drawLives();
|
||||
if(lastLevel != level) drawLevel();
|
||||
if(clock % 4 == 0) updateMap();
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue