X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Finit.c;h=f07be1d395e341c05e9b0dc7ac0c796e49cea4f5;hb=7f33353a6e8ce4dc9a3b7a604a4c7deb836544f7;hp=727dcf30be2cfe03197b82bd9d436bf4dfdb808c;hpb=a83b80746af872fda08896f27e8b38303cd33bb2;p=rocksndiamonds.git diff --git a/src/init.c b/src/init.c index 727dcf30..f07be1d3 100644 --- a/src/init.c +++ b/src/init.c @@ -37,6 +37,7 @@ #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 "background" #define CONFIG_TOKEN_BACKGROUND_LOADING_INITIAL "background.LOADING_INITIAL" #define CONFIG_TOKEN_BACKGROUND_LOADING "background.LOADING" @@ -46,10 +47,11 @@ #define NUM_INITIAL_IMAGES_BUSY 3 -#define INITIAL_IMG_BACKGROUND_LOADING_INITIAL 3 -#define INITIAL_IMG_BACKGROUND_LOADING 4 +#define INITIAL_IMG_BACKGROUND 3 +#define INITIAL_IMG_BACKGROUND_LOADING_INITIAL 4 +#define INITIAL_IMG_BACKGROUND_LOADING 5 -#define NUM_INITIAL_IMAGES 5 +#define NUM_INITIAL_IMAGES 6 static struct FontBitmapInfo font_initial[NUM_INITIAL_FONTS]; @@ -108,6 +110,16 @@ static int copy_properties[][5] = static int get_graphic_parameter_value(char *, char *, int); +static Bitmap *getLoadingBackgroundBitmap(int graphic) +{ + return getBitmapFromGraphicOrDefault(graphic, INITIAL_IMG_BACKGROUND); +} + +static void SetLoadingWindowBackgroundImage(int graphic) +{ + SetWindowBackgroundBitmap(getLoadingBackgroundBitmap(graphic)); +} + static void SetLoadingBackgroundImage(void) { struct GraphicInfo *graphic_info_last = graphic_info; @@ -120,7 +132,7 @@ static void SetLoadingBackgroundImage(void) SetDrawDeactivationMask(REDRAW_NONE); SetDrawBackgroundMask(REDRAW_ALL); - SetWindowBackgroundImage(background_image); + SetLoadingWindowBackgroundImage(background_image); graphic_info = graphic_info_last; } @@ -138,11 +150,12 @@ static void DrawInitAnim(boolean only_when_loading) game_status == GAME_MODE_LOADING ? &init_last.busy : &init_last.busy_playfield); - static unsigned int action_delay = 0; - unsigned int action_delay_value = GameFrameDelay; + static DelayCounter action_delay = { 0 }; int sync_frame = FrameCounter; int x, y; + action_delay.value = GameFrameDelay; + // prevent OS (Windows) from complaining about program not responding CheckQuitEvent(); @@ -152,7 +165,7 @@ static void DrawInitAnim(boolean only_when_loading) if (image_initial[graphic].bitmap == NULL || window == NULL) return; - if (!DelayReached(&action_delay, action_delay_value)) + if (!DelayReached(&action_delay)) return; if (busy->x == -1) @@ -1548,6 +1561,9 @@ static void set_graphic_parameters_ext(int graphic, int *parameter, // animation synchronized with global frame counter, not move position g->anim_global_sync = parameter[GFX_ARG_GLOBAL_SYNC]; + // animation synchronized with global anim frame counter, not move position + g->anim_global_anim_sync = parameter[GFX_ARG_GLOBAL_ANIM_SYNC]; + // optional element for cloning crumble graphics if (parameter[GFX_ARG_CRUMBLED_LIKE] != ARG_UNDEFINED_VALUE) g->crumbled_like = parameter[GFX_ARG_CRUMBLED_LIKE]; @@ -4224,6 +4240,7 @@ void InitElementPropertiesStatic(void) EL_BD_AMOEBA, EL_EMC_MAGIC_BALL, EL_EMC_ANDROID, + EL_MM_GRAY_BALL, -1 }; @@ -5670,6 +5687,7 @@ static void InitGfx(void) CONFIG_TOKEN_GLOBAL_BUSY_INITIAL, CONFIG_TOKEN_GLOBAL_BUSY, CONFIG_TOKEN_GLOBAL_BUSY_PLAYFIELD, + CONFIG_TOKEN_BACKGROUND, CONFIG_TOKEN_BACKGROUND_LOADING_INITIAL, CONFIG_TOKEN_BACKGROUND_LOADING }; @@ -5965,17 +5983,14 @@ static void InitImages(void) print_timestamp_done("InitImages"); } -static void InitSound(char *identifier) +static void InitSound(void) { print_timestamp_init("InitSound"); - if (identifier == NULL) - identifier = artwork.snd_current->identifier; - // set artwork path to send it to the sound server process setLevelArtworkDir(artwork.snd_first); - InitReloadCustomSounds(identifier); + InitReloadCustomSounds(); print_timestamp_time("InitReloadCustomSounds"); ReinitializeSounds(); @@ -5984,17 +5999,14 @@ static void InitSound(char *identifier) print_timestamp_done("InitSound"); } -static void InitMusic(char *identifier) +static void InitMusic(void) { print_timestamp_init("InitMusic"); - if (identifier == NULL) - identifier = artwork.mus_current->identifier; - // set artwork path to send it to the sound server process setLevelArtworkDir(artwork.mus_first); - InitReloadCustomMusic(identifier); + InitReloadCustomMusic(); print_timestamp_time("InitReloadCustomMusic"); ReinitializeMusic(); @@ -6328,13 +6340,13 @@ void ReloadCustomArtwork(int force_reload) if (snd_new_identifier != NULL || force_reload_snd) { - InitSound(snd_new_identifier); + InitSound(); print_timestamp_time("InitSound"); } if (mus_new_identifier != NULL || force_reload_mus) { - InitMusic(mus_new_identifier); + InitMusic(); print_timestamp_time("InitMusic"); } @@ -6522,10 +6534,10 @@ void OpenAll(void) InitImages(); // needs to know current level directory print_timestamp_time("InitImages"); - InitSound(NULL); // needs to know current level directory + InitSound(); // needs to know current level directory print_timestamp_time("InitSound"); - InitMusic(NULL); // needs to know current level directory + InitMusic(); // needs to know current level directory print_timestamp_time("InitMusic"); InitArtworkDone(); @@ -6610,8 +6622,7 @@ void OpenAll(void) static boolean WaitForApiThreads(void) { - unsigned int thread_delay = 0; - unsigned int thread_delay_value = 10000; + DelayCounter thread_delay = { 10000 }; if (program.api_thread_count == 0) return TRUE; @@ -6627,7 +6638,7 @@ static boolean WaitForApiThreads(void) // wait for threads to finish (and fail on timeout) while (program.api_thread_count > 0) { - if (DelayReached(&thread_delay, thread_delay_value)) + if (DelayReached(&thread_delay)) { Error("failed waiting for threads - TIMEOUT");