changed closing doors before fading screens when leaving level editor
authorHolger Schemel <info@artsoft.org>
Mon, 21 Mar 2016 08:08:12 +0000 (09:08 +0100)
committerHolger Schemel <info@artsoft.org>
Mon, 21 Mar 2016 08:08:12 +0000 (09:08 +0100)
src/editor.c
src/screens.c

index 212e1f1016258e1acc996f9818ac1867ffcd1883..6682acf0e50264e188fc1f5213d67856b4f00b44 100644 (file)
@@ -12265,7 +12265,26 @@ void RequestExitLevelEditor(boolean ask_if_level_has_changed,
       Request("Level has changed! Exit without saving?",
              REQ_ASK | REQ_STAY_OPEN))
   {
-    SetDoorState(DOOR_CLOSE_2);
+    struct RectWithBorder *vp_door_1 = &viewport.door_1[GAME_MODE_MAIN];
+    struct RectWithBorder *vp_door_2 = &viewport.door_2[GAME_MODE_MAIN];
+
+    /* draw normal door */
+    UndrawSpecialEditorDoor();
+
+    // close editor doors if viewport definition is the same as in main menu
+    if (vp_door_1->x      == DX     &&
+       vp_door_1->y      == DY     &&
+       vp_door_1->width  == DXSIZE &&
+       vp_door_1->height == DYSIZE &&
+       vp_door_2->x      == VX     &&
+       vp_door_2->y      == VY     &&
+       vp_door_2->width  == VXSIZE &&
+       vp_door_2->height == VYSIZE)
+      CloseDoor(DOOR_CLOSE_ALL | DOOR_NO_DELAY);
+    else
+      SetDoorState(DOOR_CLOSE_2);
+
+    BackToFront();
 
     if (quick_quit)
       FadeSkipNextFadeIn();
index 5752a49d0e2308913a6bc3971af728be68904a6c..1f5d4230dfd5c489e73647ebc709f4f4f6628599 100644 (file)
@@ -1444,9 +1444,6 @@ void DrawMainMenu()
 
   FadeOut(fade_mask);
 
-  /* needed if last screen was the editor screen */
-  UndrawSpecialEditorDoor();
-
   SetDrawtoField(DRAW_BACKBUFFER);
 
   /* level_nr may have been set to value over handicap with level editor */