X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Finit.c;h=dbba5f1250154305c8c1412d8ab0255326a72907;hb=368684d4c5e2a59cbea8c5e35171f3fe008b844f;hp=8b0d8ef39600de69f49b8916bea19047334d759c;hpb=aba7c979d1e33b986ab4ff520e4b002fc1ecb91e;p=rocksndiamonds.git diff --git a/src/init.c b/src/init.c index 8b0d8ef3..dbba5f12 100644 --- a/src/init.c +++ b/src/init.c @@ -36,15 +36,20 @@ #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_GLOBAL_BUSY_PLAYFIELD "global.busy_playfield" #define CONFIG_TOKEN_BACKGROUND_LOADING_INITIAL "background.LOADING_INITIAL" #define CONFIG_TOKEN_BACKGROUND_LOADING "background.LOADING" #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 INITIAL_IMG_GLOBAL_BUSY_PLAYFIELD 2 -#define NUM_INITIAL_IMAGES 4 +#define NUM_INITIAL_IMAGES_BUSY 3 + +#define INITIAL_IMG_BACKGROUND_LOADING_INITIAL 3 +#define INITIAL_IMG_BACKGROUND_LOADING 4 + +#define NUM_INITIAL_IMAGES 5 static struct FontBitmapInfo font_initial[NUM_INITIAL_FONTS]; @@ -120,25 +125,28 @@ static void SetLoadingBackgroundImage(void) graphic_info = graphic_info_last; } -static void DrawInitAnim(void) +static void DrawInitAnim(boolean only_when_loading) { struct GraphicInfo *graphic_info_last = graphic_info; int graphic = (game_status_last_screen == -1 ? INITIAL_IMG_GLOBAL_BUSY_INITIAL : - INITIAL_IMG_GLOBAL_BUSY); + game_status == GAME_MODE_LOADING ? + INITIAL_IMG_GLOBAL_BUSY : + INITIAL_IMG_GLOBAL_BUSY_PLAYFIELD); struct MenuPosInfo *busy = (game_status_last_screen == -1 ? &init_last.busy_initial : - &init_last.busy); + game_status == GAME_MODE_LOADING ? + &init_last.busy : + &init_last.busy_playfield); 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) + if (game_status != GAME_MODE_LOADING && only_when_loading) return; if (image_initial[graphic].bitmap == NULL || window == NULL) @@ -148,12 +156,12 @@ static void DrawInitAnim(void) return; if (busy->x == -1) - busy->x = WIN_XSIZE / 2; + busy->x = (game_status == GAME_MODE_LOADING ? WIN_XSIZE / 2 : SXSIZE / 2); if (busy->y == -1) - busy->y = WIN_YSIZE / 2; + busy->y = (game_status == GAME_MODE_LOADING ? WIN_YSIZE / 2 : SYSIZE / 2); - x = ALIGNED_TEXT_XPOS(busy); - y = ALIGNED_TEXT_YPOS(busy); + x = (game_status == GAME_MODE_LOADING ? 0 : SX) + ALIGNED_TEXT_XPOS(busy); + y = (game_status == GAME_MODE_LOADING ? 0 : SY) + ALIGNED_TEXT_YPOS(busy); graphic_info = image_initial; @@ -4904,6 +4912,9 @@ static void InitGlobal(void) global_anim_info[i].token_name = global_anim_name_info[i].token_name; } + // create hash to store URLs for global animations + anim_url_hash = newSetupFileHash(); + // create hash from image config list image_config_hash = newSetupFileHash(); for (i = 0; image_config[i].token != NULL; i++) @@ -5584,9 +5595,16 @@ static void InitGfx(void) { CONFIG_TOKEN_GLOBAL_BUSY_INITIAL, CONFIG_TOKEN_GLOBAL_BUSY, + CONFIG_TOKEN_GLOBAL_BUSY_PLAYFIELD, CONFIG_TOKEN_BACKGROUND_LOADING_INITIAL, CONFIG_TOKEN_BACKGROUND_LOADING }; + struct MenuPosInfo *init_busy[NUM_INITIAL_IMAGES_BUSY] = + { + &init.busy_initial, + &init.busy, + &init.busy_playfield + }; Bitmap *bitmap_font_initial = NULL; int parameter[NUM_INITIAL_IMAGES][NUM_GFX_ARGS]; int i, j, k; @@ -5751,6 +5769,13 @@ static void InitGfx(void) graphic_info = graphic_info_last; + for (i = 0; i < NUM_INITIAL_IMAGES_BUSY; i++) + { + // set image size for busy animations + init_busy[i]->width = image_initial[i].width; + init_busy[i]->height = image_initial[i].height; + } + SetLoadingBackgroundImage(); ClearRectangleOnBackground(window, 0, 0, WIN_XSIZE, WIN_YSIZE);