rnd-20140430-1-src
[rocksndiamonds.git] / src / tools.c
index aa9beb17b5e2442ffed9b7a5e49019b1aed24f43..8954a19dc9ac9d33371ea95e06485e51c97a699d 100644 (file)
@@ -437,6 +437,8 @@ void BlitScreenToBitmap(Bitmap *target_bitmap)
 {
   DrawBuffer *buffer = (drawto_field == window ? backbuffer : drawto_field);
   int fx = FX, fy = FY;
+  int full_lev_fieldx = lev_fieldx + (BorderElement != EL_EMPTY ? 2 : 0);
+  int full_lev_fieldy = lev_fieldy + (BorderElement != EL_EMPTY ? 2 : 0);
 
 #if NEW_TILESIZE
   int dx = (ScreenMovDir & (MV_LEFT | MV_RIGHT) ? ScreenGfxPos : 0);
@@ -487,6 +489,28 @@ void BlitScreenToBitmap(Bitmap *target_bitmap)
         fx, fy);
 #endif
 
+#if 1
+  if (full_lev_fieldx <= SCR_FIELDX)
+  {
+    // printf(":1: PLAYFIELD FITS TO SCREEN [%d, %d, %d]\n", fx, ffx, dx_var);
+
+    if (EVEN(SCR_FIELDX))
+      fx = 2 * TILEX_VAR - (ODD(lev_fieldx)  ? TILEX_VAR / 2 : 0);
+    else
+      fx = 2 * TILEX_VAR - (EVEN(lev_fieldx) ? TILEX_VAR / 2 : 0);
+
+    // printf(":2: PLAYFIELD FITS TO SCREEN [%d, %d, %d]\n", fx, ffx, dx_var);
+  }
+
+  if (full_lev_fieldy <= SCR_FIELDY)
+  {
+    if (EVEN(SCR_FIELDY))
+      fy = 2 * TILEY_VAR - (ODD(lev_fieldy)  ? TILEY_VAR / 2 : 0);
+    else
+      fy = 2 * TILEY_VAR - (EVEN(lev_fieldy) ? TILEY_VAR / 2 : 0);
+  }
+#endif
+
   if (border.draw_masked[GAME_MODE_PLAYING])
   {
     if (buffer != backbuffer)
@@ -2993,6 +3017,7 @@ void AnimateEnvelopeRequest(int anim_mode, int action)
     redraw_mask = REDRAW_FIELD | REDRAW_FROM_BACKBUFFER;
     // redraw_mask |= REDRAW_ALL | REDRAW_FROM_BACKBUFFER;
 #else
+  /* CHECK AGAIN (previous code reactivated) */
     redraw_mask |= REDRAW_FIELD | REDRAW_FROM_BACKBUFFER;
 #endif
 
@@ -3356,6 +3381,7 @@ void ShowEnvelopeRequest(char *text, unsigned int req_state, int action)
   redraw_mask = REDRAW_FIELD;
   // redraw_mask |= REDRAW_ALL;
 #else
+  /* CHECK AGAIN (previous code reactivated) */
   redraw_mask |= REDRAW_FIELD;
 #endif