/***********************************************************
* Rocks'n'Diamonds -- McDuffin Strikes Back! *
*----------------------------------------------------------*
-* ©1995 Artsoft Development *
-* Holger Schemel *
-* 33659 Bielefeld-Senne *
-* Telefon: (0521) 493245 *
-* eMail: aeglos@valinor.owl.de *
-* aeglos@uni-paderborn.de *
-* q99492@pbhrzx.uni-paderborn.de *
+* (c) 1995-98 Artsoft Entertainment *
+* Holger Schemel *
+* Oststrasse 11a *
+* 33604 Bielefeld *
+* phone: ++49 +521 290471 *
+* email: aeglos@valinor.owl.de *
*----------------------------------------------------------*
* buttons.c *
***********************************************************/
#include "editor.h"
#include "tape.h"
+/* some positions in the video tape control window */
+#define VIDEO_BUTTON_EJECT_XPOS (VIDEO_CONTROL_XPOS + 0 * VIDEO_BUTTON_XSIZE)
+#define VIDEO_BUTTON_STOP_XPOS (VIDEO_CONTROL_XPOS + 1 * VIDEO_BUTTON_XSIZE)
+#define VIDEO_BUTTON_PAUSE_XPOS (VIDEO_CONTROL_XPOS + 2 * VIDEO_BUTTON_XSIZE)
+#define VIDEO_BUTTON_REC_XPOS (VIDEO_CONTROL_XPOS + 3 * VIDEO_BUTTON_XSIZE)
+#define VIDEO_BUTTON_PLAY_XPOS (VIDEO_CONTROL_XPOS + 4 * VIDEO_BUTTON_XSIZE)
+#define VIDEO_BUTTON_ANY_YPOS (VIDEO_CONTROL_YPOS)
+#define VIDEO_DATE_LABEL_XPOS (VIDEO_DISPLAY1_XPOS)
+#define VIDEO_DATE_LABEL_YPOS (VIDEO_DISPLAY1_YPOS)
+#define VIDEO_DATE_LABEL_XSIZE (VIDEO_DISPLAY_XSIZE)
+#define VIDEO_DATE_LABEL_YSIZE (VIDEO_DISPLAY_YSIZE)
+#define VIDEO_DATE_XPOS (VIDEO_DISPLAY1_XPOS+1)
+#define VIDEO_DATE_YPOS (VIDEO_DISPLAY1_YPOS+14)
+#define VIDEO_DATE_XSIZE (VIDEO_DISPLAY_XSIZE)
+#define VIDEO_DATE_YSIZE 16
+#define VIDEO_REC_LABEL_XPOS (VIDEO_DISPLAY2_XPOS)
+#define VIDEO_REC_LABEL_YPOS (VIDEO_DISPLAY2_YPOS)
+#define VIDEO_REC_LABEL_XSIZE 20
+#define VIDEO_REC_LABEL_YSIZE 12
+#define VIDEO_REC_SYMBOL_XPOS (VIDEO_DISPLAY2_XPOS+20)
+#define VIDEO_REC_SYMBOL_YPOS (VIDEO_DISPLAY2_YPOS)
+#define VIDEO_REC_SYMBOL_XSIZE 16
+#define VIDEO_REC_SYMBOL_YSIZE 16
+#define VIDEO_PLAY_LABEL_XPOS (VIDEO_DISPLAY2_XPOS+65)
+#define VIDEO_PLAY_LABEL_YPOS (VIDEO_DISPLAY2_YPOS)
+#define VIDEO_PLAY_LABEL_XSIZE 22
+#define VIDEO_PLAY_LABEL_YSIZE 12
+#define VIDEO_PLAY_SYMBOL_XPOS (VIDEO_DISPLAY2_XPOS+52)
+#define VIDEO_PLAY_SYMBOL_YPOS (VIDEO_DISPLAY2_YPOS)
+#define VIDEO_PLAY_SYMBOL_XSIZE 11
+#define VIDEO_PLAY_SYMBOL_YSIZE 13
+#define VIDEO_PAUSE_LABEL_XPOS (VIDEO_DISPLAY2_XPOS)
+#define VIDEO_PAUSE_LABEL_YPOS (VIDEO_DISPLAY2_YPOS+20)
+#define VIDEO_PAUSE_LABEL_XSIZE 35
+#define VIDEO_PAUSE_LABEL_YSIZE 8
+#define VIDEO_PAUSE_SYMBOL_XPOS (VIDEO_DISPLAY2_XPOS+35)
+#define VIDEO_PAUSE_SYMBOL_YPOS (VIDEO_DISPLAY2_YPOS)
+#define VIDEO_PAUSE_SYMBOL_XSIZE 17
+#define VIDEO_PAUSE_SYMBOL_YSIZE 13
+#define VIDEO_TIME_XPOS (VIDEO_DISPLAY2_XPOS+38)
+#define VIDEO_TIME_YPOS (VIDEO_DISPLAY2_YPOS+14)
+#define VIDEO_TIME_XSIZE 50
+#define VIDEO_TIME_YSIZE 16
+
+/* special */
+#define VIDEO_PBEND_LABEL_XPOS 6
+#define VIDEO_PBEND_LABEL_YPOS 220
+#define VIDEO_PBEND_LABEL_XSIZE 35
+#define VIDEO_PBEND_LABEL_YSIZE 30
+
+#define ON_VIDEO_BUTTON(x,y) ((x)>=(VX+VIDEO_CONTROL_XPOS) && \
+ (x)< (VX+VIDEO_CONTROL_XPOS + \
+ VIDEO_CONTROL_XSIZE) && \
+ (y)>=(VY+VIDEO_CONTROL_YPOS) && \
+ (y)< (VY+VIDEO_CONTROL_YPOS + \
+ VIDEO_CONTROL_YSIZE))
+#define VIDEO_BUTTON(x) (((x)-(VX+VIDEO_CONTROL_XPOS))/VIDEO_BUTTON_XSIZE)
+
+#define VIDEO_STATE_OFF (VIDEO_STATE_PLAY_OFF | \
+ VIDEO_STATE_REC_OFF | \
+ VIDEO_STATE_PAUSE_OFF | \
+ VIDEO_STATE_FFWD_OFF | \
+ VIDEO_STATE_PBEND_OFF | \
+ VIDEO_STATE_DATE_OFF | \
+ VIDEO_STATE_TIME_OFF)
+#define VIDEO_PRESS_OFF (VIDEO_PRESS_PLAY_OFF | \
+ VIDEO_PRESS_REC_OFF | \
+ VIDEO_PRESS_PAUSE_OFF | \
+ VIDEO_PRESS_STOP_OFF | \
+ VIDEO_PRESS_EJECT_OFF)
+#define VIDEO_ALL_OFF (VIDEO_STATE_OFF | VIDEO_PRESS_OFF)
+
+#define VIDEO_STATE_ON (VIDEO_STATE_PLAY_ON | \
+ VIDEO_STATE_REC_ON | \
+ VIDEO_STATE_PAUSE_ON | \
+ VIDEO_STATE_FFWD_ON | \
+ VIDEO_STATE_PBEND_ON | \
+ VIDEO_STATE_DATE_ON | \
+ VIDEO_STATE_TIME_ON)
+#define VIDEO_PRESS_ON (VIDEO_PRESS_PLAY_ON | \
+ VIDEO_PRESS_REC_ON | \
+ VIDEO_PRESS_PAUSE_ON | \
+ VIDEO_PRESS_STOP_ON | \
+ VIDEO_PRESS_EJECT_ON)
+#define VIDEO_ALL_ON (VIDEO_STATE_ON | VIDEO_PRESS_ON)
+
+#define VIDEO_STATE (VIDEO_STATE_ON | VIDEO_STATE_OFF)
+#define VIDEO_PRESS (VIDEO_PRESS_ON | VIDEO_PRESS_OFF)
+#define VIDEO_ALL (VIDEO_ALL_ON | VIDEO_ALL_OFF)
+
+
+/* some positions in the sound control window */
+#define SOUND_BUTTON_XSIZE 30
+#define SOUND_BUTTON_YSIZE 30
+#define SOUND_CONTROL_XPOS 5
+#define SOUND_CONTROL_YPOS 245
+#define SOUND_CONTROL_XSIZE (3*SOUND_BUTTON_XSIZE)
+#define SOUND_CONTROL_YSIZE (1*SOUND_BUTTON_YSIZE)
+#define SOUND_BUTTON_MUSIC_XPOS (SOUND_CONTROL_XPOS + 0 * SOUND_BUTTON_XSIZE)
+#define SOUND_BUTTON_LOOPS_XPOS (SOUND_CONTROL_XPOS + 1 * SOUND_BUTTON_XSIZE)
+#define SOUND_BUTTON_SIMPLE_XPOS (SOUND_CONTROL_XPOS + 2 * SOUND_BUTTON_XSIZE)
+#define SOUND_BUTTON_ANY_YPOS (SOUND_CONTROL_YPOS)
+
+#define ON_SOUND_BUTTON(x,y) ((x)>=(DX+SOUND_CONTROL_XPOS) && \
+ (x)< (DX+SOUND_CONTROL_XPOS + \
+ SOUND_CONTROL_XSIZE) && \
+ (y)>=(DY+SOUND_CONTROL_YPOS) && \
+ (y)< (DY+SOUND_CONTROL_YPOS + \
+ SOUND_CONTROL_YSIZE))
+#define SOUND_BUTTON(x) (((x)-(DX+SOUND_CONTROL_XPOS))/SOUND_BUTTON_XSIZE)
+
+/* some positions in the game control window */
+#define GAME_BUTTON_STOP_XPOS (GAME_CONTROL_XPOS + 0 * GAME_BUTTON_XSIZE)
+#define GAME_BUTTON_PAUSE_XPOS (GAME_CONTROL_XPOS + 1 * GAME_BUTTON_XSIZE)
+#define GAME_BUTTON_PLAY_XPOS (GAME_CONTROL_XPOS + 2 * GAME_BUTTON_XSIZE)
+#define GAME_BUTTON_ANY_YPOS (GAME_CONTROL_YPOS)
+
+#define ON_GAME_BUTTON(x,y) ((x)>=(DX+GAME_CONTROL_XPOS) && \
+ (x)< (DX+GAME_CONTROL_XPOS + \
+ GAME_CONTROL_XSIZE) && \
+ (y)>=(DY+GAME_CONTROL_YPOS) && \
+ (y)< (DY+GAME_CONTROL_YPOS + \
+ GAME_CONTROL_YSIZE))
+#define GAME_BUTTON(x) (((x)-(DX+GAME_CONTROL_XPOS))/GAME_BUTTON_XSIZE)
+
+/* some positions in the asking window */
+#define OK_BUTTON_XPOS 2
+#define OK_BUTTON_YPOS 250
+#define OK_BUTTON_GFX_YPOS 0
+#define OK_BUTTON_XSIZE 46
+#define OK_BUTTON_YSIZE 28
+#define NO_BUTTON_XPOS 52
+#define NO_BUTTON_YPOS OK_BUTTON_YPOS
+#define NO_BUTTON_XSIZE OK_BUTTON_XSIZE
+#define NO_BUTTON_YSIZE OK_BUTTON_YSIZE
+#define CONFIRM_BUTTON_XPOS 2
+#define CONFIRM_BUTTON_GFX_YPOS 30
+#define CONFIRM_BUTTON_YPOS OK_BUTTON_YPOS
+#define CONFIRM_BUTTON_XSIZE 96
+#define CONFIRM_BUTTON_YSIZE OK_BUTTON_YSIZE
+
+#define ON_YESNO_BUTTON(x,y) (((x)>=(DX+OK_BUTTON_XPOS) && \
+ (x)< (DX+OK_BUTTON_XPOS + \
+ OK_BUTTON_XSIZE) && \
+ (y)>=(DY+OK_BUTTON_YPOS) && \
+ (y)< (DY+OK_BUTTON_YPOS + \
+ OK_BUTTON_YSIZE)) || \
+ ((x)>=(DX+NO_BUTTON_XPOS) && \
+ (x)< (DX+NO_BUTTON_XPOS + \
+ NO_BUTTON_XSIZE) && \
+ (y)>=(DY+NO_BUTTON_YPOS) && \
+ (y)< (DY+NO_BUTTON_YPOS + \
+ NO_BUTTON_YSIZE)))
+#define ON_CONFIRM_BUTTON(x,y) (((x)>=(DX+CONFIRM_BUTTON_XPOS) && \
+ (x)< (DX+CONFIRM_BUTTON_XPOS + \
+ CONFIRM_BUTTON_XSIZE) && \
+ (y)>=(DY+CONFIRM_BUTTON_YPOS) && \
+ (y)< (DY+CONFIRM_BUTTON_YPOS + \
+ CONFIRM_BUTTON_YSIZE)))
+#define YESNO_BUTTON(x) (((x)-(DX+OK_BUTTON_XPOS))/OK_BUTTON_XSIZE)
+
+/* some positions in the choose player window */
+#define PLAYER_BUTTON_XSIZE 30
+#define PLAYER_BUTTON_YSIZE 30
+#define PLAYER_BUTTON_GFX_XPOS 5
+#define PLAYER_BUTTON_GFX_YPOS (215-30)
+#define PLAYER_CONTROL_XPOS (5 + PLAYER_BUTTON_XSIZE/2)
+#define PLAYER_CONTROL_YPOS (215 - PLAYER_BUTTON_YSIZE/2)
+#define PLAYER_CONTROL_XSIZE (2*PLAYER_BUTTON_XSIZE)
+#define PLAYER_CONTROL_YSIZE (2*PLAYER_BUTTON_YSIZE)
+#define PLAYER_BUTTON_1_XPOS (PLAYER_CONTROL_XPOS + 0 * PLAYER_BUTTON_XSIZE)
+#define PLAYER_BUTTON_2_XPOS (PLAYER_CONTROL_XPOS + 1 * PLAYER_BUTTON_XSIZE)
+#define PLAYER_BUTTON_3_XPOS (PLAYER_CONTROL_XPOS + 0 * PLAYER_BUTTON_XSIZE)
+#define PLAYER_BUTTON_4_XPOS (PLAYER_CONTROL_XPOS + 1 * PLAYER_BUTTON_XSIZE)
+#define PLAYER_BUTTON_1_YPOS (PLAYER_CONTROL_YPOS + 0 * PLAYER_BUTTON_YSIZE)
+#define PLAYER_BUTTON_2_YPOS (PLAYER_CONTROL_YPOS + 0 * PLAYER_BUTTON_YSIZE)
+#define PLAYER_BUTTON_3_YPOS (PLAYER_CONTROL_YPOS + 1 * PLAYER_BUTTON_YSIZE)
+#define PLAYER_BUTTON_4_YPOS (PLAYER_CONTROL_YPOS + 1 * PLAYER_BUTTON_YSIZE)
+
+#define ON_PLAYER_BUTTON(x,y) ((x)>=(DX+PLAYER_CONTROL_XPOS) && \
+ (x)< (DX+PLAYER_CONTROL_XPOS + \
+ PLAYER_CONTROL_XSIZE) && \
+ (y)>=(DY+PLAYER_CONTROL_YPOS) && \
+ (y)< (DY+PLAYER_CONTROL_YPOS + \
+ PLAYER_CONTROL_YSIZE))
+#define PLAYER_BUTTON(x,y) ((((x)-(DX+PLAYER_CONTROL_XPOS)) / \
+ PLAYER_BUTTON_XSIZE) + 2 * \
+ (((y)-(DY+PLAYER_CONTROL_YPOS)) / \
+ PLAYER_BUTTON_YSIZE))
+
+
+/* some definitions for the editor control window */
+
+#define ON_EDIT_BUTTON(x,y) (((x)>=(VX+ED_BUTTON_CTRL_XPOS) && \
+ (x)< (VX+ED_BUTTON_CTRL_XPOS + \
+ ED_BUTTON_CTRL_XSIZE) && \
+ (y)>=(VY+ED_BUTTON_CTRL_YPOS) && \
+ (y)< (VY+ED_BUTTON_CTRL_YPOS + \
+ ED_BUTTON_CTRL_YSIZE + \
+ ED_BUTTON_FILL_YSIZE)) || \
+ ((x)>=(VX+ED_BUTTON_LEFT_XPOS) && \
+ (x)< (VX+ED_BUTTON_LEFT_XPOS + \
+ ED_BUTTON_LEFT_XSIZE + \
+ ED_BUTTON_UP_XSIZE + \
+ ED_BUTTON_RIGHT_XSIZE) && \
+ (y)>=(VY+ED_BUTTON_LEFT_YPOS) && \
+ (y)< (VY+ED_BUTTON_LEFT_YPOS + \
+ ED_BUTTON_LEFT_YSIZE)) || \
+ ((x)>=(VX+ED_BUTTON_UP_XPOS) && \
+ (x)< (VX+ED_BUTTON_UP_XPOS + \
+ ED_BUTTON_UP_XSIZE) && \
+ (y)>=(VY+ED_BUTTON_UP_YPOS) && \
+ (y)< (VY+ED_BUTTON_UP_YPOS + \
+ ED_BUTTON_UP_YSIZE + \
+ ED_BUTTON_DOWN_YSIZE)))
+
+#define ON_CTRL_BUTTON(x,y) ((x)>=(VX+ED_BUTTON_EDIT_XPOS) && \
+ (x)< (VX+ED_BUTTON_EDIT_XPOS + \
+ ED_BUTTON_EDIT_XSIZE) && \
+ (y)>=(VY+ED_BUTTON_EDIT_YPOS) && \
+ (y)< (VY+ED_BUTTON_EDIT_YPOS + \
+ ED_BUTTON_EDIT_YSIZE + \
+ ED_BUTTON_CLEAR_YSIZE + \
+ ED_BUTTON_UNDO_YSIZE + \
+ ED_BUTTON_EXIT_YSIZE))
+
+#define ON_ELEM_BUTTON(x,y) (((x)>=(DX+ED_BUTTON_EUP_XPOS) && \
+ (x)< (DX+ED_BUTTON_EUP_XPOS + \
+ ED_BUTTON_EUP_XSIZE) && \
+ (y)>=(DY+ED_BUTTON_EUP_YPOS) && \
+ (y)< (DY+ED_BUTTON_EUP_YPOS + \
+ ED_BUTTON_EUP_YSIZE)) || \
+ ((x)>=(DX+ED_BUTTON_EDOWN_XPOS) && \
+ (x)< (DX+ED_BUTTON_EDOWN_XPOS + \
+ ED_BUTTON_EDOWN_XSIZE) && \
+ (y)>=(DY+ED_BUTTON_EDOWN_YPOS) && \
+ (y)< (DY+ED_BUTTON_EDOWN_YPOS + \
+ ED_BUTTON_EDOWN_YSIZE)) || \
+ ((x)>=(DX+ED_BUTTON_ELEM_XPOS) && \
+ (x)< (DX+ED_BUTTON_ELEM_XPOS + \
+ MAX_ELEM_X*ED_BUTTON_ELEM_XSIZE) && \
+ (y)>=(DY+ED_BUTTON_ELEM_YPOS) && \
+ (y)< (DY+ED_BUTTON_ELEM_YPOS + \
+ MAX_ELEM_Y*ED_BUTTON_ELEM_YSIZE)))
+
+#define ON_COUNT_BUTTON(x,y) (((((x)>=ED_COUNT_GADGET_XPOS && \
+ (x)<(ED_COUNT_GADGET_XPOS + \
+ ED_BUTTON_MINUS_XSIZE)) || \
+ ((x)>=(ED_COUNT_GADGET_XPOS + \
+ (ED_BUTTON_PLUS_XPOS - \
+ ED_BUTTON_MINUS_XPOS)) && \
+ (x)<(ED_COUNT_GADGET_XPOS + \
+ (ED_BUTTON_PLUS_XPOS - \
+ ED_BUTTON_MINUS_XPOS) + \
+ ED_BUTTON_PLUS_XSIZE))) && \
+ ((y)>=ED_COUNT_GADGET_YPOS && \
+ (y)<(ED_COUNT_GADGET_YPOS + \
+ 16*ED_COUNT_GADGET_YSIZE)) && \
+ (((y)-ED_COUNT_GADGET_YPOS) % \
+ ED_COUNT_GADGET_YSIZE) < \
+ ED_BUTTON_MINUS_YSIZE) || \
+ ((((x)>=ED_SIZE_GADGET_XPOS && \
+ (x)<(ED_SIZE_GADGET_XPOS + \
+ ED_BUTTON_MINUS_XSIZE)) || \
+ ((x)>=(ED_SIZE_GADGET_XPOS + \
+ (ED_BUTTON_PLUS_XPOS - \
+ ED_BUTTON_MINUS_XPOS)) && \
+ (x)<(ED_SIZE_GADGET_XPOS + \
+ (ED_BUTTON_PLUS_XPOS - \
+ ED_BUTTON_MINUS_XPOS) + \
+ ED_BUTTON_PLUS_XSIZE))) && \
+ ((y)>=ED_SIZE_GADGET_YPOS && \
+ (y)<(ED_SIZE_GADGET_YPOS + \
+ 2*ED_SIZE_GADGET_YSIZE)) && \
+ (((y)-ED_SIZE_GADGET_YPOS) % \
+ ED_SIZE_GADGET_YSIZE) < \
+ ED_BUTTON_MINUS_YSIZE))
+
+#define EDIT_BUTTON(x,y) (((y) < (VY + ED_BUTTON_CTRL_YPOS + \
+ ED_BUTTON_CTRL_YSIZE)) ? 0 : \
+ ((y) < (VY + ED_BUTTON_CTRL_YPOS + \
+ ED_BUTTON_CTRL_YSIZE + \
+ ED_BUTTON_FILL_YSIZE)) ? 1 : \
+ ((x) < (VX + ED_BUTTON_LEFT_XPOS + \
+ ED_BUTTON_LEFT_XSIZE) ? 2 : \
+ (x) > (VX + ED_BUTTON_LEFT_XPOS + \
+ ED_BUTTON_LEFT_XSIZE + \
+ ED_BUTTON_UP_XSIZE) ? 5 : \
+ 3+(((y)-(VY + ED_BUTTON_CTRL_YPOS + \
+ ED_BUTTON_CTRL_YSIZE + \
+ ED_BUTTON_FILL_YSIZE)) / \
+ ED_BUTTON_UP_YSIZE)))
+
+#define CTRL_BUTTON(x,y) (((y) < (VY + ED_BUTTON_EDIT_YPOS + \
+ ED_BUTTON_EDIT_YSIZE)) ? 0 : \
+ 1+(((y)-(VY + ED_BUTTON_EDIT_YPOS + \
+ ED_BUTTON_EDIT_YSIZE)) / \
+ ED_BUTTON_CLEAR_YSIZE))
+
+#define ELEM_BUTTON(x,y) (((y) < (DY + ED_BUTTON_EUP_YPOS + \
+ ED_BUTTON_EUP_YSIZE)) ? 0 : \
+ ((y) > (DY + ED_BUTTON_EDOWN_YPOS)) ? 1 : \
+ 2+(((y) - (DY + ED_BUTTON_ELEM_YPOS)) / \
+ ED_BUTTON_ELEM_YSIZE)*MAX_ELEM_X + \
+ ((x) - (DX + ED_BUTTON_ELEM_XPOS)) / \
+ ED_BUTTON_ELEM_XSIZE)
+
+#define COUNT_BUTTON(x,y) ((x) < ED_SIZE_GADGET_XPOS ? \
+ ((((y) - ED_COUNT_GADGET_YPOS) / \
+ ED_COUNT_GADGET_YSIZE)*2 + \
+ ((x) < (ED_COUNT_GADGET_XPOS + \
+ ED_BUTTON_MINUS_XSIZE) ? 0 : 1)) : \
+ 32+((((y) - ED_SIZE_GADGET_YPOS) / \
+ ED_SIZE_GADGET_YSIZE)*2 + \
+ ((x) < (ED_SIZE_GADGET_XPOS + \
+ ED_BUTTON_MINUS_XSIZE) ? 0 : 1)))
+
/****************************************************************/
/********** drawing buttons and corresponding displays **********/
/****************************************************************/
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))
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;
redraw_mask |= REDRAW_DOOR_1;
}
-void DrawChooseButton(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;
- pos = (state & BUTTON_OK ? OK_BUTTON_XPOS : NO_BUTTON_XPOS);
+ 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;
+ }
+
+ 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, int mode)
+{
+ 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], 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;
}
-void DrawConfirmButton(unsigned long state)
+void DrawPlayerButton(unsigned long state, int mode)
{
+ Drawable dest_drawto;
+ int dest_xoffset, dest_yoffset;
+ int graphic = GFX_SPIELER1; /* default */
+ int graphic_offset = (PLAYER_BUTTON_XSIZE - TILEX/2)/2;
+ int xpos, ypos;
int cx = DOOR_GFX_PAGEX4, cy = 0;
+ 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_PLAYER_1)
+ graphic = GFX_SPIELER1;
+ else if (state & BUTTON_PLAYER_2)
+ graphic = GFX_SPIELER2;
+ else if (state & BUTTON_PLAYER_3)
+ graphic = GFX_SPIELER3;
+ else if (state & BUTTON_PLAYER_4)
+ graphic = GFX_SPIELER4;
+
+ xpos = (state & BUTTON_PLAYER_1 || state & BUTTON_PLAYER_3 ?
+ PLAYER_BUTTON_1_XPOS : PLAYER_BUTTON_2_XPOS);
+ ypos = (state & BUTTON_PLAYER_1 || state & BUTTON_PLAYER_2 ?
+ PLAYER_BUTTON_1_YPOS : PLAYER_BUTTON_3_YPOS);
+
if (state & BUTTON_PRESSED)
+ {
cx = DOOR_GFX_PAGEX3;
+ graphic_offset += 1;
+ }
- 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 + PLAYER_BUTTON_GFX_XPOS, cy + PLAYER_BUTTON_GFX_YPOS,
+ PLAYER_BUTTON_XSIZE, PLAYER_BUTTON_YSIZE,
+ dest_xoffset + xpos, dest_yoffset + ypos);
+ DrawMiniGraphicExt(dest_drawto,gc,
+ dest_xoffset + xpos + graphic_offset,
+ dest_yoffset + ypos + graphic_offset,
+ graphic);
redraw_mask |= REDRAW_DOOR_1;
}
{
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,
{
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)
{
{
int return_code = 0;
static int choice = -1;
- static BOOL pressed = FALSE;
+ static boolean pressed = FALSE;
int game_state[3] =
{
BUTTON_GAME_STOP,
return(return_code);
}
-int CheckChooseButtons(int mx, int my, int button)
+int CheckYesNoButtons(int mx, int my, int button)
{
int return_code = 0;
static int choice = -1;
- static BOOL pressed = FALSE;
- static int choose_button[5] =
+ static boolean pressed = FALSE;
+ static int yesno_button[5] =
{
BUTTON_OK,
BUTTON_NO
{
if (!motion_status) /* Maustaste neu gedrückt */
{
- if (ON_CHOOSE_BUTTON(mx,my))
+ if (ON_YESNO_BUTTON(mx,my))
{
- choice = CHOOSE_BUTTON(mx);
+ choice = YESNO_BUTTON(mx);
pressed = TRUE;
- DrawChooseButton(choose_button[choice] | BUTTON_PRESSED);
+ DrawYesNoButton(yesno_button[choice] | BUTTON_PRESSED, DB_NORMAL);
}
}
else /* Mausbewegung bei gedrückter Maustaste */
{
- if ((!ON_CHOOSE_BUTTON(mx,my) || CHOOSE_BUTTON(mx)!=choice) &&
+ if ((!ON_YESNO_BUTTON(mx,my) || YESNO_BUTTON(mx)!=choice) &&
choice>=0 && pressed)
{
pressed = FALSE;
- DrawChooseButton(choose_button[choice] | BUTTON_RELEASED);
+ DrawYesNoButton(yesno_button[choice] | BUTTON_RELEASED, DB_NORMAL);
}
- else if (ON_CHOOSE_BUTTON(mx,my) &&CHOOSE_BUTTON(mx)==choice && !pressed)
+ else if (ON_YESNO_BUTTON(mx,my) && YESNO_BUTTON(mx)==choice && !pressed)
{
pressed = TRUE;
- DrawChooseButton(choose_button[choice] | BUTTON_PRESSED);
+ DrawYesNoButton(yesno_button[choice] | BUTTON_PRESSED, DB_NORMAL);
}
}
}
else /* Maustaste wieder losgelassen */
{
- if (ON_CHOOSE_BUTTON(mx,my) && CHOOSE_BUTTON(mx)==choice && pressed)
+ if (ON_YESNO_BUTTON(mx,my) && YESNO_BUTTON(mx)==choice && pressed)
{
- DrawChooseButton(choose_button[choice] | BUTTON_RELEASED);
+ DrawYesNoButton(yesno_button[choice] | BUTTON_RELEASED, DB_NORMAL);
return_code = choice+1;
choice = -1;
pressed = FALSE;
{
int return_code = 0;
static int choice = -1;
- static BOOL pressed = FALSE;
+ static boolean pressed = FALSE;
if (button)
{
{
choice = 0;
pressed = TRUE;
- DrawConfirmButton(BUTTON_PRESSED);
+ DrawConfirmButton(BUTTON_PRESSED, DB_NORMAL);
}
}
else /* Mausbewegung bei gedrückter Maustaste */
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);
}
}
}
{
if (ON_CONFIRM_BUTTON(mx,my) && pressed)
{
- DrawConfirmButton(BUTTON_RELEASED);
+ DrawConfirmButton(BUTTON_RELEASED, DB_NORMAL);
return_code = BUTTON_CONFIRM;
choice = -1;
pressed = FALSE;
return(return_code);
}
+int CheckPlayerButtons(int mx, int my, int button)
+{
+ int return_code = 0;
+ static int choice = -1;
+ static boolean pressed = FALSE;
+ int player_state[4] =
+ {
+ BUTTON_PLAYER_1,
+ BUTTON_PLAYER_2,
+ BUTTON_PLAYER_3,
+ BUTTON_PLAYER_4
+ };
+
+ if (button)
+ {
+ if (!motion_status) /* Maustaste neu gedrückt */
+ {
+ if (ON_PLAYER_BUTTON(mx,my))
+ {
+ choice = PLAYER_BUTTON(mx,my);
+ pressed = TRUE;
+ DrawPlayerButton(player_state[choice] | BUTTON_PRESSED, DB_NORMAL);
+ }
+ }
+ else /* Mausbewegung bei gedrückter Maustaste */
+ {
+ if ((!ON_PLAYER_BUTTON(mx,my) || PLAYER_BUTTON(mx,my)!=choice) &&
+ choice>=0 && pressed)
+ {
+ pressed = FALSE;
+ DrawPlayerButton(player_state[choice] | BUTTON_RELEASED, DB_NORMAL);
+ }
+ else if (ON_PLAYER_BUTTON(mx,my) && PLAYER_BUTTON(mx,my)==choice && !pressed)
+ {
+ pressed = TRUE;
+ DrawPlayerButton(player_state[choice] | BUTTON_PRESSED, DB_NORMAL);
+ }
+ }
+ }
+ else /* Maustaste wieder losgelassen */
+ {
+ if (ON_PLAYER_BUTTON(mx,my) && PLAYER_BUTTON(mx,my)==choice && pressed)
+ {
+ DrawPlayerButton(player_state[choice] | BUTTON_RELEASED, DB_NORMAL);
+ return_code = player_state[choice];
+ choice = -1;
+ pressed = FALSE;
+ }
+ else
+ {
+ choice = -1;
+ pressed = FALSE;
+ }
+ }
+
+ BackToFront();
+ return(return_code);
+}
+
/* several buttons in the level editor */
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,
{
int return_code = 0;
static int choice = -1;
- static BOOL pressed = FALSE;
+ static boolean pressed = FALSE;
static int ctrl_button[4] =
{
ED_BUTTON_EDIT,
{
int return_code = -1;
static int choice = -1;
- static BOOL pressed = FALSE;
+ static boolean pressed = FALSE;
if (button)
{
{
int return_code = -1;
static int choice = -1;
- static BOOL pressed = FALSE;
+ static boolean pressed = FALSE;
if (button)
{