X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Ftools.c;h=72b5a2902aa290a0dc57f47b64a98cefaf1d2826;hp=8d0fe8deab0d5524716148911957e9aa00005232;hb=c0c5862d9ee59c70412b1c35e558101b109a8ec9;hpb=f7704e2d22e9499efe6380e0c916c2bd4918e4be diff --git a/src/tools.c b/src/tools.c index 8d0fe8de..72b5a290 100644 --- a/src/tools.c +++ b/src/tools.c @@ -414,99 +414,60 @@ 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; } - - FadeRectangle(NULL, 0, 0, WIN_XSIZE, WIN_YSIZE, - FADE_MODE_FADE_IN, fade_delay, 0); - - redraw_mask = REDRAW_NONE; -} - -void FadeOut(int fade_delay, int post_delay) -{ - if (fade_delay == 0) + else if (fade_mask & REDRAW_FIELD) { - ClearRectangle(backbuffer, 0, 0, WIN_XSIZE, WIN_YSIZE); - BackToFront(); - - return; + x = REAL_SX; + y = REAL_SY; + width = FULL_SXSIZE; + height = FULL_SYSIZE; } - FadeRectangle(NULL, 0, 0, WIN_XSIZE, WIN_YSIZE, - FADE_MODE_FADE_OUT, fade_delay, post_delay); - - redraw_mask = REDRAW_NONE; -} + redraw_mask |= fade_mask; -void FadeCross(int fade_delay) -{ if (fade_delay == 0) { - BlitBitmap(bitmap_db_title, backbuffer, 0, 0, WIN_XSIZE, WIN_YSIZE, 0, 0); + if (fade_mode == FADE_MODE_CROSSFADE) + BlitBitmap(bitmap, backbuffer, x, y, width, height, x, y); + else if (fade_mode == FADE_MODE_FADE_OUT) + ClearRectangle(backbuffer, x, y, width, height); + BackToFront(); return; } - FadeRectangle(bitmap_db_title, 0, 0, WIN_XSIZE, WIN_YSIZE, - FADE_MODE_CROSSFADE, fade_delay, 0); + FadeRectangle(bitmap, x, y, width, height, fade_mode, fade_delay, post_delay); - redraw_mask = REDRAW_NONE; + redraw_mask &= ~fade_mask; } -void FadeInField(int fade_delay) +void FadeIn(int fade_mask) { - if (fade_delay == 0) - { - BackToFront(); - - return; - } - - FadeRectangle(NULL, REAL_SX, REAL_SY, FULL_SXSIZE, FULL_SYSIZE, - FADE_MODE_FADE_IN, fade_delay, 0); - - redraw_mask &= ~REDRAW_FIELD; + FadeExt(fade_mask, FADE_MODE_FADE_IN); } -void FadeOutField(int fade_delay, int post_delay) +void FadeOut(int fade_mask) { - if (fade_delay == 0) - { - ClearRectangle(backbuffer, REAL_SX, REAL_SY, FULL_SXSIZE, FULL_SYSIZE); - BackToFront(); - - return; - } - - FadeRectangle(NULL, REAL_SX, REAL_SY, FULL_SXSIZE, FULL_SYSIZE, - FADE_MODE_FADE_OUT, fade_delay, post_delay); - - redraw_mask &= ~REDRAW_FIELD; + FadeExt(fade_mask, FADE_MODE_FADE_OUT); } -void FadeCrossField(int fade_delay) +void FadeCross(int fade_mask) { - if (fade_delay == 0) - { - BlitBitmap(bitmap_db_title, backbuffer, REAL_SX, REAL_SY, - FULL_SXSIZE, FULL_SYSIZE, REAL_SX, REAL_SY); - BackToFront(); - - return; - } - - FadeRectangle(bitmap_db_title, REAL_SX, REAL_SY, FULL_SXSIZE, FULL_SYSIZE, - FADE_MODE_CROSSFADE, fade_delay, 0); - - redraw_mask &= ~REDRAW_FIELD; + FadeExt(fade_mask, FADE_MODE_CROSSFADE); } void SetMainBackgroundImageIfDefined(int graphic)