diff --git a/gfx/loading.png b/gfx/loading.png new file mode 100644 index 00000000..96f39874 Binary files /dev/null and b/gfx/loading.png differ diff --git a/src/main.c b/src/main.c index 38b2acdd..88505cf8 100644 --- a/src/main.c +++ b/src/main.c @@ -31,7 +31,6 @@ void init_gl(void) { init_quadvbo(); glClear(GL_COLOR_BUFFER_BIT); - SDL_GL_SwapBuffers(); } @@ -83,6 +82,8 @@ int main(int argc, char** argv) { printf("-- ALUT\n"); } + draw_loading_screen(); + init_global(); gamepad_init(); printf("initialization complete.\n"); diff --git a/src/menu/mainmenu.c b/src/menu/mainmenu.c index 81d186ee..dd6b79ab 100644 --- a/src/menu/mainmenu.c +++ b/src/menu/mainmenu.c @@ -170,6 +170,6 @@ void draw_main_menu(MenuData *menu) { } void main_menu_loop(MenuData *menu) { - set_transition(TransFadeBlack, -1, FADE_TIME); + set_transition(TransLoader, -1, FADE_TIME*2); menu_loop(menu, NULL, draw_main_menu, NULL); } diff --git a/src/resource/resource.c b/src/resource/resource.c index 6aa53edf..b00c5df4 100644 --- a/src/resource/resource.c +++ b/src/resource/resource.c @@ -134,3 +134,19 @@ void free_resources(void) { delete_shaders(); } } + +void draw_loading_screen(void) { + const char *prefix = get_prefix(); + char *buf = malloc(strlen(prefix)+16); + Texture *tex; + + strcpy(buf, prefix); + strcat(buf, "gfx/loading.png"); + + set_ortho(); + + tex = load_texture(buf); + + draw_texture_p(SCREEN_W/2,SCREEN_H/2, tex); + SDL_GL_SwapBuffers(); +} \ No newline at end of file diff --git a/src/resource/resource.h b/src/resource/resource.h index 76ff2184..3e64d116 100644 --- a/src/resource/resource.h +++ b/src/resource/resource.h @@ -49,4 +49,6 @@ extern Resources resources; void load_resources(void); void free_resources(void); + +void draw_loading_screen(void); #endif diff --git a/src/transition.c b/src/transition.c index f0a8e280..1529a3c0 100644 --- a/src/transition.c +++ b/src/transition.c @@ -26,6 +26,12 @@ void TransFadeWhite(Transition *t) { colorfill(1,1,1,trans_fade(t)); } +void TransLoader(Transition *t) { + glColor4f(1,1,1,trans_fade(t)); + draw_texture(SCREEN_W/2,SCREEN_H/2,"loading"); + glColor4f(1,1,1,1); +} + void set_transition(TransitionRule rule, int dur1, int dur2) { if(!rule) return; diff --git a/src/transition.h b/src/transition.h index 72adade5..2d7a066c 100644 --- a/src/transition.h +++ b/src/transition.h @@ -21,6 +21,7 @@ struct Transition { void TransFadeBlack(Transition *t); void TransFadeWhite(Transition *t); +void TransLoader(Transition *t); void set_transition(TransitionRule rule, int dur1, int dur2); void draw_transition(void);