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
|
@ -22,13 +22,21 @@
|
||||||
typedef struct {
|
typedef struct {
|
||||||
uint8_t menu_choice;
|
uint8_t menu_choice;
|
||||||
char buffer[255];
|
char buffer[255];
|
||||||
int32_t bg_prect_x;
|
int32_t bg_prect_x;
|
||||||
int32_t bg_prect_y;
|
int32_t bg_prect_y;
|
||||||
uint8_t bg_mode;
|
uint8_t bg_mode;
|
||||||
|
uint8_t bg_frame;
|
||||||
|
uint8_t bg_state;
|
||||||
|
uint16_t bg_timer;
|
||||||
} screen_levelselect_data;
|
} screen_levelselect_data;
|
||||||
|
|
||||||
extern int debug_mode;
|
extern int debug_mode;
|
||||||
|
|
||||||
|
|
||||||
|
#define BG_PAUSE 90
|
||||||
|
#define BG_FPS 4
|
||||||
|
#define BG_FRAMES 4
|
||||||
|
|
||||||
void
|
void
|
||||||
screen_levelselect_load()
|
screen_levelselect_load()
|
||||||
{
|
{
|
||||||
|
@ -44,6 +52,10 @@ screen_levelselect_load()
|
||||||
data->bg_prect_x = bg.prect->x;
|
data->bg_prect_x = bg.prect->x;
|
||||||
data->bg_prect_y = bg.prect->y;
|
data->bg_prect_y = bg.prect->y;
|
||||||
free(img);
|
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);
|
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;
|
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))
|
if(pad_pressed(PAD_DOWN))
|
||||||
data->menu_choice++;
|
data->menu_choice++;
|
||||||
else if(pad_pressed(PAD_UP)) {
|
else if(pad_pressed(PAD_UP)) {
|
||||||
|
@ -114,7 +156,7 @@ screen_levelselect_draw(void *d)
|
||||||
data->bg_prect_y);
|
data->bg_prect_y);
|
||||||
poly->clut = 0;
|
poly->clut = 0;
|
||||||
setXYWH(poly, x, y, 48, 32);
|
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);
|
sort_prim(poly, 3);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -79,7 +79,7 @@ screen_modeltest_update(void *d)
|
||||||
}
|
}
|
||||||
|
|
||||||
if(pad_pressed(PAD_SELECT)) {
|
if(pad_pressed(PAD_SELECT)) {
|
||||||
scene_change(SCREEN_TITLE);
|
scene_change(SCREEN_LEVELSELECT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue