X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ftools.c;h=211e6e01b2fda5eb3924482e70236aeaf9e22e45;hb=6f25a5c9cc138edfbfe689fdfed1488bc6e60b23;hp=d72c99d09329fd1081e3ce962909089b4ca2fe85;hpb=a56f43284d320b60cbeb1ebd097ec6d21d4f4ff1;p=rocksndiamonds.git diff --git a/src/tools.c b/src/tools.c index d72c99d0..211e6e01 100644 --- a/src/tools.c +++ b/src/tools.c @@ -305,7 +305,7 @@ static void DrawMaskedBorderExt_Rect(int x, int y, int width, int height, static void DrawMaskedBorderExt_FIELD(int draw_target) { - if (global.border_status >= GAME_MODE_TITLE && + if (global.border_status >= GAME_MODE_MAIN && global.border_status <= GAME_MODE_PLAYING && border.draw_masked[global.border_status]) DrawMaskedBorderExt_Rect(REAL_SX, REAL_SY, FULL_SXSIZE, FULL_SYSIZE, @@ -353,8 +353,8 @@ static void DrawMaskedBorderExt_ALL(int draw_target) static void DrawMaskedBorderExt(int redraw_mask, int draw_target) { /* never draw masked screen borders on borderless screens */ - if (game_status == GAME_MODE_LOADING || - game_status == GAME_MODE_TITLE) + if (global.border_status == GAME_MODE_LOADING || + global.border_status == GAME_MODE_TITLE) return; if (redraw_mask & REDRAW_ALL) @@ -384,7 +384,31 @@ void DrawMaskedBorder(int redraw_mask) void DrawMaskedBorderToTarget(int draw_target) { - DrawMaskedBorderExt(REDRAW_ALL, draw_target); + if (draw_target == DRAW_BORDER_TO_BACKBUFFER || + draw_target == DRAW_BORDER_TO_SCREEN) + { + DrawMaskedBorderExt(REDRAW_ALL, draw_target); + } + else + { + int last_border_status = global.border_status; + + if (draw_target == DRAW_BORDER_TO_FADE_SOURCE) + { + global.border_status = gfx.fade_border_source_status; + gfx.masked_border_bitmap_ptr = gfx.fade_bitmap_source; + } + else if (draw_target == DRAW_BORDER_TO_FADE_TARGET) + { + global.border_status = gfx.fade_border_target_status; + gfx.masked_border_bitmap_ptr = gfx.fade_bitmap_target; + } + + DrawMaskedBorderExt(REDRAW_ALL, draw_target); + + global.border_status = last_border_status; + gfx.masked_border_bitmap_ptr = backbuffer; + } } void BlitScreenToBitmap_RND(Bitmap *target_bitmap) @@ -689,6 +713,9 @@ static void SetScreenStates_BeforeFadingIn() static void SetScreenStates_AfterFadingIn() { + // store new source screen (to use correct masked border for fading) + gfx.fade_border_source_status = global.border_status; + global.anim_status = global.anim_status_next; // force update of global animation status in case of rapid screen changes @@ -698,6 +725,9 @@ static void SetScreenStates_AfterFadingIn() static void SetScreenStates_BeforeFadingOut() { + // store new target screen (to use correct masked border for fading) + gfx.fade_border_target_status = game_status; + global.anim_status = GAME_MODE_PSEUDO_FADING; } @@ -8181,9 +8211,6 @@ void ToggleFullscreenOrChangeWindowScalingIfNeeded() { boolean change_fullscreen = (setup.fullscreen != video.fullscreen_enabled); - boolean change_fullscreen_mode = (video.fullscreen_enabled && - !strEqual(setup.fullscreen_mode, - video.fullscreen_mode_current)); boolean change_window_scaling_percent = (!video.fullscreen_enabled && setup.window_scaling_percent != video.window_scaling_percent); @@ -8213,7 +8240,6 @@ void ToggleFullscreenOrChangeWindowScalingIfNeeded() #endif if (change_fullscreen || - change_fullscreen_mode || change_window_scaling_percent) { Bitmap *tmp_backbuffer = CreateBitmap(WIN_XSIZE, WIN_YSIZE, DEFAULT_DEPTH); @@ -8221,12 +8247,6 @@ void ToggleFullscreenOrChangeWindowScalingIfNeeded() /* save backbuffer content which gets lost when toggling fullscreen mode */ BlitBitmap(backbuffer, tmp_backbuffer, 0, 0, WIN_XSIZE, WIN_YSIZE, 0, 0); - if (change_fullscreen_mode) - { - /* keep fullscreen, but change fullscreen mode (screen resolution) */ - video.fullscreen_enabled = FALSE; /* force new fullscreen mode */ - } - if (change_window_scaling_percent) { /* keep window mode, but change window scaling */