changed redraw system to prevent unneeded screen updates
[rocksndiamonds.git] / src / game.c
index 83ff55c110d3acffe1e67f1613f99e4c41f06562..49908daaae39c7970777a519d49da601eb039ae1 100644 (file)
@@ -11191,8 +11191,10 @@ void GameActions()
   }
   else
   {
-    GameActions_RND();
+    GameActions_RND_Main();
   }
+
+  redraw_mask |= REDRAW_FIELD;
 }
 
 void GameActions_EM_Main()
@@ -11227,6 +11229,13 @@ void GameActions_SP_Main()
   AdvanceFrameAndPlayerCounters(-1);   /* advance counters for all players */
 }
 
+void GameActions_RND_Main()
+{
+  GameActions_RND();
+
+  BlitScreenToBitmap_RND(backbuffer);
+}
+
 void GameActions_RND()
 {
   int magic_wall_x = 0, magic_wall_y = 0;
@@ -11805,16 +11814,16 @@ static boolean AllPlayersInVisibleScreen()
 
 void ScrollLevel(int dx, int dy)
 {
-  int softscroll_offset = (setup.soft_scrolling ? 2 * TILEX_VAR : 0);
+  int scroll_offset = 2 * TILEX_VAR;
   int x, y;
 
   BlitBitmap(drawto_field, drawto_field,
-            FX + TILEX_VAR * (dx == -1) - softscroll_offset,
-            FY + TILEY_VAR * (dy == -1) - softscroll_offset,
-            SXSIZE - TILEX_VAR * (dx != 0) + 2 * softscroll_offset,
-            SYSIZE - TILEY_VAR * (dy != 0) + 2 * softscroll_offset,
-            FX + TILEX_VAR * (dx == 1) - softscroll_offset,
-            FY + TILEY_VAR * (dy == 1) - softscroll_offset);
+            FX + TILEX_VAR * (dx == -1) - scroll_offset,
+            FY + TILEY_VAR * (dy == -1) - scroll_offset,
+            SXSIZE - TILEX_VAR * (dx != 0) + 2 * scroll_offset,
+            SYSIZE - TILEY_VAR * (dy != 0) + 2 * scroll_offset,
+            FX + TILEX_VAR * (dx == 1) - scroll_offset,
+            FY + TILEY_VAR * (dy == 1) - scroll_offset);
 
   if (dx != 0)
   {