Error(ERR_WARN, "no element description for element '%s'", EL_NAME(i));
}
+static boolean playfield_area_changed = FALSE;
+
void DrawLevelEd()
{
+ int old_sx = SX;
+ int old_sy = SY;
+ int old_sxsize = SXSIZE;
+ int old_sysize = SYSIZE;
+
StopAnimation();
CloseDoor(DOOR_CLOSE_ALL);
#if 1
FadeOut(REDRAW_FIELD);
+ // FadeOut(REDRAW_ALL);
+#endif
+
+#if 1
+ /* needed after playing if editor playfield area has different size */
+ ClearRectangle(drawto, REAL_SX, REAL_SY, FULL_SXSIZE, FULL_SYSIZE);
#endif
#if 1
ChangeViewportPropertiesIfNeeded();
#endif
+ if (old_sx != SX ||
+ old_sy != SY ||
+ old_sxsize != SXSIZE ||
+ old_sysize != SYSIZE)
+ {
+ playfield_area_changed = TRUE;
+
+#if 0
+ printf("::: %d, %d, %d, %d != %d, %d, %d, %d\n",
+ old_sx, old_sy, old_sxsize, old_sysize,
+ SX, SY, SXSIZE, SYSIZE);
+#endif
+ }
+ else
+ playfield_area_changed = FALSE;
+
+#if 1
+ OpenDoor(DOOR_OPEN_1 | DOOR_OPEN_2 | DOOR_NO_DELAY);
+#else
OpenDoor(DOOR_OPEN_2 | DOOR_NO_DELAY);
+#endif
#if DEBUG
CheckElementDescriptions();
DrawEditModeWindow();
#if 1
+ FadeIn(playfield_area_changed ? REDRAW_ALL : REDRAW_FIELD);
+#else
FadeIn(REDRAW_FIELD);
+ // FadeIn(REDRAW_ALL);
#endif
/* copy actual editor door content to door double buffer for OpenDoor() */
+#if 1
+ BlitBitmap(drawto, bitmap_db_door_1, DX, DY, DXSIZE, DYSIZE, 0, 0);
+#else
BlitBitmap(drawto, bitmap_db_door,
DX, DY, DXSIZE, DYSIZE, DOOR_GFX_PAGEX1, DOOR_GFX_PAGEY1);
+#endif
-#if 1
+#if 0
/* draw new control window (with border) to window */
redraw_mask |= REDRAW_ALL;
BackToFront();
#endif
+#if 0
OpenDoor(DOOR_OPEN_1);
+#endif
}
static void AdjustDrawingAreaGadgets()
CloseDoor(DOOR_CLOSE_ALL);
+#if 0
BackToFront(); /* force redraw of undrawn special door */
+#endif
+
+#if 1
+ /* needed before playing if editor playfield area has different size */
+ ClearRectangle(drawto, REAL_SX, REAL_SY, FULL_SXSIZE, FULL_SYSIZE);
+
+ redraw_mask = REDRAW_ALL;
+#endif
#if 0
DrawCompleteVideoDisplay();
Request("Level has changed! Exit without saving?",
REQ_ASK | REQ_STAY_OPEN))
{
+#if 1
+ // CloseDoor(DOOR_CLOSE_1);
+ SetDoorState(DOOR_CLOSE_2);
+#else
CloseDoor(DOOR_CLOSE_1);
SetDoorState(DOOR_CLOSE_2);
+#endif
#if 1
if (quick_quit)
#endif
game_status = GAME_MODE_MAIN;
+#if 1
+ DrawAndFadeInMainMenu(playfield_area_changed ? REDRAW_ALL : REDRAW_FIELD);
+#else
#if 1
DrawAndFadeInMainMenu(REDRAW_FIELD);
#else
DrawMainMenu();
+#endif
#endif
}
else
{
+#if 1
+ // CloseDoor(DOOR_CLOSE_1);
+ OpenDoor(DOOR_OPEN_1 | DOOR_COPY_BACK);
+#else
CloseDoor(DOOR_CLOSE_1);
OpenDoor(DOOR_OPEN_1 | DOOR_COPY_BACK);
+#endif
}
}