rnd-19980904-1
[rocksndiamonds.git] / src / tools.c
index befacb27d300fe6b6cb142b4ef7af1621dad0a8a..53290c195d93d05deb93c5ba8f24387e6cedbddc 100644 (file)
 
 #include <math.h>
 
+#ifdef MSDOS
+extern BOOL wait_for_vsync;
+#endif
+
 void SetDrawtoField(int mode)
 {
   if (mode == DRAW_BUFFERED && soft_scrolling_on)
@@ -84,6 +88,9 @@ void BackToFront()
 
   if (redraw_mask & REDRAW_FIELD)
   {
+#ifdef MSDOS
+    wait_for_vsync = TRUE;
+#endif
     if (game_status != PLAYING || redraw_mask & REDRAW_FROM_BACKBUFFER)
       XCopyArea(display,backbuffer,window,gc,
                REAL_SX,REAL_SY, FULL_SXSIZE,FULL_SYSIZE,
@@ -116,6 +123,9 @@ void BackToFront()
 
   if (redraw_mask & REDRAW_DOORS)
   {
+#ifdef MSDOS
+    wait_for_vsync = TRUE;
+#endif
     if (redraw_mask & REDRAW_DOOR_1)
       XCopyArea(display,backbuffer,window,gc,
                DX,DY, DXSIZE,DYSIZE,
@@ -1469,6 +1479,9 @@ BOOL AreYouSure(char *text, unsigned int ays_state)
        case FocusOut:
          HandleFocusEvent((XFocusChangeEvent *) &event);
          break;
+        case ClientMessage:
+         HandleClientMessageEvent((XClientMessageEvent *) &event);
+         break;
        default:
          break;
       }
@@ -1553,6 +1566,10 @@ unsigned int MoveDoor(unsigned int door_state)
   static unsigned int door2 = DOOR_CLOSE_2;
   int x, start, stepsize = 4, door_anim_delay = stepsize*5000;
 
+#ifdef MSDOS
+  stepsize = 2;
+#endif
+
   if (door_state == DOOR_GET_STATE)
     return(door1 | door2);
 
@@ -1656,7 +1673,9 @@ unsigned int MoveDoor(unsigned int door_state)
       }
 
       BackToFront();
+#ifndef MSDOS
       Delay(door_anim_delay);
+#endif
 
       if (game_status==MAINMENU)
        DoAnimation();