(x == 15 && level_nr < leveldir[leveldir_nr].levels - 1)) &&
button)
{
- static long level_delay = 0;
+ static unsigned long level_delay = 0;
int step = (button == 1 ? 1 : button == 2 ? 5 : 10);
int new_level_nr, old_level_nr = level_nr;
int font_color = (leveldir[leveldir_nr].readonly ? FC_RED : FC_YELLOW);
if (setup.autorecord)
TapeStartRecording();
+#ifndef MSDOS
if (options.network)
SendToServer_StartPlaying();
else
+#endif
{
game_status = PLAYING;
InitGame();
void HandleHelpScreen(int button)
{
- static long hs_delay = 0;
+ static unsigned long hs_delay = 0;
int num_helpscreen_els_pages =
(num_helpscreen_els + MAX_HELPSCREEN_ELS-1) / MAX_HELPSCREEN_ELS;
int button_released = !button;
void HandleTypeName(int newxpos, KeySym key)
{
static int xpos = 0, ypos = 2;
- unsigned char ascii;
if (newxpos)
{
xpos = newxpos;
- DrawText(SX+6*32, SY+ypos*32, setup.player_name, FS_BIG, FC_YELLOW);
- DrawGraphic(xpos+6,ypos,GFX_KUGEL_ROT);
+ DrawText(SX + 6*32, SY + ypos*32, setup.player_name, FS_BIG, FC_YELLOW);
+ DrawGraphic(xpos + 6, ypos, GFX_KUGEL_ROT);
return;
}
-#ifndef MSDOS
- if ((key>=XK_A && key<=XK_Z) || (key>=XK_a && key<=XK_z &&
- xpos<MAX_NAMELEN-1))
+ if (((key >= XK_A && key <= XK_Z) || (key >= XK_a && key <= XK_z)) &&
+ xpos < MAX_NAMELEN - 1)
{
- if (key>=XK_A && key<=XK_Z)
- ascii = 'A'+(char)(key-XK_A);
- if (key>=XK_a && key<=XK_z)
- ascii = 'a'+(char)(key-XK_a);
+ char ascii;
+
+ if (key >= XK_A && key <= XK_Z)
+ ascii = 'A' + (char)(key - XK_A);
+ else
+ ascii = 'a' + (char)(key - XK_a);
setup.player_name[xpos] = ascii;
- setup.player_name[xpos+1] = 0;
- xpos++;
- DrawTextExt(drawto,gc,SX+6*32,SY+ypos*32,
- setup.player_name,FS_BIG,FC_YELLOW);
- DrawTextExt(window,gc,SX+6*32,SY+ypos*32,
- setup.player_name,FS_BIG,FC_YELLOW);
- DrawGraphic(xpos+6,ypos,GFX_KUGEL_ROT);
- }
-#else
- if ((ascii = get_ascii(key)) && xpos<MAX_NAMELEN-1)
- {
- setup.player_name[xpos] = ascii;
- setup.player_name[xpos+1] = 0;
+ setup.player_name[xpos + 1] = 0;
xpos++;
- DrawTextExt(drawto,gc,SX+6*32,SY+ypos*32,
- setup.player_name,FS_BIG,FC_YELLOW);
- DrawTextExt(window,gc,SX+6*32,SY+ypos*32,
- setup.player_name,FS_BIG,FC_YELLOW);
- DrawGraphic(xpos+6,ypos,GFX_KUGEL_ROT);
+ DrawTextExt(drawto, gc, SX + 6*32, SY + ypos*32,
+ setup.player_name, FS_BIG, FC_YELLOW);
+ DrawTextExt(window, gc, SX + 6*32, SY + ypos*32,
+ setup.player_name, FS_BIG, FC_YELLOW);
+ DrawGraphic(xpos + 6, ypos, GFX_KUGEL_ROT);
}
-#endif
- else if ((key==XK_Delete || key==XK_BackSpace) && xpos>0)
+ else if ((key == XK_Delete || key == XK_BackSpace) && xpos > 0)
{
xpos--;
setup.player_name[xpos] = 0;
- DrawGraphic(xpos+6,ypos,GFX_KUGEL_ROT);
- DrawGraphic(xpos+7,ypos,GFX_LEERRAUM);
+ DrawGraphic(xpos + 6, ypos, GFX_KUGEL_ROT);
+ DrawGraphic(xpos + 7, ypos, GFX_LEERRAUM);
}
- else if (key==XK_Return && xpos>0)
+ else if (key == XK_Return && xpos > 0)
{
- DrawText(SX+6*32,SY+ypos*32,setup.player_name,FS_BIG,FC_RED);
- DrawGraphic(xpos+6,ypos,GFX_LEERRAUM);
+ DrawText(SX + 6*32, SY + ypos*32, setup.player_name, FS_BIG, FC_RED);
+ DrawGraphic(xpos + 6, ypos, GFX_LEERRAUM);
SaveSetup();
game_status = MAINMENU;
{
static int choice = 3;
static int first_entry = 0;
- static long choose_delay = 0;
+ static unsigned long choose_delay = 0;
static int redraw = TRUE;
int x = (mx + 32 - SX) / 32, y = (my + 32 - SY) / 32;
int num_page_entries;
SaveJoystickData();
*/
+#ifdef MSDOS
+ save_joystick_data(JOYSTICK_FILENAME);
+#endif
+
+
}
game_status = MAINMENU;
DrawText(SX+32, SY+3*32, "Device:", FS_BIG, FC_GREEN);
DrawText(SX+32, SY+15*32, "Exit", FS_BIG, FC_GREEN);
+ DrawTextFCentered(SYSIZE - 20, FC_BLUE,
+ "Joysticks deactivated on this screen");
+
+ HandleSetupInputScreen(0,0, 0,0, MB_MENU_INITIALIZE);
FadeToFront();
InitAnimation();
- HandleSetupInputScreen(0,0,0,0,MB_MENU_INITIALIZE);
-}
-
-static int getJoystickNrFromDeviceName(char *device_name)
-{
- char c;
- int joystick_nr = 0;
-
- if (device_name == NULL || device_name[0] == '\0')
- return 0;
-
- c = device_name[strlen(device_name) - 1];
-
- if (c >= '0' && c <= '9')
- joystick_nr = (int)(c - '0');
-
- if (joystick_nr < 0 || joystick_nr >= MAX_PLAYERS)
- joystick_nr = 0;
-
- return joystick_nr;
}
static void setJoystickDeviceToNr(char *device_name, int device_nr)
if (y == 3 && ((x == 1 && !button) || ((x == 11 || x == 13) && button)))
{
- static long delay = 0;
+ static unsigned long delay = 0;
if (!DelayReached(&delay, 150))
goto out;
if (setup.input[player_nr].use_joystick)
{
InitJoysticks();
+ game_status = CALIBRATION;
CalibrateJoystick(player_nr);
+ game_status = SETUPINPUT;
}
else
CustomizeKeyboard(player_nr);
} joy_ctrl;
#endif
-#ifdef MSDOS
- char joy_nr[4];
-#endif
-
- int joystick_fd = stored_player[player_nr].joystick_fd;
+#ifndef MSDOS
int new_joystick_xleft = 128, new_joystick_xright = 128;
int new_joystick_yupper = 128, new_joystick_ylower = 128;
int new_joystick_xmiddle, new_joystick_ymiddle;
+#else
+ int calibration_step = 1;
+#endif
+
+ int joystick_fd = stored_player[player_nr].joystick_fd;
int x, y, last_x, last_y, xpos = 8, ypos = 3;
boolean check[3][3];
- int check_remaining = 3 * 3;
- int joy;
+ int check_remaining;
+ int joy_value;
int result = -1;
- if (joystick_status == JOYSTICK_OFF)
- return;
-
- if (!setup.input[player_nr].use_joystick || joystick_fd < 0)
- return;
+ if (joystick_status == JOYSTICK_OFF ||
+ joystick_fd < 0 ||
+ !setup.input[player_nr].use_joystick)
+ goto error_out;
ClearWindow();
- DrawText(SX, SY + 6*32, " ROTATE JOYSTICK ",FS_BIG,FC_YELLOW);
- DrawText(SX, SY + 7*32, "IN ALL DIRECTIONS",FS_BIG,FC_YELLOW);
- DrawText(SX + 16, SY + 9*32, " IF ALL BALLS ",FS_BIG,FC_YELLOW);
- DrawText(SX, SY + 10*32, " ARE YELLOW, ",FS_BIG,FC_YELLOW);
- DrawText(SX, SY + 11*32, " PRESS BUTTON! ",FS_BIG,FC_YELLOW);
+
+#ifndef MSDOS
+ DrawText(SX, SY + 6*32, " ROTATE JOYSTICK ", FS_BIG, FC_YELLOW);
+ DrawText(SX, SY + 7*32, "IN ALL DIRECTIONS", FS_BIG, FC_YELLOW);
+ DrawText(SX + 16, SY + 9*32, " IF ALL BALLS ", FS_BIG, FC_YELLOW);
+ DrawText(SX, SY + 10*32, " ARE YELLOW, ", FS_BIG, FC_YELLOW);
+ DrawText(SX, SY + 11*32, "PRESS ANY BUTTON!", FS_BIG, FC_YELLOW);
+ check_remaining = 3 * 3;
+#else
+ DrawText(SX, SY + 7*32, " MOVE JOYSTICK ", FS_BIG, FC_YELLOW);
+ DrawText(SX + 16, SY + 8*32, " TO ", FS_BIG, FC_YELLOW);
+ DrawText(SX, SY + 9*32, " CENTER POSITION ", FS_BIG, FC_YELLOW);
+ DrawText(SX, SY + 10*32, " AND ", FS_BIG, FC_YELLOW);
+ DrawText(SX, SY + 11*32, "PRESS ANY BUTTON!", FS_BIG, FC_YELLOW);
+ check_remaining = 0;
+#endif
for(y=0; y<3; y++)
{
}
}
- joy = Joystick(player_nr);
- last_x = (joy & JOY_LEFT ? -1 : joy & JOY_RIGHT ? +1 : 0);
- last_y = (joy & JOY_UP ? -1 : joy & JOY_DOWN ? +1 : 0);
+ joy_value = Joystick(player_nr);
+ last_x = (joy_value & JOY_LEFT ? -1 : joy_value & JOY_RIGHT ? +1 : 0);
+ last_y = (joy_value & JOY_UP ? -1 : joy_value & JOY_DOWN ? +1 : 0);
DrawGraphic(xpos + last_x, ypos + last_y, GFX_KUGEL_ROT);
BackToFront();
}
}
+#ifndef MSDOS
if (read(joystick_fd, &joy_ctrl, sizeof(joy_ctrl)) != sizeof(joy_ctrl))
{
joystick_status = JOYSTICK_OFF;
setup.input[player_nr].joy.ymiddle = new_joystick_ymiddle;
CheckJoystickData();
+#endif
- joy = Joystick(player_nr);
+ joy_value = Joystick(player_nr);
- if (joy & JOY_BUTTON && check_remaining == 0)
+ if (joy_value & JOY_BUTTON && check_remaining == 0)
+ {
result = 1;
- x = (joy & JOY_LEFT ? -1 : joy & JOY_RIGHT ? +1 : 0);
- y = (joy & JOY_UP ? -1 : joy & JOY_DOWN ? +1 : 0);
+#ifdef MSDOS
+ if (calibration_step == 1)
+ {
+ remove_joystick();
+ InitJoysticks();
+ }
+ else if (calibrate_joystick(joystick_fd) != 0)
+ {
+ joystick_status = JOYSTICK_OFF;
+ goto error_out;
+ }
+
+ if (joy[joystick_fd].flags & JOYFLAG_CALIBRATE)
+ {
+ calibration_step++;
+ result = -1;
+
+ DrawText(SX, SY + 7*32, " MOVE JOYSTICK ", FS_BIG, FC_YELLOW);
+ DrawText(SX + 16, SY + 8*32, " TO ", FS_BIG, FC_YELLOW);
+
+ if (calibration_step == 2)
+ DrawText(SX + 16, SY + 9*32," THE UPPER LEFT ", FS_BIG, FC_YELLOW);
+ else
+ DrawText(SX, SY + 9*32," THE LOWER RIGHT ", FS_BIG, FC_YELLOW);
+
+ DrawText(SX, SY + 10*32, " AND ", FS_BIG, FC_YELLOW);
+ DrawText(SX, SY + 11*32, "PRESS ANY BUTTON!", FS_BIG, FC_YELLOW);
+
+ BackToFront();
+
+ while(Joystick(player_nr) & JOY_BUTTON)
+ DoAnimation();
+ }
+#endif
+ }
+
+ x = (joy_value & JOY_LEFT ? -1 : joy_value & JOY_RIGHT ? +1 : 0);
+ y = (joy_value & JOY_UP ? -1 : joy_value & JOY_DOWN ? +1 : 0);
if (x != last_x || y != last_y)
{
+#ifndef MSDOS
DrawGraphic(xpos + last_x, ypos + last_y, GFX_KUGEL_GELB);
+#else
+ DrawGraphic(xpos + last_x, ypos + last_y, GFX_KUGEL_BLAU);
+#endif
DrawGraphic(xpos + x, ypos + y, GFX_KUGEL_ROT);
last_x = x;
setup.input[player_nr].joy.ymiddle,
setup.input[player_nr].joy.ylower);
#endif
+
}
BackToFront();
error_out:
ClearWindow();
- DrawText(SX+16, SY+16, "NO JOYSTICK",FS_BIG,FC_YELLOW);
- DrawText(SX+16, SY+48, " AVAILABLE ",FS_BIG,FC_YELLOW);
+ DrawText(SX + 16, SY + 6*32, " JOYSTICK NOT ", FS_BIG, FC_YELLOW);
+ DrawText(SX, SY + 7*32, " AVAILABLE ", FS_BIG, FC_YELLOW);
BackToFront();
- Delay(3000);
+ Delay(2000);
DrawSetupInputScreen();
}
{
TapeStartRecording();
+#ifndef MSDOS
if (options.network)
SendToServer_StartPlaying();
else
+#endif
{
game_status = PLAYING;
InitGame();
if (Request("Do you really want to quit the game ?",
REQ_ASK | REQ_STAY_CLOSED))
{
+#ifndef MSDOS
if (options.network)
SendToServer_StopPlaying();
else
+#endif
{
game_status = MAINMENU;
DrawMainMenu();
case BUTTON_GAME_PAUSE:
if (options.network)
{
+#ifndef MSDOS
if (tape.pausing)
SendToServer_ContinuePlaying();
else
SendToServer_PausePlaying();
+#endif
}
else
TapeTogglePause();
case BUTTON_GAME_PLAY:
if (tape.pausing)
{
+#ifndef MSDOS
if (options.network)
SendToServer_ContinuePlaying();
else
+#endif
{
tape.pausing = FALSE;
DrawVideoDisplay(VIDEO_STATE_PAUSE_OFF,0);