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);
// 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
/* needed if different viewport properties defined for editor */
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
DrawEditModeWindow();
#if 1
+ FadeIn(playfield_area_changed ? REDRAW_ALL : REDRAW_FIELD);
+#else
FadeIn(REDRAW_FIELD);
// FadeIn(REDRAW_ALL);
#endif
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();
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
}
}
#endif
int i, j, x, y;
+#if 1
+
+ StopAnimation();
+
+ if (!game.restart_level)
+ CloseDoor(DOOR_CLOSE_1);
+
+#if 1
+ if (level_editor_test_game)
+ FadeSkipNextFadeIn();
+ else
+ FadeSetEnterScreen();
+#else
+ if (level_editor_test_game)
+ fading = fading_none;
+ else
+ fading = menu.destination;
+#endif
+
+#if 1
+ FadeOut(REDRAW_FIELD);
+#else
+ if (do_fading)
+ FadeOut(REDRAW_FIELD);
+#endif
+
+#endif
+
game_status = GAME_MODE_PLAYING;
#if 1
game_status = GAME_MODE_MAIN;
#endif
+#if 0
+
StopAnimation();
if (!game.restart_level)
FadeOut(REDRAW_FIELD);
#endif
+#endif
+
#if 0
game_status = GAME_MODE_PLAYING;
#endif
{
if (skip_request || Request(message, REQ_ASK | REQ_STAY_CLOSED))
{
+#if 1
+ /* closing door required in case of envelope style request dialogs */
+ if (!skip_request)
+ CloseDoor(DOOR_CLOSE_1);
+#endif
+
#if defined(NETWORK_AVALIABLE)
if (options.network)
SendToServer_StopPlaying(NETWORK_STOP_BY_PLAYER);
TapeStop();
else
RequestQuitGame(TRUE);
+
break;
case GAME_CTRL_ID_PAUSE:
ClearRectangle(backbuffer, x, y, width, height);
#endif
+#if 1
+
+#if 1
+ BlitBitmap(backbuffer, window, x, y, width, height, x, y);
+
+ redraw_mask &= ~fade_mask;
+#else
+ /* always redraw area that was explicitly marked to fade */
+ redraw_mask |= fade_mask;
+
+ BackToFront();
+#endif
+
+#else
+
#if 1
BlitBitmap(backbuffer, window, x, y, width, height, x, y);
redraw_mask = REDRAW_NONE;
+ // (^^^ WRONG; should be "redraw_mask &= ~fade_mask" if done this way)
#else
BackToFront();
+#endif
#endif
return;
dst_x + xsize_size_left, dst_y + ysize_size_top);
#endif
-#if 1
+#if 0
redraw_mask = REDRAW_FIELD | REDRAW_FROM_BACKBUFFER;
// redraw_mask |= REDRAW_ALL | REDRAW_FROM_BACKBUFFER;
#else