mirror of
https://github.com/luksamuk/engine-psx.git
synced 2025-04-28 13:28:02 +03:00
Level select background animation
This commit is contained in:
parent
96fc0ad2e6
commit
6f5789edaa
2 changed files with 47 additions and 5 deletions
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -79,7 +79,7 @@ screen_modeltest_update(void *d)
|
|||
}
|
||||
|
||||
if(pad_pressed(PAD_SELECT)) {
|
||||
scene_change(SCREEN_TITLE);
|
||||
scene_change(SCREEN_LEVELSELECT);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue