static struct GadgetInfo *screen_gadget[NUM_SCREEN_GADGETS];
-#ifdef MSDOS
-extern unsigned char get_ascii(KeySym);
-#endif
-
void DrawHeadline()
{
int x = SX + (SXSIZE - strlen(PROGRAM_TITLE_STRING) * FONT1_XSIZE) / 2;
if (setup.autorecord)
TapeStartRecording();
-#ifndef MSDOS
+#if !defined(MSDOS) && !defined(WIN32)
if (options.network)
SendToServer_StartPlaying();
else
DrawTextFCentered(100, FC_GREEN,
"Credits:");
DrawTextFCentered(ystart + 0 * ystep, FC_YELLOW,
- "DOS/Windows port of the game:");
+ "DOS port of the game:");
DrawTextFCentered(ystart + 1 * ystep, FC_RED,
"Guido Schulz");
DrawTextFCentered(ystart + 2 * ystep, FC_YELLOW,
DrawTextFCentered(ystart + 1 * ystep, FC_YELLOW,
"If you like it, send e-mail to:");
DrawTextFCentered(ystart + 2 * ystep, FC_RED,
- "aeglos@valinor.owl.de");
+ "info@artsoft.org");
DrawTextFCentered(ystart + 3 * ystep, FC_YELLOW,
"or SnailMail to:");
DrawTextFCentered(ystart + 4 * ystep + 0, FC_RED,
"Holger Schemel");
DrawTextFCentered(ystart + 4 * ystep + 20, FC_RED,
- "Oststrasse 11a");
+ "Detmolder Strasse 189");
DrawTextFCentered(ystart + 4 * ystep + 40, FC_RED,
"33604 Bielefeld");
DrawTextFCentered(ystart + 4 * ystep + 60, FC_RED,
BackToFront();
}
-void HandleTypeName(int newxpos, KeySym key)
+void HandleTypeName(int newxpos, Key key)
{
static int xpos = 0, ypos = 2;
return;
}
- if (((key >= XK_A && key <= XK_Z) || (key >= XK_a && key <= XK_z)) &&
+ if (((key >= KEY_A && key <= KEY_Z) || (key >= KEY_a && key <= KEY_z)) &&
xpos < MAX_PLAYER_NAME_LEN)
{
char ascii;
- if (key >= XK_A && key <= XK_Z)
- ascii = 'A' + (char)(key - XK_A);
+ if (key >= KEY_A && key <= KEY_Z)
+ ascii = 'A' + (char)(key - KEY_A);
else
- ascii = 'a' + (char)(key - XK_a);
+ ascii = 'a' + (char)(key - KEY_a);
setup.player_name[xpos] = ascii;
setup.player_name[xpos + 1] = 0;
setup.player_name, FS_BIG, FC_YELLOW);
DrawGraphic(xpos + 6, ypos, GFX_KUGEL_ROT);
}
- else if ((key == XK_Delete || key == XK_BackSpace) && xpos > 0)
+ else if ((key == KEY_Delete || key == KEY_BackSpace) && xpos > 0)
{
xpos--;
setup.player_name[xpos] = 0;
DrawGraphic(xpos + 6, ypos, GFX_KUGEL_ROT);
DrawGraphic(xpos + 7, ypos, GFX_LEERRAUM);
}
- else if (key == XK_Return && xpos > 0)
+ else if (key == KEY_Return && xpos > 0)
{
DrawText(SX + 6*32, SY + ypos*32, setup.player_name, FS_BIG, FC_RED);
DrawGraphic(xpos + 6, ypos, GFX_LEERRAUM);
else
x = y = 0; /* no action */
- if (ABS(dy) == SCR_FIELDY) /* handle XK_Page_Up, XK_Page_Down */
+ if (ABS(dy) == SCR_FIELDY) /* handle KEY_Page_Up, KEY_Page_Down */
{
dy = SIGN(dy);
step = num_page_entries - 1;
return;
}
- if (ABS(dy) == SCR_FIELDY) /* handle XK_Page_Up, XK_Page_Down */
+ if (ABS(dy) == SCR_FIELDY) /* handle KEY_Page_Up, KEY_Page_Down */
step = MAX_LEVEL_SERIES_ON_SCREEN - 1;
if (dy < 0)
static struct SetupKeyboardInfo custom_key;
static struct
{
- KeySym *keysym;
+ Key *key;
char *text;
} custom[] =
{
DrawText(SX + 3*32, SY + ypos*32,
(setup.input[player_nr].use_joystick ?
custom[i].text :
- getKeyNameFromKeySym(*custom[i].keysym)),
+ getKeyNameFromKey(*custom[i].key)),
FS_BIG, FC_YELLOW);
}
}
static struct SetupKeyboardInfo custom_key;
static struct
{
- KeySym *keysym;
+ Key *key;
char *text;
} customize_step[] =
{
DrawText(SX, SY + (2+2*step_nr+1)*32,
"Key:", FS_BIG, FC_RED);
DrawText(SX + 4*32, SY + (2+2*step_nr+1)*32,
- getKeyNameFromKeySym(*customize_step[step_nr].keysym),
+ getKeyNameFromKey(*customize_step[step_nr].key),
FS_BIG, FC_BLUE);
while(!finished)
{
case EVENT_KEYPRESS:
{
- KeySym key = XLookupKeysym((KeyEvent *)&event,
- ((KeyEvent *)&event)->state);
+ Key key = GetEventKey((KeyEvent *)&event, TRUE);
- if (key == XK_Escape || (key == XK_Return && step_nr == 6))
+ if (key == KEY_Escape || (key == KEY_Return && step_nr == 6))
{
finished = TRUE;
break;
}
+ /* all keys configured -- wait for "Escape" or "Return" key */
+ if (step_nr == 6)
+ break;
+
/* press 'Enter' to keep the existing key binding */
- if (key == XK_Return || step_nr == 6)
- key = *customize_step[step_nr].keysym;
+ if (key == KEY_Return)
+ key = *customize_step[step_nr].key;
/* check if key already used */
for (i=0; i<step_nr; i++)
- if (*customize_step[i].keysym == key)
+ if (*customize_step[i].key == key)
break;
if (i < step_nr)
break;
/* got new key binding */
- *customize_step[step_nr].keysym = key;
+ *customize_step[step_nr].key = key;
DrawText(SX + 4*32, SY + (2+2*step_nr+1)*32,
" ", FS_BIG, FC_YELLOW);
DrawText(SX + 4*32, SY + (2+2*step_nr+1)*32,
- getKeyNameFromKeySym(key), FS_BIG, FC_YELLOW);
+ getKeyNameFromKey(key), FS_BIG, FC_YELLOW);
step_nr++;
/* un-highlight last query */
DrawText(SX, SY+(2+2*step_nr+1)*32,
"Key:", FS_BIG, FC_RED);
DrawText(SX + 4*32, SY+(2+2*step_nr+1)*32,
- getKeyNameFromKeySym(*customize_step[step_nr].keysym),
+ getKeyNameFromKey(*customize_step[step_nr].key),
FS_BIG, FC_BLUE);
}
break;
switch(event.type)
{
case EVENT_KEYPRESS:
- switch(XLookupKeysym((KeyEvent *)&event,
- ((KeyEvent *)&event)->state))
+ switch(GetEventKey((KeyEvent *)&event, TRUE))
{
- case XK_Return:
+ case KEY_Return:
if (check_remaining == 0)
result = 1;
break;
- case XK_Escape:
+ case KEY_Escape:
result = 0;
break;
}
#ifndef MSDOS
+
+#ifdef USE_SDL_LIBRARY
+ joy_ctrl.x = Get_SDL_Joystick_Axis(joystick_fd, 0);
+ joy_ctrl.y = Get_SDL_Joystick_Axis(joystick_fd, 1);
+#else
if (read(joystick_fd, &joy_ctrl, sizeof(joy_ctrl)) != sizeof(joy_ctrl))
{
joystick_status = JOYSTICK_OFF;
goto error_out;
}
+#endif
new_joystick_xleft = MIN(new_joystick_xleft, joy_ctrl.x);
new_joystick_xright = MAX(new_joystick_xright, joy_ctrl.x);
StopAnimation();
DrawSetupInputScreen();
- while(Joystick(player_nr) & JOY_BUTTON);
+
+ /* wait until the last pressed button was released */
+ while(Joystick(player_nr) & JOY_BUTTON)
+ {
+ if (PendingEvent()) /* got event */
+ {
+ Event event;
+
+ NextEvent(&event);
+ HandleOtherEvents(&event);
+
+ Delay(10);
+ }
+ }
return;
error_out: