gfx.masked_border_bitmap_ptr = gfx.fade_bitmap_target;
}
+ // always use global border for PLAYING when restarting the game
+ if (global.border_status == GAME_MODE_PSEUDO_RESTARTING)
+ global.border_status = GAME_MODE_PLAYING;
+
DrawMaskedBorderExt(REDRAW_ALL, draw_target);
global.border_status = last_border_status;
static void SetScreenStates_AfterFadingOut(void)
{
global.border_status = game_status;
+
+ // always use global border for PLAYING when restarting the game
+ if (global.border_status == GAME_MODE_PSEUDO_RESTARTING)
+ global.border_status = GAME_MODE_PLAYING;
}
void FadeIn(int fade_mask)
static void PrepareEnvelopeRequestToScreen(Bitmap *bitmap, int sx, int sy,
int xsize, int ysize)
{
- if (!global.use_envelope_request ||
- request.sort_priority <= 0)
+ if (!global.use_envelope_request)
return;
if (request.bitmap == NULL ||
BlitBitmap(bitmap, request.bitmap, sx, sy, xsize, ysize, 0, 0);
+ // create masked surface for request bitmap, if needed
+ if (graphic_info[IMG_BACKGROUND_REQUEST].draw_masked)
+ {
+ SDL_Surface *surface = request.bitmap->surface;
+ SDL_Surface *surface_masked = request.bitmap->surface_masked;
+
+ SDLBlitSurface(surface, surface_masked, 0, 0, xsize, ysize, 0, 0);
+ SDL_SetColorKey(surface_masked, SET_TRANSPARENT_PIXEL,
+ SDL_MapRGB(surface_masked->format, 0x00, 0x00, 0x00));
+ }
+
SDLFreeBitmapTextures(request.bitmap);
SDLCreateBitmapTextures(request.bitmap);
request.ysize = ysize;
}
-void DrawEnvelopeRequestToScreen(int drawing_target, int drawing_stage)
+void DrawEnvelopeRequestToScreen(int drawing_target)
{
if (global.use_envelope_request &&
game.request_active_or_moving &&
- request.sort_priority > 0 &&
- drawing_target == DRAW_TO_SCREEN &&
- drawing_stage == DRAW_GLOBAL_ANIM_STAGE_2)
+ drawing_target == DRAW_TO_SCREEN)
{
- BlitToScreen(request.bitmap, 0, 0, request.xsize, request.ysize,
- request.sx, request.sy);
+ if (graphic_info[IMG_BACKGROUND_REQUEST].draw_masked)
+ BlitToScreenMasked(request.bitmap, 0, 0, request.xsize, request.ysize,
+ request.sx, request.sy);
+ else
+ BlitToScreen(request.bitmap, 0, 0, request.xsize, request.ysize,
+ request.sx, request.sy);
}
}
// store readily prepared envelope request for later use when animating
BlitBitmap(backbuffer, bitmap_db_store_2, 0, 0, WIN_XSIZE, WIN_YSIZE, 0, 0);
+ // create masked surface for request bitmap, if needed
+ if (graphic_info[IMG_BACKGROUND_REQUEST].draw_masked)
+ {
+ if (bitmap_db_store_2->surface_masked == NULL)
+ {
+ if ((bitmap_db_store_2->surface_masked =
+ SDLGetNativeSurface(bitmap_db_store_2->surface)) == NULL)
+ Fail("SDLGetNativeSurface() failed");
+ }
+
+ SDL_Surface *surface = bitmap_db_store_2->surface;
+ SDL_Surface *surface_masked = bitmap_db_store_2->surface_masked;
+
+ SDLBlitSurface(surface, surface_masked, 0, 0, WIN_XSIZE, WIN_YSIZE, 0, 0);
+ SDL_SetColorKey(surface_masked, SET_TRANSPARENT_PIXEL,
+ SDL_MapRGB(surface_masked->format, 0x00, 0x00, 0x00));
+ }
+
PrepareEnvelopeRequestToScreen(bitmap_db_store_2, sx, sy, width, height);
if (text_door_style)
if (global.use_envelope_request)
{
// copy current state of request area to middle of playfield area
- BlitBitmap(bitmap_db_store_2, drawto, sx, sy, width, height, sx, sy);
+ if (graphic_info[IMG_BACKGROUND_REQUEST].draw_masked)
+ BlitBitmapMasked(bitmap_db_store_2, drawto, sx, sy, width, height, sx, sy);
+ else
+ BlitBitmap(bitmap_db_store_2, drawto, sx, sy, width, height, sx, sy);
}
}