X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ftools.c;h=05219bf91a4003a6c88af470db545ec3cc6df62c;hb=2884cb273130660d64871bef2845525ef0bfc034;hp=9d376086cd29cc8ef196eac683f91a2aba8ffafd;hpb=11f481ba0c63fae52edd003696b4a3454b3c58c9;p=rocksndiamonds.git diff --git a/src/tools.c b/src/tools.c index 9d376086..05219bf9 100644 --- a/src/tools.c +++ b/src/tools.c @@ -414,48 +414,63 @@ void FadeToFront() BackToFront(); } -void FadeIn(int fade_delay) +void FadeExt(int fade_mask, int fade_mode) { - if (fade_delay == 0) - { - BackToFront(); + Bitmap *bitmap = (fade_mode == FADE_MODE_CROSSFADE ? bitmap_db_cross : NULL); + int fade_delay = menu.fade_delay; + int post_delay = (fade_mode == FADE_MODE_FADE_OUT ? menu.post_delay : 0); + int x, y, width, height; - return; + if (fade_mask & REDRAW_ALL) + { + x = 0; + y = 0; + width = WIN_XSIZE; + height = WIN_YSIZE; + } + else if (fade_mask & REDRAW_FIELD) + { + x = REAL_SX; + y = REAL_SY; + width = FULL_SXSIZE; + height = FULL_SYSIZE; } - FadeScreen(NULL, FADE_MODE_FADE_IN, fade_delay, 0); + redraw_mask |= fade_mask; - redraw_mask = REDRAW_NONE; -} - -void FadeOut(int fade_delay, int post_delay) -{ - if (fade_delay == 0) + if (!setup.fading || fade_delay == 0) { - ClearRectangle(backbuffer, 0, 0, WIN_XSIZE, WIN_YSIZE); + if (fade_mode == FADE_MODE_FADE_OUT) + ClearRectangle(backbuffer, x, y, width, height); + BackToFront(); return; } - FadeScreen(NULL, FADE_MODE_FADE_OUT, fade_delay, post_delay); + FadeRectangle(bitmap, x, y, width, height, fade_mode, fade_delay, post_delay); - redraw_mask = REDRAW_NONE; + redraw_mask &= ~fade_mask; } -void FadeCross(int fade_delay) +void FadeIn(int fade_mask) { - if (fade_delay == 0) - { - BlitBitmap(bitmap_db_title, backbuffer, 0, 0, WIN_XSIZE, WIN_YSIZE, 0, 0); - BackToFront(); + FadeExt(fade_mask, FADE_MODE_FADE_IN); +} - return; - } +void FadeOut(int fade_mask) +{ + FadeExt(fade_mask, FADE_MODE_FADE_OUT); +} - FadeScreen(bitmap_db_title, FADE_MODE_CROSSFADE, fade_delay, 0); +void FadeCross(int fade_mask) +{ + FadeExt(fade_mask, FADE_MODE_CROSSFADE); +} - redraw_mask = REDRAW_NONE; +void FadeCrossSaveBackbuffer() +{ + BlitBitmap(backbuffer, bitmap_db_cross, 0, 0, WIN_XSIZE, WIN_YSIZE, 0, 0); } void SetMainBackgroundImageIfDefined(int graphic) @@ -490,7 +505,11 @@ void SetPanelBackground() void DrawBackground(int dst_x, int dst_y, int width, int height) { +#if 1 + ClearRectangleOnBackground(drawto, dst_x, dst_y, width, height); +#else ClearRectangleOnBackground(backbuffer, dst_x, dst_y, width, height); +#endif redraw_mask |= REDRAW_FIELD; }