cleanup of screen fading code
[rocksndiamonds.git] / src / editor.c
index 3512218ee6bbb0fd3c4d1372c5b3d5fa53810bab..9f8182d6702911351761230e8e86c9580140e5b3 100644 (file)
@@ -7612,25 +7612,43 @@ void InitZoomLevelSettings()
   MAX_ED_FIELDY = getMaxEdFieldY(FALSE);
 }
 
-static boolean playfield_area_changed = FALSE;
-
 void DrawLevelEd()
 {
+  int fade_mask = REDRAW_FIELD;
+
   StopAnimation();
 
   CloseDoor(DOOR_CLOSE_ALL);
 
-  FadeOut(REDRAW_FIELD);
+#if 1
+  /* needed if different viewport properties defined for editor */
+  ChangeViewportPropertiesIfNeeded();
+#endif
+
+  if (CheckIfRedrawGlobalBorderIsNeeded())
+    fade_mask = REDRAW_ALL;
+
+#if 0
+  printf("::: %d\n", (fade_mask == REDRAW_ALL ? 1 : 0));
+#endif
+
+  FadeOut(fade_mask);
 
+#if 0
   /* needed after playing if editor playfield area has different size */
   ClearRectangle(drawto, REAL_SX, REAL_SY, FULL_SXSIZE, FULL_SYSIZE);
+#endif
 
+#if 0
   /* needed if different viewport properties defined for editor */
   ChangeViewportPropertiesIfNeeded();
+#endif
 
-  InitZoomLevelSettings();
+#if 1
+  ClearField();
+#endif
 
-  playfield_area_changed = DrawingAreaChanged();
+  InitZoomLevelSettings();
 
   OpenDoor(DOOR_OPEN_1 | DOOR_OPEN_2 | DOOR_NO_DELAY);
 
@@ -7690,7 +7708,7 @@ void DrawLevelEd()
 
   DrawEditModeWindow();
 
-  FadeIn(playfield_area_changed ? REDRAW_ALL : REDRAW_FIELD);
+  FadeIn(fade_mask);
 
   /* copy actual editor door content to door double buffer for OpenDoor() */
   BlitBitmap(drawto, bitmap_db_door_1, DX, DY, DXSIZE, DYSIZE, 0, 0);
@@ -12264,7 +12282,7 @@ void RequestExitLevelEditor(boolean ask_if_level_has_changed,
 
     game_status = GAME_MODE_MAIN;
 
-    DrawAndFadeInMainMenu(playfield_area_changed ? REDRAW_ALL : REDRAW_FIELD);
+    DrawMainMenu();
   }
   else
   {