rnd-19981121-1
[rocksndiamonds.git] / src / buttons.c
index 282481bd68f853b28a245cc6656bd6750c305937..d3eb443adb263bd85aeab0bf176ed36c3c31c6d2 100644 (file)
@@ -84,6 +84,19 @@ void DrawVideoDisplay(unsigned long state, unsigned long value)
        0,0 }}
   };
 
+  if (state & VIDEO_STATE_PBEND_OFF)
+  {
+    int cx = DOOR_GFX_PAGEX3, cy = DOOR_GFX_PAGEY2;
+
+    XCopyArea(display,pix[PIX_DOOR],drawto,gc,
+             cx + VIDEO_REC_LABEL_XPOS,
+             cy + VIDEO_REC_LABEL_YPOS,
+             VIDEO_PBEND_LABEL_XSIZE,
+             VIDEO_PBEND_LABEL_YSIZE,
+             VX + VIDEO_REC_LABEL_XPOS,
+             VY + VIDEO_REC_LABEL_YPOS);
+  }
+
   for(i=0;i<20;i++)
   {
     if (state & (1<<i))
@@ -127,6 +140,19 @@ void DrawVideoDisplay(unsigned long state, unsigned long value)
              VY + VIDEO_PLAY_SYMBOL_YPOS);
   }
 
+  if (state & VIDEO_STATE_PBEND_ON)
+  {
+    int cx = DOOR_GFX_PAGEX6, cy = DOOR_GFX_PAGEY1;
+
+    XCopyArea(display,pix[PIX_DOOR],drawto,gc,
+             cx + VIDEO_PBEND_LABEL_XPOS,
+             cy + VIDEO_PBEND_LABEL_YPOS,
+             VIDEO_PBEND_LABEL_XSIZE,
+             VIDEO_PBEND_LABEL_YSIZE,
+             VX + VIDEO_REC_LABEL_XPOS,
+             VY + VIDEO_REC_LABEL_YPOS);
+  }
+
   if (state & VIDEO_STATE_DATE_ON)
   {
     int tag = value % 100;
@@ -222,34 +248,65 @@ void DrawGameButton(unsigned long state)
   redraw_mask |= REDRAW_DOOR_1;
 }
 
-void DrawYesNoButton(unsigned long state)
+void DrawYesNoButton(unsigned long state, int mode)
 {
-  int pos, cx = DOOR_GFX_PAGEX4, cy = 0;
+  Drawable dest_drawto;
+  int dest_xoffset, dest_yoffset;
+  int xpos, cx = DOOR_GFX_PAGEX4;
+
+  if (mode == DB_INIT)
+  {
+    dest_drawto = pix[PIX_DB_DOOR];
+    dest_xoffset = DOOR_GFX_PAGEX1;
+    dest_yoffset = 0;
+  }
+  else
+  {
+    dest_drawto = drawto;
+    dest_xoffset = DX;
+    dest_yoffset = DY;
+  }
 
-  pos = (state & BUTTON_OK ? OK_BUTTON_XPOS : NO_BUTTON_XPOS);
+  xpos = (state & BUTTON_OK ? OK_BUTTON_XPOS : NO_BUTTON_XPOS);
 
   if (state & BUTTON_PRESSED)
     cx = DOOR_GFX_PAGEX3;
 
-  XCopyArea(display,pix[PIX_DOOR],drawto,gc,
-           cx + pos,cy + OK_BUTTON_GFX_YPOS,
-           OK_BUTTON_XSIZE,OK_BUTTON_YSIZE,
-           DX + pos,DY + OK_BUTTON_YPOS);
+  XCopyArea(display, pix[PIX_DOOR], dest_drawto, gc,
+           cx + xpos, OK_BUTTON_GFX_YPOS,
+           OK_BUTTON_XSIZE, OK_BUTTON_YSIZE,
+           dest_xoffset + xpos, dest_yoffset + OK_BUTTON_YPOS);
 
   redraw_mask |= REDRAW_DOOR_1;
 }
 
-void DrawConfirmButton(unsigned long state)
+void DrawConfirmButton(unsigned long state, int mode)
 {
-  int cx = DOOR_GFX_PAGEX4, cy = 0;
+  Drawable dest_drawto;
+  int dest_xoffset, dest_yoffset;
+  int cx = DOOR_GFX_PAGEX4;
+
+  if (mode == DB_INIT)
+  {
+    dest_drawto = pix[PIX_DB_DOOR];
+    dest_xoffset = DOOR_GFX_PAGEX1;
+    dest_yoffset = 0;
+  }
+  else
+  {
+    dest_drawto = drawto;
+    dest_xoffset = DX;
+    dest_yoffset = DY;
+  }
 
   if (state & BUTTON_PRESSED)
     cx = DOOR_GFX_PAGEX3;
 
-  XCopyArea(display,pix[PIX_DOOR],drawto,gc,
-           cx + CONFIRM_BUTTON_XPOS,cy + CONFIRM_BUTTON_GFX_YPOS,
-           CONFIRM_BUTTON_XSIZE,CONFIRM_BUTTON_YSIZE,
-           DX + CONFIRM_BUTTON_XPOS,DY + CONFIRM_BUTTON_YPOS);
+  XCopyArea(display, pix[PIX_DOOR], dest_drawto, gc,
+           cx + CONFIRM_BUTTON_XPOS, CONFIRM_BUTTON_GFX_YPOS,
+           CONFIRM_BUTTON_XSIZE, CONFIRM_BUTTON_YSIZE,
+           dest_xoffset + CONFIRM_BUTTON_XPOS,
+           dest_yoffset + CONFIRM_BUTTON_YPOS);
 
   redraw_mask |= REDRAW_DOOR_1;
 }
@@ -296,7 +353,7 @@ void DrawPlayerButton(unsigned long state, int mode)
     graphic_offset += 1;
   }
 
-  XCopyArea(display,pix[PIX_DOOR],dest_drawto,gc,
+  XCopyArea(display, pix[PIX_DOOR], dest_drawto, gc,
            cx + PLAYER_BUTTON_GFX_XPOS, cy + PLAYER_BUTTON_GFX_YPOS,
            PLAYER_BUTTON_XSIZE, PLAYER_BUTTON_YSIZE,
            dest_xoffset + xpos, dest_yoffset + ypos);
@@ -504,7 +561,7 @@ int CheckVideoButtons(int mx, int my, int button)
 {
   int return_code = 0;
   static int choice = -1;
-  static BOOL pressed = FALSE;
+  static boolean pressed = FALSE;
   static int video_button[5] =
   {
     VIDEO_PRESS_EJECT_ON,
@@ -564,12 +621,12 @@ int CheckSoundButtons(int mx, int my, int button)
 {
   int return_code = 0;
   static int choice = -1;
-  static BOOL pressed = FALSE;
+  static boolean pressed = FALSE;
   int sound_state[3];
 
-  sound_state[0] = BUTTON_SOUND_MUSIC  | (BUTTON_ON * sound_music_on);
-  sound_state[1] = BUTTON_SOUND_LOOPS  | (BUTTON_ON * sound_loops_on);
-  sound_state[2] = BUTTON_SOUND_SIMPLE | (BUTTON_ON * sound_simple_on);
+  sound_state[0] = BUTTON_SOUND_MUSIC  | (BUTTON_ON * setup.sound_music);
+  sound_state[1] = BUTTON_SOUND_LOOPS  | (BUTTON_ON * setup.sound_loops);
+  sound_state[2] = BUTTON_SOUND_SIMPLE | (BUTTON_ON * setup.sound_simple);
 
   if (button)
   {
@@ -621,7 +678,7 @@ int CheckGameButtons(int mx, int my, int button)
 {
   int return_code = 0;
   static int choice = -1;
-  static BOOL pressed = FALSE;
+  static boolean pressed = FALSE;
   int game_state[3] =
   {
     BUTTON_GAME_STOP,
@@ -679,7 +736,7 @@ int CheckYesNoButtons(int mx, int my, int button)
 {
   int return_code = 0;
   static int choice = -1;
-  static BOOL pressed = FALSE;
+  static boolean pressed = FALSE;
   static int yesno_button[5] =
   {
     BUTTON_OK,
@@ -694,7 +751,7 @@ int CheckYesNoButtons(int mx, int my, int button)
       {
        choice = YESNO_BUTTON(mx);
        pressed = TRUE;
-       DrawYesNoButton(yesno_button[choice] | BUTTON_PRESSED);
+       DrawYesNoButton(yesno_button[choice] | BUTTON_PRESSED, DB_NORMAL);
       }
     }
     else                       /* Mausbewegung bei gedrückter Maustaste */
@@ -703,12 +760,12 @@ int CheckYesNoButtons(int mx, int my, int button)
          choice>=0 && pressed)
       {
        pressed = FALSE;
-       DrawYesNoButton(yesno_button[choice] | BUTTON_RELEASED);
+       DrawYesNoButton(yesno_button[choice] | BUTTON_RELEASED, DB_NORMAL);
       }
       else if (ON_YESNO_BUTTON(mx,my) && YESNO_BUTTON(mx)==choice && !pressed)
       {
        pressed = TRUE;
-       DrawYesNoButton(yesno_button[choice] | BUTTON_PRESSED);
+       DrawYesNoButton(yesno_button[choice] | BUTTON_PRESSED, DB_NORMAL);
       }
     }
   }
@@ -716,7 +773,7 @@ int CheckYesNoButtons(int mx, int my, int button)
   {
     if (ON_YESNO_BUTTON(mx,my) && YESNO_BUTTON(mx)==choice && pressed)
     {
-      DrawYesNoButton(yesno_button[choice] | BUTTON_RELEASED);
+      DrawYesNoButton(yesno_button[choice] | BUTTON_RELEASED, DB_NORMAL);
       return_code = choice+1;
       choice = -1;
       pressed = FALSE;
@@ -736,7 +793,7 @@ int CheckConfirmButton(int mx, int my, int button)
 {
   int return_code = 0;
   static int choice = -1;
-  static BOOL pressed = FALSE;
+  static boolean pressed = FALSE;
 
   if (button)
   {
@@ -746,7 +803,7 @@ int CheckConfirmButton(int mx, int my, int button)
       {
        choice = 0;
        pressed = TRUE;
-       DrawConfirmButton(BUTTON_PRESSED);
+       DrawConfirmButton(BUTTON_PRESSED, DB_NORMAL);
       }
     }
     else                       /* Mausbewegung bei gedrückter Maustaste */
@@ -754,12 +811,12 @@ int CheckConfirmButton(int mx, int my, int button)
       if (!ON_CONFIRM_BUTTON(mx,my) && choice>=0 && pressed)
       {
        pressed = FALSE;
-       DrawConfirmButton(BUTTON_RELEASED);
+       DrawConfirmButton(BUTTON_RELEASED, DB_NORMAL);
       }
       else if (ON_CONFIRM_BUTTON(mx,my) && !pressed)
       {
        pressed = TRUE;
-       DrawConfirmButton(BUTTON_PRESSED);
+       DrawConfirmButton(BUTTON_PRESSED, DB_NORMAL);
       }
     }
   }
@@ -767,7 +824,7 @@ int CheckConfirmButton(int mx, int my, int button)
   {
     if (ON_CONFIRM_BUTTON(mx,my) && pressed)
     {
-      DrawConfirmButton(BUTTON_RELEASED);
+      DrawConfirmButton(BUTTON_RELEASED, DB_NORMAL);
       return_code = BUTTON_CONFIRM;
       choice = -1;
       pressed = FALSE;
@@ -787,7 +844,7 @@ int CheckPlayerButtons(int mx, int my, int button)
 {
   int return_code = 0;
   static int choice = -1;
-  static BOOL pressed = FALSE;
+  static boolean pressed = FALSE;
   int player_state[4] =
   {
     BUTTON_PLAYER_1,
@@ -848,7 +905,7 @@ int CheckEditButtons(int mx, int my, int button)
 {
   int return_code = 0;
   static int choice = -1;
-  static BOOL pressed = FALSE;
+  static boolean pressed = FALSE;
   static int edit_button[6] =
   {
     ED_BUTTON_CTRL,
@@ -918,7 +975,7 @@ int CheckCtrlButtons(int mx, int my, int button)
 {
   int return_code = 0;
   static int choice = -1;
-  static BOOL pressed = FALSE;
+  static boolean pressed = FALSE;
   static int ctrl_button[4] =
   {
     ED_BUTTON_EDIT,
@@ -977,7 +1034,7 @@ int CheckElemButtons(int mx, int my, int button)
 {
   int return_code = -1;
   static int choice = -1;
-  static BOOL pressed = FALSE;
+  static boolean pressed = FALSE;
 
   if (button)
   {
@@ -1038,7 +1095,7 @@ int CheckCountButtons(int mx, int my, int button)
 {
   int return_code = -1;
   static int choice = -1;
-  static BOOL pressed = FALSE;
+  static boolean pressed = FALSE;
 
   if (button)
   {