renamed variables which changed their meaning after recent changes
[rocksndiamonds.git] / src / tools.c
index 2c6055320b15605caa58765cdad7a255cc0f3eb5..76fa6c484a282c8a2170ac80b5a997b7d66d6e46 100644 (file)
@@ -17,7 +17,7 @@
 #include "init.h"
 #include "game.h"
 #include "events.h"
-#include "cartoons.h"
+#include "anim.h"
 #include "network.h"
 #include "tape.h"
 #include "screens.h"
@@ -234,7 +234,7 @@ void DumpTile(int x, int y)
 
 void SetDrawtoField(int mode)
 {
-  if (mode == DRAW_FIELDBUFFER)
+  if (mode == DRAW_TO_FIELDBUFFER)
   {
     FX = 2 * TILEX_VAR;
     FY = 2 * TILEY_VAR;
@@ -245,7 +245,7 @@ void SetDrawtoField(int mode)
 
     drawto_field = fieldbuffer;
   }
-  else /* DRAW_BACKBUFFER */
+  else /* DRAW_TO_BACKBUFFER */
   {
     FX = SX;
     FY = SY;
@@ -294,7 +294,7 @@ static void DrawMaskedBorderExt_Rect(int x, int y, int width, int height,
   if (x == -1 && y == -1)
     return;
 
-  if (draw_target == DRAW_BORDER_TO_SCREEN)
+  if (draw_target == DRAW_TO_SCREEN)
     BlitToScreenMasked(src_bitmap, x, y, width, height, x, y);
   else
     BlitBitmapMasked(src_bitmap, dst_bitmap, x, y, width, height, x, y);
@@ -312,7 +312,7 @@ static void DrawMaskedBorderExt_FIELD(int draw_target)
 static void DrawMaskedBorderExt_DOOR_1(int draw_target)
 {
   // when drawing to backbuffer, never draw border over open doors
-  if (draw_target == DRAW_BORDER_TO_BACKBUFFER &&
+  if (draw_target == DRAW_TO_BACKBUFFER &&
       (GetDoorState() & DOOR_OPEN_1))
     return;
 
@@ -325,7 +325,7 @@ static void DrawMaskedBorderExt_DOOR_1(int draw_target)
 static void DrawMaskedBorderExt_DOOR_2(int draw_target)
 {
   // when drawing to backbuffer, never draw border over open doors
-  if (draw_target == DRAW_BORDER_TO_BACKBUFFER &&
+  if (draw_target == DRAW_TO_BACKBUFFER &&
       (GetDoorState() & DOOR_OPEN_2))
     return;
 
@@ -371,18 +371,18 @@ static void DrawMaskedBorderExt(int redraw_mask, int draw_target)
 
 void DrawMaskedBorder_FIELD()
 {
-  DrawMaskedBorderExt_FIELD(DRAW_BORDER_TO_BACKBUFFER);
+  DrawMaskedBorderExt_FIELD(DRAW_TO_BACKBUFFER);
 }
 
 void DrawMaskedBorder(int redraw_mask)
 {
-  DrawMaskedBorderExt(redraw_mask, DRAW_BORDER_TO_BACKBUFFER);
+  DrawMaskedBorderExt(redraw_mask, DRAW_TO_BACKBUFFER);
 }
 
 void DrawMaskedBorderToTarget(int draw_target)
 {
-  if (draw_target == DRAW_BORDER_TO_BACKBUFFER ||
-      draw_target == DRAW_BORDER_TO_SCREEN)
+  if (draw_target == DRAW_TO_BACKBUFFER ||
+      draw_target == DRAW_TO_SCREEN)
   {
     DrawMaskedBorderExt(REDRAW_ALL, draw_target);
   }
@@ -390,12 +390,12 @@ void DrawMaskedBorderToTarget(int draw_target)
   {
     int last_border_status = global.border_status;
 
-    if (draw_target == DRAW_BORDER_TO_FADE_SOURCE)
+    if (draw_target == DRAW_TO_FADE_SOURCE)
     {
       global.border_status = gfx.fade_border_source_status;
       gfx.masked_border_bitmap_ptr = gfx.fade_bitmap_source;
     }
-    else if (draw_target == DRAW_BORDER_TO_FADE_TARGET)
+    else if (draw_target == DRAW_TO_FADE_TARGET)
     {
       global.border_status = gfx.fade_border_target_status;
       gfx.masked_border_bitmap_ptr = gfx.fade_bitmap_target;
@@ -598,26 +598,10 @@ void BackToFront_WithFrameDelay(unsigned int frame_delay_value)
   SetVideoFrameDelay(frame_delay_value_old);
 }
 
-static void FadeCrossSaveBackbuffer()
-{
-  BlitBitmap(backbuffer, bitmap_db_cross, 0, 0, WIN_XSIZE, WIN_YSIZE, 0, 0);
-}
-
-static void FadeCrossRestoreBackbuffer()
-{
-  int redraw_mask_last = redraw_mask;
-
-  BlitBitmap(bitmap_db_cross, backbuffer, 0, 0, WIN_XSIZE, WIN_YSIZE, 0, 0);
-
-  // do not change redraw mask when restoring backbuffer after cross-fading
-  redraw_mask = redraw_mask_last;
-}
-
 static void FadeExt(int fade_mask, int fade_mode, int fade_type)
 {
   static int fade_type_skip = FADE_TYPE_NONE;
   void (*draw_border_function)(void) = NULL;
-  Bitmap *bitmap = (fade_mode & FADE_TYPE_TRANSFORM ? bitmap_db_cross : NULL);
   int x, y, width, height;
   int fade_delay, post_delay;
 
@@ -632,18 +616,8 @@ static void FadeExt(int fade_mask, int fade_mode, int fade_type)
       return;
     }
 
-#if 1
-    FadeCrossSaveBackbuffer();
-#endif
-
     if (fading.fade_mode & FADE_TYPE_TRANSFORM)
-    {
-#if 0
-      FadeCrossSaveBackbuffer();
-#endif
-
       return;
-    }
   }
 
   redraw_mask |= fade_mask;
@@ -706,17 +680,22 @@ static void FadeExt(int fade_mask, int fade_mode, int fade_type)
     return;
   }
 
-  FadeRectangle(bitmap, x, y, width, height, fade_mode, fade_delay, post_delay,
+  FadeRectangle(x, y, width, height, fade_mode, fade_delay, post_delay,
                draw_border_function);
 
-  if (fade_type == FADE_TYPE_FADE_OUT)
-    FadeCrossRestoreBackbuffer();
-
   redraw_mask &= ~fade_mask;
 }
 
 static void SetScreenStates_BeforeFadingIn()
 {
+  // temporarily set screen mode for animations to screen after fading in
+  global.anim_status = global.anim_status_next;
+
+  // store backbuffer with all animations that will be started after fading in
+  PrepareFadeBitmap(DRAW_TO_FADE_TARGET);
+
+  // set screen mode for animations back to fading
+  global.anim_status = GAME_MODE_PSEUDO_FADING;
 }
 
 static void SetScreenStates_AfterFadingIn()
@@ -736,7 +715,11 @@ static void SetScreenStates_BeforeFadingOut()
   // store new target screen (to use correct masked border for fading)
   gfx.fade_border_target_status = game_status;
 
+  // set screen mode for animations to fading
   global.anim_status = GAME_MODE_PSEUDO_FADING;
+
+  // store backbuffer with all animations that will be stopped for fading out
+  PrepareFadeBitmap(DRAW_TO_FADE_SOURCE);
 }
 
 static void SetScreenStates_AfterFadingOut()
@@ -1041,7 +1024,7 @@ static void RedrawGlobalBorderIfNeeded()
 
   // copy current draw buffer to later copy back areas that have not changed
   if (game_status_last != GAME_MODE_TITLE)
-    BlitBitmap(backbuffer, bitmap_db_store, 0, 0, WIN_XSIZE, WIN_YSIZE, 0, 0);
+    BlitBitmap(backbuffer, bitmap_db_store_1, 0, 0, WIN_XSIZE, WIN_YSIZE, 0, 0);
 
   if (CheckIfGlobalBorderRedrawIsNeeded())
   {
@@ -1054,20 +1037,20 @@ static void RedrawGlobalBorderIfNeeded()
     if (real_sx_last != -1 && real_sy_last != -1 &&
        REAL_SX != -1 && REAL_SY != -1 &&
        full_sxsize_last == FULL_SXSIZE && full_sysize_last == FULL_SYSIZE)
-      BlitBitmap(bitmap_db_store, backbuffer,
+      BlitBitmap(bitmap_db_store_1, backbuffer,
                 real_sx_last, real_sy_last, FULL_SXSIZE, FULL_SYSIZE,
                 REAL_SX, REAL_SY);
 
     if (dx_last != -1 && dy_last != -1 &&
        DX != -1 && DY != -1 &&
        dxsize_last == DXSIZE && dysize_last == DYSIZE)
-      BlitBitmap(bitmap_db_store, backbuffer,
+      BlitBitmap(bitmap_db_store_1, backbuffer,
                 dx_last, dy_last, DXSIZE, DYSIZE, DX, DY);
 
     if (vx_last != -1 && vy_last != -1 &&
        VX != -1 && VY != -1 &&
        vxsize_last == VXSIZE && vysize_last == VYSIZE)
-      BlitBitmap(bitmap_db_store, backbuffer,
+      BlitBitmap(bitmap_db_store_1, backbuffer,
                 vx_last, vy_last, VXSIZE, VYSIZE, VX, VY);
 
     redraw_mask = REDRAW_ALL;
@@ -1103,11 +1086,11 @@ void ClearField()
   if (game_status == GAME_MODE_PLAYING)
   {
     ClearRectangle(fieldbuffer, 0, 0, FXSIZE, FYSIZE);
-    SetDrawtoField(DRAW_FIELDBUFFER);
+    SetDrawtoField(DRAW_TO_FIELDBUFFER);
   }
   else
   {
-    SetDrawtoField(DRAW_BACKBUFFER);
+    SetDrawtoField(DRAW_TO_BACKBUFFER);
   }
 }
 
@@ -2300,11 +2283,11 @@ void AnimateEnvelope(int envelope_nr, int anim_mode, int action)
     int sy = SY + (SYSIZE - ysize * font_height) / 2;
     int xx, yy;
 
-    SetDrawtoField(DRAW_FIELDBUFFER);
+    SetDrawtoField(DRAW_TO_FIELDBUFFER);
 
     BlitScreenToBitmap(backbuffer);
 
-    SetDrawtoField(DRAW_BACKBUFFER);
+    SetDrawtoField(DRAW_TO_BACKBUFFER);
 
     for (yy = 0; yy < ysize; yy++)
       for (xx = 0; xx < xsize; xx++)
@@ -2361,7 +2344,7 @@ void ShowEnvelope(int envelope_nr)
 
   game.envelope_active = FALSE;
 
-  SetDrawtoField(DRAW_FIELDBUFFER);
+  SetDrawtoField(DRAW_TO_FIELDBUFFER);
 
   redraw_mask |= REDRAW_FIELD;
   BackToFront();
@@ -2515,7 +2498,7 @@ void DrawEnvelopeRequest(char *text)
     RedrawGadget(tool_gadget[i]);
 
   // store readily prepared envelope request for later use when animating
-  BlitBitmap(backbuffer, bitmap_db_cross, 0, 0, WIN_XSIZE, WIN_YSIZE, 0, 0);
+  BlitBitmap(backbuffer, bitmap_db_store_2, 0, 0, WIN_XSIZE, WIN_YSIZE, 0, 0);
 
   if (text_door_style)
     free(text_door_style);
@@ -2576,7 +2559,7 @@ void AnimateEnvelopeRequest(int anim_mode, int action)
     setRequestPosition(&src_x, &src_y, FALSE);
     setRequestPositionExt(&dst_x, &dst_y, width, height, FALSE);
 
-    BlitBitmap(bitmap_db_store, backbuffer, 0, 0, WIN_XSIZE, WIN_YSIZE, 0, 0);
+    BlitBitmap(bitmap_db_store_1, backbuffer, 0, 0, WIN_XSIZE, WIN_YSIZE, 0, 0);
 
     for (yy = 0; yy < 2; yy++)
     {
@@ -2590,10 +2573,10 @@ void AnimateEnvelopeRequest(int anim_mode, int action)
        int yy_size = (yy ? tile_size : ysize_size_top);
 
        if (draw_masked)
-         BlitBitmapMasked(bitmap_db_cross, backbuffer,
+         BlitBitmapMasked(bitmap_db_store_2, backbuffer,
                           src_xx, src_yy, xx_size, yy_size, dst_xx, dst_yy);
        else
-         BlitBitmap(bitmap_db_cross, backbuffer,
+         BlitBitmap(bitmap_db_store_2, backbuffer,
                     src_xx, src_yy, xx_size, yy_size, dst_xx, dst_yy);
       }
     }
@@ -2620,13 +2603,13 @@ void ShowEnvelopeRequest(char *text, unsigned int req_state, int action)
   if (game_status == GAME_MODE_PLAYING)
     BlitScreenToBitmap(backbuffer);
 
-  SetDrawtoField(DRAW_BACKBUFFER);
+  SetDrawtoField(DRAW_TO_BACKBUFFER);
 
   // SetDrawBackgroundMask(REDRAW_NONE);
 
   if (action == ACTION_OPENING)
   {
-    BlitBitmap(backbuffer, bitmap_db_store, 0, 0, WIN_XSIZE, WIN_YSIZE, 0, 0);
+    BlitBitmap(backbuffer, bitmap_db_store_1, 0, 0, WIN_XSIZE, WIN_YSIZE, 0, 0);
 
     if (req_state & REQ_ASK)
     {
@@ -2673,7 +2656,7 @@ void ShowEnvelopeRequest(char *text, unsigned int req_state, int action)
   game.envelope_active = FALSE;
 
   if (action == ACTION_CLOSING)
-    BlitBitmap(bitmap_db_store, backbuffer, 0, 0, WIN_XSIZE, WIN_YSIZE, 0, 0);
+    BlitBitmap(bitmap_db_store_1, backbuffer, 0, 0, WIN_XSIZE, WIN_YSIZE, 0, 0);
 
   // SetDrawBackgroundMask(last_draw_background_mask);
 
@@ -2684,7 +2667,7 @@ void ShowEnvelopeRequest(char *text, unsigned int req_state, int action)
   if (action == ACTION_CLOSING &&
       game_status == GAME_MODE_PLAYING &&
       level.game_engine_type == GAME_ENGINE_TYPE_RND)
-    SetDrawtoField(DRAW_FIELDBUFFER);
+    SetDrawtoField(DRAW_TO_FIELDBUFFER);
 }
 
 void DrawPreviewElement(int dst_x, int dst_y, int element, int tilesize)
@@ -3569,16 +3552,16 @@ static int RequestHandleEvents(unsigned int req_state)
   {
     if (level_solved)
     {
-      SetDrawtoField(DRAW_FIELDBUFFER);
+      SetDrawtoField(DRAW_TO_FIELDBUFFER);
 
       HandleGameActions();
 
-      SetDrawtoField(DRAW_BACKBUFFER);
+      SetDrawtoField(DRAW_TO_BACKBUFFER);
 
       if (global.use_envelope_request)
       {
        /* copy current state of request area to middle of playfield area */
-       BlitBitmap(bitmap_db_cross, drawto, sx, sy, width, height, sx, sy);
+       BlitBitmap(bitmap_db_store_2, drawto, sx, sy, width, height, sx, sy);
       }
     }
 
@@ -3706,7 +3689,7 @@ static int RequestHandleEvents(unsigned int req_state)
       if (global.use_envelope_request)
       {
        /* copy back current state of pressed buttons inside request area */
-       BlitBitmap(drawto, bitmap_db_cross, sx, sy, width, height, sx, sy);
+       BlitBitmap(drawto, bitmap_db_store_2, sx, sy, width, height, sx, sy);
       }
     }
 
@@ -8339,7 +8322,7 @@ void ChangeViewportPropertiesIfNeeded()
   int new_scr_fieldy_buffers = new_sysize / new_tilesize_var;
   boolean init_gfx_buffers = FALSE;
   boolean init_video_buffer = FALSE;
-  boolean init_gadgets_and_toons = FALSE;
+  boolean init_gadgets_and_anims = FALSE;
   boolean init_em_graphics = FALSE;
 
   if (new_win_xsize != WIN_XSIZE ||
@@ -8350,7 +8333,7 @@ void ChangeViewportPropertiesIfNeeded()
 
     init_video_buffer = TRUE;
     init_gfx_buffers = TRUE;
-    init_gadgets_and_toons = TRUE;
+    init_gadgets_and_anims = TRUE;
 
     // printf("::: video: init_video_buffer, init_gfx_buffers\n");
   }
@@ -8465,10 +8448,10 @@ void ChangeViewportPropertiesIfNeeded()
     TILESIZE_VAR = new_tilesize_var;
 
     init_gfx_buffers = TRUE;
-    init_gadgets_and_toons = TRUE;
+    init_gadgets_and_anims = TRUE;
 
     // printf("::: viewports: init_gfx_buffers\n");
-    // printf("::: viewports: init_gadgets_and_toons\n");
+    // printf("::: viewports: init_gadgets_and_anims\n");
   }
 
   if (init_gfx_buffers)
@@ -8495,9 +8478,9 @@ void ChangeViewportPropertiesIfNeeded()
     InitImageTextures();
   }
 
-  if (init_gadgets_and_toons)
+  if (init_gadgets_and_anims)
   {
-    // printf("::: init_gadgets_and_toons\n");
+    // printf("::: init_gadgets_and_anims\n");
 
     InitGadgets();
     InitGlobalAnimations();