rnd-20070907-3-src
[rocksndiamonds.git] / src / game.c
index 7d83c63f8800dca7c19354af58e6c83de955348f..3bc5abd6174ef232491aaf10197d409df6ada486 100644 (file)
@@ -2111,8 +2111,17 @@ void InitGameControlValues()
 
 void UpdatePlayfieldElementCount()
 {
+  boolean use_element_count = FALSE;
   int i, j, x, y;
 
+  /* first check if it is needed at all to calculate playfield element count */
+  for (i = GAME_PANEL_ELEMENT_COUNT_1; i <= GAME_PANEL_ELEMENT_COUNT_8; i++)
+    if (!PANEL_DEACTIVATED(game_panel_controls[i].pos))
+      use_element_count = TRUE;
+
+  if (!use_element_count)
+    return;
+
   for (i = 0; i < MAX_NUM_ELEMENTS; i++)
     element_info[i].element_count = 0;
 
@@ -2342,8 +2351,7 @@ void UpdateGameControlValues()
   for (i = 0; i < NUM_PANEL_ELEMENTS; i++)
     game_panel_controls[GAME_PANEL_ELEMENT_COUNT_1 + i].value =
       (IS_VALID_ELEMENT(game.panel.element_count[i].id) ?
-       element_info[game.panel.element_count[i].id].element_count :
-       EL_UNDEFINED);
+       element_info[game.panel.element_count[i].id].element_count : 0);
 
   for (i = 0; i < NUM_PANEL_CE_SCORE; i++)
     game_panel_controls[GAME_PANEL_CE_SCORE_1 + i].value =
@@ -9505,9 +9513,6 @@ void DrawTwinkleOnField(int x, int y)
   {
     MovDelay[x][y]--;
 
-    if (setup.direct_draw && MovDelay[x][y])
-      SetDrawtoField(DRAW_BUFFERED);
-
     DrawLevelElementAnimation(x, y, Feld[x][y]);
 
     if (MovDelay[x][y] != 0)
@@ -9516,18 +9521,6 @@ void DrawTwinkleOnField(int x, int y)
                                           10 - MovDelay[x][y]);
 
       DrawGraphicThruMask(SCREENX(x), SCREENY(y), IMG_TWINKLE_WHITE, frame);
-
-      if (setup.direct_draw)
-      {
-       int dest_x, dest_y;
-
-       dest_x = FX + SCREENX(x) * TILEX;
-       dest_y = FY + SCREENY(y) * TILEY;
-
-       BlitBitmap(drawto_field, window,
-                  dest_x, dest_y, TILEX, TILEY, dest_x, dest_y);
-       SetDrawtoField(DRAW_DIRECT);
-      }
     }
   }
 }