X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Finit.c;h=512c2756d2bdb8478cc8d46a9ce99a7deaad5eca;hb=28514fc1f1f57cd280c32fba47eed6893caa3641;hp=9ecc59c389c35275d42875619ffd33f0b7e16239;hpb=56356dc9e2d4a856879a3c91aa7212d0a80afdfd;p=rocksndiamonds.git diff --git a/src/init.c b/src/init.c index 9ecc59c3..512c2756 100644 --- a/src/init.c +++ b/src/init.c @@ -2605,6 +2605,8 @@ void ResolveGroupElement(int group_element) void InitElementPropertiesStatic() { + static boolean clipboard_elements_initialized = FALSE; + static int ep_diggable[] = { EL_SAND, @@ -4553,9 +4555,12 @@ void InitElementPropertiesStatic() int i, j, k; /* always start with reliable default values (element has no properties) */ + /* (but never initialize clipboard elements after the very first time) */ + /* (to be able to use clipboard elements between several levels) */ for (i = 0; i < MAX_NUM_ELEMENTS; i++) - for (j = 0; j < NUM_ELEMENT_PROPERTIES; j++) - SET_PROPERTY(i, j, FALSE); + if (!IS_CLIPBOARD_ELEMENT(i) || !clipboard_elements_initialized) + for (j = 0; j < NUM_ELEMENT_PROPERTIES; j++) + SET_PROPERTY(i, j, FALSE); /* set all base element properties from above array definitions */ for (i = 0; element_properties[i].elements != NULL; i++) @@ -4573,6 +4578,8 @@ void InitElementPropertiesStatic() /* set static element properties that are not listed in array definitions */ for (i = EL_STEEL_CHAR_START; i <= EL_STEEL_CHAR_END; i++) SET_PROPERTY(i, EP_INDESTRUCTIBLE, TRUE); + + clipboard_elements_initialized = TRUE; } void InitElementPropertiesEngine(int engine_version) @@ -4621,6 +4628,10 @@ void InitElementPropertiesEngine(int engine_version) /* set all special, combined or engine dependent element properties */ for (i = 0; i < MAX_NUM_ELEMENTS; i++) { + /* do not change (already initialized) clipboard elements here */ + if (IS_CLIPBOARD_ELEMENT(i)) + continue; + /* ---------- INACTIVE ------------------------------------------------- */ SET_PROPERTY(i, EP_INACTIVE, ((i >= EL_CHAR_START && i <= EL_CHAR_END) || @@ -5402,6 +5413,7 @@ void InitGfx() bitmap_db_field = CreateBitmap(FXSIZE, FYSIZE, DEFAULT_DEPTH); bitmap_db_panel = CreateBitmap(DXSIZE, DYSIZE, DEFAULT_DEPTH); bitmap_db_door = CreateBitmap(3 * DXSIZE, DYSIZE + VYSIZE, DEFAULT_DEPTH); + bitmap_db_toons = CreateBitmap(FULL_SXSIZE, FULL_SYSIZE, DEFAULT_DEPTH); /* initialize screen properties */ InitGfxFieldInfo(SX, SY, SXSIZE, SYSIZE, @@ -5794,11 +5806,13 @@ void ReloadCustomArtwork(int force_reload) #endif print_timestamp_time("ClearRectangle"); +#if 0 printf("::: fading in ... %d\n", fading.fade_mode); - +#endif FadeIn(REDRAW_ALL); - +#if 0 printf("::: done\n"); +#endif if (gfx_new_identifier != NULL || force_reload_gfx) { @@ -5828,9 +5842,18 @@ void ReloadCustomArtwork(int force_reload) game_status = last_game_status; /* restore current game status */ +#if 0 + printf("::: ----------------DELAY 1 ...\n"); + Delay(3000); +#endif + +#if 0 printf("::: FadeOut @ ReloadCustomArtwork ...\n"); +#endif FadeOut(REDRAW_ALL); +#if 0 printf("::: FadeOut @ ReloadCustomArtwork done\n"); +#endif RedrawBackground(); @@ -5838,6 +5861,7 @@ void ReloadCustomArtwork(int force_reload) SetDoorState(DOOR_OPEN_ALL); CloseDoor(DOOR_CLOSE_ALL | DOOR_NO_DELAY); +#if 1 #if 1 #if 1 FadeSetEnterScreen(); @@ -5849,6 +5873,11 @@ void ReloadCustomArtwork(int force_reload) #else fading = fading_none; #endif +#endif + +#if 0 + redraw_mask = REDRAW_ALL; +#endif print_timestamp_done("ReloadCustomArtwork"); }