X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ftools.c;h=9530644e204d1787fbe18e240867c44b5923b7e9;hb=585994e9f3f77300b730f790062010518f35a739;hp=d3909d5eedbfff6901940af9c64a692d8481f1fc;hpb=5c94351c5b8a12d8615b447b6275dd2f68615be4;p=rocksndiamonds.git diff --git a/src/tools.c b/src/tools.c index d3909d5e..9530644e 100644 --- a/src/tools.c +++ b/src/tools.c @@ -523,7 +523,11 @@ void FadeExt(int fade_mask, int fade_mode) { static int fade_mode_skip = FADE_MODE_NONE; void (*draw_border_function)(void) = NULL; - Bitmap *bitmap = (fade_mode == FADE_MODE_CROSSFADE ? bitmap_db_cross : NULL); +#if 0 + Bitmap *bitmap = (fade_mode != FADE_MODE_FADE_IN ? bitmap_db_cross : NULL); +#else + Bitmap *bitmap = (fade_mode & FADE_TYPE_TRANSFORM ? bitmap_db_cross : NULL); +#endif int x, y, width, height; int fade_delay, post_delay; @@ -531,6 +535,10 @@ void FadeExt(int fade_mask, int fade_mode) if (fade_mode & FADE_TYPE_SKIP) { +#if 0 + printf("::: will skip %d ... [%d]\n", fade_mode, fade_mode_skip); +#endif + fade_mode_skip = fade_mode; return; @@ -549,6 +557,11 @@ void FadeExt(int fade_mask, int fade_mode) return; } +#if 1 + if (global.autoplay_leveldir) + fading.fade_mode = FADE_MODE_NONE; +#endif + #if 1 if (fading.fade_mode == FADE_MODE_NONE) return; @@ -599,6 +612,14 @@ void FadeExt(int fade_mask, int fade_mode) void FadeIn(int fade_mask) { +#if 1 + // printf("::: now fading in...\n"); + + if (fading.fade_mode & FADE_TYPE_TRANSFORM) + FadeExt(fade_mask, fading.fade_mode); + else + FadeExt(fade_mask, FADE_MODE_FADE_IN); +#else #if 1 if (fading.fade_mode == FADE_MODE_CROSSFADE) FadeExt(fade_mask, FADE_MODE_CROSSFADE); @@ -607,10 +628,19 @@ void FadeIn(int fade_mask) #else FadeExt(fade_mask, FADE_MODE_FADE_IN); #endif +#endif } void FadeOut(int fade_mask) { +#if 1 + // printf("::: fading.fade_mode == %d\n", fading.fade_mode); + + if (fading.fade_mode & FADE_TYPE_TRANSFORM) + FadeCrossSaveBackbuffer(); + else + FadeExt(fade_mask, FADE_MODE_FADE_OUT); +#else #if 1 if (fading.fade_mode == FADE_MODE_CROSSFADE) FadeCrossSaveBackbuffer(); @@ -619,6 +649,7 @@ void FadeOut(int fade_mask) #else FadeExt(fade_mask, FADE_MODE_FADE_OUT); #endif +#endif } void FadeCross(int fade_mask) @@ -631,25 +662,46 @@ void FadeCrossSaveBackbuffer() BlitBitmap(backbuffer, bitmap_db_cross, 0, 0, WIN_XSIZE, WIN_YSIZE, 0, 0); } +static void FadeSetLeaveNext(struct TitleFadingInfo fading_leave, boolean set) +{ + static struct TitleFadingInfo fading_leave_stored; + + if (set) + fading_leave_stored = fading_leave; + else + fading = fading_leave_stored; +} + void FadeSetEnterMenu() { fading = menu.enter_menu; + + FadeSetLeaveNext(fading, TRUE); /* (keep same fade mode) */ } void FadeSetLeaveMenu() { fading = menu.leave_menu; + + FadeSetLeaveNext(fading, TRUE); /* (keep same fade mode) */ } -void FadeSetStartItem() +void FadeSetEnterScreen() { - fading = menu.start_item; + fading = menu.enter_screen[game_status]; + + FadeSetLeaveNext(menu.leave_screen[game_status], TRUE); /* store */ +} + +void FadeSetLeaveScreen() +{ + FadeSetLeaveNext(menu.leave_screen[game_status], FALSE); /* recall */ } void FadeSetFromType(int type) { if (type & TYPE_ENTER_SCREEN) - FadeSetStartItem(); + FadeSetEnterScreen(); else if (type & TYPE_ENTER) FadeSetEnterMenu(); else if (type & TYPE_LEAVE) @@ -1781,15 +1833,29 @@ void getPreviewGraphicSource(int graphic, Bitmap **bitmap, int *x, int *y, { int width_mult, width_div; int height_mult, height_div; - } offset_calc[4] = +#if 1 + } + offset_calc[6] = +#else + offset_calc[4] = +#endif { { 0, 1, 0, 1 }, { 0, 1, 2, 3 }, { 1, 2, 2, 3 }, { 3, 4, 2, 3 }, +#if 1 + { 7, 8, 2, 3 }, + { 15, 16, 2, 3 }, +#endif }; +#if 1 + int offset_calc_pos = (tilesize < MICRO_TILESIZE / 4 || + tilesize > TILESIZE ? 5 : 5 - log_2(tilesize)); +#else int offset_calc_pos = (tilesize < MICRO_TILESIZE || tilesize > TILESIZE ? 3 : 5 - log_2(tilesize)); +#endif Bitmap *src_bitmap = graphic_info[graphic].bitmap; int width_mult = offset_calc[offset_calc_pos].width_mult; int width_div = offset_calc[offset_calc_pos].width_div;