From: Holger Schemel Date: Wed, 30 Mar 2022 21:46:58 +0000 (+0200) Subject: added support for separate busy animation for initial loading screen X-Git-Tag: 4.3.2.0~49 X-Git-Url: https://git.artsoft.org/?a=commitdiff_plain;h=aba7c979d1e33b986ab4ff520e4b002fc1ecb91e;p=rocksndiamonds.git added support for separate busy animation for initial loading screen --- diff --git a/src/conf_gfx.c b/src/conf_gfx.c index 8ba2e7f6..3db31650 100644 --- a/src/conf_gfx.c +++ b/src/conf_gfx.c @@ -7328,6 +7328,14 @@ struct ConfigInfo image_config[] = { "global.door", "RocksDoor.png" }, + { "global.busy_initial", "RocksBusy.png" }, + { "global.busy_initial.x", "0" }, + { "global.busy_initial.y", "0" }, + { "global.busy_initial.width", "32" }, + { "global.busy_initial.height", "32" }, + { "global.busy_initial.frames", "28" }, + { "global.busy_initial.frames_per_line", "7" }, + { "global.busy_initial.delay", "2" }, { "global.busy", "RocksBusy.png" }, { "global.busy.x", "0" }, { "global.busy.y", "0" }, @@ -7886,6 +7894,10 @@ struct ConfigInfo image_config[] = { "border.draw_masked_when_fading", "true" }, + { "init.busy_initial.x", "-1" }, + { "init.busy_initial.y", "-1" }, + { "init.busy_initial.align", "center" }, + { "init.busy_initial.valign", "middle" }, { "init.busy.x", "-1" }, { "init.busy.y", "-1" }, { "init.busy.align", "center" }, diff --git a/src/init.c b/src/init.c index 42adf59f..8b0d8ef3 100644 --- a/src/init.c +++ b/src/init.c @@ -34,15 +34,17 @@ #define CONFIG_TOKEN_FONT_INITIAL "font.initial" +#define CONFIG_TOKEN_GLOBAL_BUSY_INITIAL "global.busy_initial" #define CONFIG_TOKEN_GLOBAL_BUSY "global.busy" #define CONFIG_TOKEN_BACKGROUND_LOADING_INITIAL "background.LOADING_INITIAL" #define CONFIG_TOKEN_BACKGROUND_LOADING "background.LOADING" -#define INITIAL_IMG_GLOBAL_BUSY 0 -#define INITIAL_IMG_BACKGROUND_LOADING_INITIAL 1 -#define INITIAL_IMG_BACKGROUND_LOADING 2 +#define INITIAL_IMG_GLOBAL_BUSY_INITIAL 0 +#define INITIAL_IMG_GLOBAL_BUSY 1 +#define INITIAL_IMG_BACKGROUND_LOADING_INITIAL 2 +#define INITIAL_IMG_BACKGROUND_LOADING 3 -#define NUM_INITIAL_IMAGES 3 +#define NUM_INITIAL_IMAGES 4 static struct FontBitmapInfo font_initial[NUM_INITIAL_FONTS]; @@ -121,35 +123,41 @@ static void SetLoadingBackgroundImage(void) static void DrawInitAnim(void) { struct GraphicInfo *graphic_info_last = graphic_info; - int graphic = 0; + int graphic = (game_status_last_screen == -1 ? + INITIAL_IMG_GLOBAL_BUSY_INITIAL : + INITIAL_IMG_GLOBAL_BUSY); + struct MenuPosInfo *busy = (game_status_last_screen == -1 ? + &init_last.busy_initial : + &init_last.busy); static unsigned int action_delay = 0; unsigned int action_delay_value = GameFrameDelay; int sync_frame = FrameCounter; int x, y; + // prevent OS (Windows) from complaining about program not responding CheckQuitEvent(); if (game_status != GAME_MODE_LOADING) return; - if (image_initial[INITIAL_IMG_GLOBAL_BUSY].bitmap == NULL || window == NULL) + if (image_initial[graphic].bitmap == NULL || window == NULL) return; if (!DelayReached(&action_delay, action_delay_value)) return; - if (init_last.busy.x == -1) - init_last.busy.x = WIN_XSIZE / 2; - if (init_last.busy.y == -1) - init_last.busy.y = WIN_YSIZE / 2; + if (busy->x == -1) + busy->x = WIN_XSIZE / 2; + if (busy->y == -1) + busy->y = WIN_YSIZE / 2; - x = ALIGNED_TEXT_XPOS(&init_last.busy); - y = ALIGNED_TEXT_YPOS(&init_last.busy); + x = ALIGNED_TEXT_XPOS(busy); + y = ALIGNED_TEXT_YPOS(busy); - graphic_info = image_initial; // graphic == 0 => image_initial + graphic_info = image_initial; - if (sync_frame % image_initial[INITIAL_IMG_GLOBAL_BUSY].anim_delay == 0) + if (sync_frame % image_initial[graphic].anim_delay == 0) { Bitmap *src_bitmap; int src_x, src_y; @@ -5574,6 +5582,7 @@ static void InitGfx(void) char *filename_image_initial[NUM_INITIAL_IMAGES] = { NULL }; char *image_token[NUM_INITIAL_IMAGES] = { + CONFIG_TOKEN_GLOBAL_BUSY_INITIAL, CONFIG_TOKEN_GLOBAL_BUSY, CONFIG_TOKEN_BACKGROUND_LOADING_INITIAL, CONFIG_TOKEN_BACKGROUND_LOADING diff --git a/src/main.h b/src/main.h index b4a57291..64795686 100644 --- a/src/main.h +++ b/src/main.h @@ -2853,6 +2853,7 @@ struct TitleMessageInfo struct InitInfo { + struct MenuPosInfo busy_initial; struct MenuPosInfo busy; };