Level select background animation

This commit is contained in:
Lucas S. Vieira 2024-10-12 11:14:47 -03:00
parent 96fc0ad2e6
commit 6f5789edaa
2 changed files with 47 additions and 5 deletions

View file

@ -25,10 +25,18 @@ typedef struct {
int32_t bg_prect_x;
int32_t bg_prect_y;
uint8_t bg_mode;
uint8_t bg_frame;
uint8_t bg_state;
uint16_t bg_timer;
} screen_levelselect_data;
extern int debug_mode;
#define BG_PAUSE 90
#define BG_FPS 4
#define BG_FRAMES 4
void
screen_levelselect_load()
{
@ -45,6 +53,10 @@ screen_levelselect_load()
data->bg_prect_y = bg.prect->y;
free(img);
data->bg_frame = 0;
data->bg_state = 0;
data->bg_timer = BG_PAUSE;
sound_play_xa("\\BGM\\MNU001.XA;1", 0, 0, 0);
}
@ -65,6 +77,36 @@ screen_levelselect_update(void *d)
screen_levelselect_data *data = (screen_levelselect_data *)d;
if((data->bg_state == 0) || (data->bg_state == 2)) {
data->bg_timer--;
if(data->bg_timer == 0) {
data->bg_state++;
data->bg_timer = BG_FPS;
}
} else if(data->bg_state == 1) {
data->bg_timer--;
if(data->bg_timer == 0) {
data->bg_frame++;
data->bg_timer = BG_FPS;
if(data->bg_frame == BG_FRAMES - 1) {
data->bg_state++;
data->bg_timer = BG_PAUSE;
}
}
} else if(data->bg_state == 3) {
data->bg_timer--;
if(data->bg_timer == 0) {
data->bg_frame--;
data->bg_timer = BG_FPS;
if(data->bg_frame == 0) {
data->bg_state = 0;
data->bg_timer = BG_PAUSE;
}
}
}
if(pad_pressed(PAD_DOWN))
data->menu_choice++;
else if(pad_pressed(PAD_UP)) {
@ -114,7 +156,7 @@ screen_levelselect_draw(void *d)
data->bg_prect_y);
poly->clut = 0;
setXYWH(poly, x, y, 48, 32);
setUVWH(poly, 0, 0, 48, 32);
setUVWH(poly, 0, 32 * data->bg_frame, 48, 32);
sort_prim(poly, 3);
}
}

View file

@ -79,7 +79,7 @@ screen_modeltest_update(void *d)
}
if(pad_pressed(PAD_SELECT)) {
scene_change(SCREEN_TITLE);
scene_change(SCREEN_LEVELSELECT);
}
}