rnd-20070320-3-src
[rocksndiamonds.git] / src / game.c
index 297efe8502254ba09972f195dbea379219e08713..593a8bac409ac4b4a1f45cf0fc957ffe0d49ec56 100644 (file)
 #define EX_TYPE_DYNA           (1 << 4)
 #define EX_TYPE_SINGLE_TILE    (EX_TYPE_CENTER | EX_TYPE_BORDER)
 
-#if 1
 #define PANEL_OFF()            (local_player->LevelSolved_PanelOff)
 #define        PANEL_DEACTIVATED(p)    ((p)->x < 0 || (p)->y < 0 || PANEL_OFF())
-#define PANEL_XPOS(p)          (DX + ALIGNED_MENU_XPOS(p))
-#define PANEL_YPOS(p)          (DY + ALIGNED_MENU_YPOS(p))
-#else
-#define        PANEL_DEACTIVATED(p)    ((p).x < 0 || (p).y < 0)
-#define PANEL_XPOS(p)          (ALIGNED_XPOS((p).x, (p).width, (p).align))
-#define PANEL_YPOS(p)          ((p).y)
-#endif
+#define PANEL_XPOS(p)          (DX + ALIGNED_TEXT_XPOS(p))
+#define PANEL_YPOS(p)          (DY + ALIGNED_TEXT_YPOS(p))
 
 /* special positions in the game control window (relative to control window) */
 #define XX_LEVEL1              (PANEL_XPOS(game.panel.level))
@@ -3161,8 +3155,20 @@ void InitGame()
   if (!game.restart_level)
     CloseDoor(DOOR_CLOSE_1);
 
+  if (level_editor_test_game)
+    fading = fading_none;
+  else
+    fading = menu.destination;
+
+#if 1
+  if (fading.anim_mode == ANIM_CROSSFADE)
+    FadeCrossSaveBackbuffer();
+  else
+    FadeOut(REDRAW_FIELD);
+#else
   if (do_fading)
     FadeOut(REDRAW_FIELD);
+#endif
 
   /* !!! FIX THIS (START) !!! */
   if (level.game_engine_type == GAME_ENGINE_TYPE_EM)
@@ -3189,10 +3195,17 @@ void InitGame()
   }
   /* !!! FIX THIS (END) !!! */
 
+#if 1
+  if (fading.anim_mode == ANIM_CROSSFADE)
+    FadeCross(redraw_mask);
+  else
+    FadeIn(redraw_mask);
+#else
   if (do_fading)
     FadeIn(REDRAW_FIELD);
 
   BackToFront();
+#endif
 
   if (!game.restart_level)
   {
@@ -3643,14 +3656,25 @@ void GameEnd()
   {
     game_status = GAME_MODE_MAIN;
 
+#if 1
+    DrawAndFadeInMainMenu(REDRAW_FIELD);
+#else
     DrawMainMenu();
+#endif
 
     return;
   }
 
   if (!local_player->LevelSolved_SaveScore)
   {
+#if 1
+    if (fading.anim_mode == ANIM_CROSSFADE)
+      FadeCrossSaveBackbuffer();
+    else
+      FadeOut(REDRAW_FIELD);
+#else
     FadeOut(REDRAW_FIELD);
+#endif
 
     game_status = GAME_MODE_MAIN;
 
@@ -3682,7 +3706,14 @@ void GameEnd()
   }
   else
   {
+#if 1
+    if (fading.anim_mode == ANIM_CROSSFADE)
+      FadeCrossSaveBackbuffer();
+    else
+      FadeOut(REDRAW_FIELD);
+#else
     FadeOut(REDRAW_FIELD);
+#endif
 
     game_status = GAME_MODE_MAIN;
 
@@ -14099,13 +14130,32 @@ void RequestQuitGameExt(boolean skip_request, boolean quick_quit, char *message)
     {
       if (quick_quit)
       {
+#if 1
+       fading = fading_none;
+#else
+       OpenDoor(DOOR_CLOSE_1);
+#endif
+
        game_status = GAME_MODE_MAIN;
 
+#if 1
+       DrawAndFadeInMainMenu(REDRAW_FIELD);
+#else
        DrawMainMenu();
+#endif
       }
       else
       {
+#if 0
+#if 1
+       if (fading.anim_mode == ANIM_CROSSFADE)
+         FadeCrossSaveBackbuffer();
+       else
+         FadeOut(REDRAW_FIELD);
+#else
        FadeOut(REDRAW_FIELD);
+#endif
+#endif
 
        game_status = GAME_MODE_MAIN;