rnd-20061230-1-src
[rocksndiamonds.git] / src / tools.c
index 415935a4ed98f9772989edf5f8bd2c6f62b2f0c6..e7670d2756048c6e5a0185160197c63f9171fe50 100644 (file)
@@ -19,6 +19,7 @@
 #include "cartoons.h"
 #include "network.h"
 #include "tape.h"
+#include "screens.h"
 
 
 /* select level set with EMC X11 graphics before activating EM GFX debugging */
@@ -240,6 +241,11 @@ void DrawMaskedBorder_ALL()
 
 void DrawMaskedBorder(int redraw_mask)
 {
+  /* do not draw masked screen borders when displaying title screens */
+  if (effectiveGameStatus() == GAME_MODE_TITLE ||
+      effectiveGameStatus() == GAME_MODE_MESSAGE)
+    return;
+
   if (redraw_mask & REDRAW_ALL)
     DrawMaskedBorder_ALL();
   else
@@ -314,18 +320,16 @@ void BackToFront()
 
   SyncDisplay();
 
-#if 1
+  /* prevent drawing masked border to backbuffer when using playfield buffer */
   if (game_status != GAME_MODE_PLAYING ||
       redraw_mask & REDRAW_FROM_BACKBUFFER ||
       buffer == backbuffer)
     DrawMaskedBorder(redraw_mask);
-#endif
+  else
+    DrawMaskedBorder(redraw_mask & REDRAW_DOORS);
 
   if (redraw_mask & REDRAW_ALL)
   {
-#if 0
-    DrawMaskedBorder(REDRAW_ALL);
-#endif
     BlitBitmap(backbuffer, window, 0, 0, WIN_XSIZE, WIN_YSIZE, 0, 0);
 
     redraw_mask = REDRAW_NONE;
@@ -358,6 +362,7 @@ void BackToFront()
        {
          if (buffer != backbuffer)
          {
+           /* copy playfield buffer to backbuffer to add masked border */
            BlitBitmap(buffer, backbuffer, fx, fy, SXSIZE, SYSIZE, SX, SY);
            DrawMaskedBorder(REDRAW_FIELD);
          }
@@ -583,10 +588,16 @@ void FadeCrossSaveBackbuffer()
   BlitBitmap(backbuffer, bitmap_db_cross, 0, 0, WIN_XSIZE, WIN_YSIZE, 0, 0);
 }
 
+void SetWindowBackgroundImageIfDefined(int graphic)
+{
+  if (graphic_info[graphic].bitmap)
+    SetWindowBackgroundBitmap(graphic_info[graphic].bitmap);
+}
+
 void SetMainBackgroundImageIfDefined(int graphic)
 {
   if (graphic_info[graphic].bitmap)
-    SetMainBackgroundImage(graphic);
+    SetMainBackgroundBitmap(graphic_info[graphic].bitmap);
 }
 
 void SetMainBackgroundImage(int graphic)
@@ -6182,9 +6193,22 @@ void PlayMenuMusic()
   if (music == MUS_UNDEFINED)
     return;
 
+  if (!setup.sound_music)
+    return;
+
   PlayMusic(music);
 }
 
+void PlaySoundActivating()
+{
+  PlaySound(SND_MENU_ITEM_ACTIVATING);
+}
+
+void PlaySoundSelecting()
+{
+  PlaySound(SND_MENU_ITEM_SELECTING);
+}
+
 void ToggleFullscreenIfNeeded()
 {
   boolean change_fullscreen = (setup.fullscreen !=