fixed bug with using wrong global border when restarting the game
[rocksndiamonds.git] / src / tools.c
index e321f18c513a81dc3008e0e0cc87ed5581a285b4..6086cf25befdd3b1feaf61269286a47c2919b88a 100644 (file)
@@ -634,6 +634,10 @@ void DrawMaskedBorderToTarget(int draw_target)
       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;
@@ -976,6 +980,10 @@ static void SetScreenStates_BeforeFadingOut(void)
 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)
@@ -3011,8 +3019,7 @@ void ShowEnvelope(int envelope_nr)
 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 ||
@@ -3042,13 +3049,11 @@ static void PrepareEnvelopeRequestToScreen(Bitmap *bitmap, int sx, int sy,
   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);
@@ -3314,15 +3319,14 @@ static void ShowEnvelopeRequest(char *text, unsigned int req_state, int action)
   if (game_status == GAME_MODE_PLAYING)
     BlitScreenToBitmap(backbuffer);
 
-  if (game_status == GAME_MODE_PLAYING || action == ACTION_OPENING)
-    BlitBitmap(backbuffer, bitmap_db_store_1, 0, 0, WIN_XSIZE, WIN_YSIZE, 0, 0);
-
   SetDrawtoField(DRAW_TO_BACKBUFFER);
 
   // SetDrawBackgroundMask(REDRAW_NONE);
 
   if (action == ACTION_OPENING)
   {
+    BlitBitmap(backbuffer, bitmap_db_store_1, 0, 0, WIN_XSIZE, WIN_YSIZE, 0, 0);
+
     if (req_state & REQ_ASK)
     {
       MapGadget(tool_gadget[TOOL_CTRL_ID_YES]);