X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Fscreens.c;h=d9abbb6f5b822b4ed7b99dad6d95dbea52c001b3;hp=c1f16489bb517140b3a8a9ea554370ef76d5ed9c;hb=0d214d4e314f6f42df24be140bb433e980319767;hpb=5c5685a92a0ca8060018c4d035e6b37fea7e0f5a diff --git a/src/screens.c b/src/screens.c index c1f16489..d9abbb6f 100644 --- a/src/screens.c +++ b/src/screens.c @@ -1413,7 +1413,6 @@ void DrawMainMenu() ExpireSoundLoops(FALSE); KeyboardAutoRepeatOn(); - ActivateJoystick(); audio.sound_deactivated = FALSE; @@ -4146,9 +4145,9 @@ void DrawChooseLevelNr() LevelStats_getSolved(i) ? FC_GREEN : LevelStats_getPlayed(i) ? FC_YELLOW : FC_RED); - sprintf(identifier, "%d", value); - sprintf(name, "%03d: %s", value, - (level.no_level_file ? "(no file)" : level.name)); + snprintf(identifier, sizeof(identifier), "%d", value); + snprintf(name, sizeof(name), "%03d: %s", value, + (level.no_level_file ? "(no file)" : level.name)); setString(&ti->identifier, identifier); setString(&ti->name, name); @@ -4190,7 +4189,6 @@ void DrawHallOfFame(int highlight_position) /* (this is needed when called from GameEnd() after winning a game) */ KeyboardAutoRepeatOn(); - ActivateJoystick(); /* (this is needed when called from GameEnd() after winning a game) */ SetDrawDeactivationMask(REDRAW_NONE); @@ -4198,6 +4196,8 @@ void DrawHallOfFame(int highlight_position) if (highlight_position < 0) LoadScore(level_nr); + else + SetAnimStatus(GAME_MODE_PSEUDO_SCORESNEW); FadeSetEnterScreen(); @@ -5237,14 +5237,12 @@ static void execSetupChooseMusic() DrawSetupScreen(); } -#if !defined(PLATFORM_ANDROID) static void execSetupInput() { setup_mode = SETUP_MODE_INPUT; DrawSetupScreen(); } -#endif static void execSetupShortcuts() { @@ -5308,12 +5306,8 @@ static struct TokenInfo setup_info_main[] = { TYPE_ENTER_MENU, execSetupGraphics, "Graphics" }, { TYPE_ENTER_MENU, execSetupSound, "Sound & Music" }, { TYPE_ENTER_MENU, execSetupArtwork, "Custom Artwork" }, -#if !defined(PLATFORM_ANDROID) { TYPE_ENTER_MENU, execSetupInput, "Input Devices" }, { TYPE_ENTER_MENU, execSetupTouch, "Touch Controls" }, -#else - { TYPE_ENTER_MENU, execSetupTouch, "Touch Controls" }, -#endif { TYPE_ENTER_MENU, execSetupShortcuts, "Key Shortcuts" }, { TYPE_EMPTY, NULL, "" }, { TYPE_LEAVE_MENU, execExitSetup, "Exit" }, @@ -5326,9 +5320,10 @@ static struct TokenInfo setup_info_game[] = { { TYPE_SWITCH, &setup.team_mode, "Team-Mode (Multi-Player):" }, { TYPE_YES_NO, &setup.input_on_focus, "Only Move Focussed Player:" }, + { TYPE_SWITCH, &setup.time_limit, "Time Limit:" }, { TYPE_SWITCH, &setup.handicap, "Handicap:" }, { TYPE_SWITCH, &setup.skip_levels, "Skip Unsolved Levels:" }, - { TYPE_SWITCH, &setup.time_limit, "Time Limit:" }, + { TYPE_SWITCH, &setup.increment_levels,"Increment Solved Levels:" }, { TYPE_SWITCH, &setup.autorecord, "Auto-Record Tapes:" }, { TYPE_ENTER_LIST, execSetupChooseGameSpeed, "Game Speed:" }, { TYPE_STRING, &game_speed_text, "" }, @@ -5953,9 +5948,6 @@ void DrawSetupScreen_Input() DrawTextSCentered(mSY - SY + 16, FONT_TITLE_1, "Setup Input"); - DrawTextSCentered(SYSIZE - 20, FONT_TITLE_2, - "Joysticks deactivated on this screen"); - for (i = 0; setup_info[i].type != 0 && i < MAX_MENU_ENTRIES_ON_SCREEN; i++) { if (setup_info[i].type & (TYPE_ENTER_MENU|TYPE_ENTER_LIST)) @@ -6027,8 +6019,6 @@ static void drawPlayerSetupInputInfo(int player_nr, boolean active) }; int text_font_nr = (active ? FONT_MENU_1_ACTIVE : FONT_MENU_1); - InitJoysticks(); - custom_key = setup.input[player_nr].key; DrawText(mSX + 11 * 32, mSY + 2 * 32, int2str(player_nr + 1, 1), @@ -6042,8 +6032,10 @@ static void drawPlayerSetupInputInfo(int player_nr, boolean active) if (setup.input[player_nr].use_joystick) { char *device_name = setup.input[player_nr].joy.device_name; - char *text = joystick_name[getJoystickNrFromDeviceName(device_name)]; - int font_nr = (joystick.fd[player_nr] < 0 ? FONT_VALUE_OLD : FONT_VALUE_1); + int joystick_nr = getJoystickNrFromDeviceName(device_name); + boolean joystick_active = CheckJoystickOpened(joystick_nr); + char *text = joystick_name[joystick_nr]; + int font_nr = (joystick_active ? FONT_VALUE_1 : FONT_VALUE_OLD); DrawText(mSX + 8 * 32, mSY + 3 * 32, text, font_nr); DrawText(mSX + 32, mSY + 4 * 32, "Calibrate", text_font_nr); @@ -6198,10 +6190,7 @@ void HandleSetupScreen_Input(int mx, int my, int dx, int dy, int button) else if (y == 2) { if (setup.input[input_player_nr].use_joystick) - { - InitJoysticks(); CalibrateJoystick(input_player_nr); - } else CustomizeKeyboard(input_player_nr); } @@ -6356,7 +6345,10 @@ static boolean CalibrateJoystickMain(int player_nr) int new_joystick_ylower = JOYSTICK_YMIDDLE; int new_joystick_xmiddle, new_joystick_ymiddle; - int joystick_fd = joystick.fd[player_nr]; + char *device_name = setup.input[player_nr].joy.device_name; + int joystick_nr = getJoystickNrFromDeviceName(device_name); + boolean joystick_active = CheckJoystickOpened(joystick_nr); + int x, y, last_x, last_y, xpos = 8, ypos = 3; boolean check[3][3]; int check_remaining = 3 * 3; @@ -6367,7 +6359,7 @@ static boolean CalibrateJoystickMain(int player_nr) if (joystick.status == JOYSTICK_NOT_AVAILABLE) return FALSE; - if (joystick_fd < 0 || !setup.input[player_nr].use_joystick) + if (!joystick_active || !setup.input[player_nr].use_joystick) return FALSE; FadeSetEnterMenu(); @@ -6392,12 +6384,12 @@ static boolean CalibrateJoystickMain(int player_nr) DrawTextSCentered(mSY - SY + 12 * 32, FONT_TITLE_1, "and"); DrawTextSCentered(mSY - SY + 13 * 32, FONT_TITLE_1, "press any button!"); - joy_value = Joystick(player_nr); + joy_value = JoystickExt(joystick_nr, TRUE); 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); /* eventually uncalibrated center position (joystick could be uncentered) */ - if (!ReadJoystick(joystick_fd, &joy_x, &joy_y, NULL, NULL)) + if (!ReadJoystick(joystick_nr, &joy_x, &joy_y, NULL, NULL)) return FALSE; new_joystick_xmiddle = joy_x; @@ -6407,11 +6399,12 @@ static boolean CalibrateJoystickMain(int player_nr) FadeIn(REDRAW_FIELD); - while (Joystick(player_nr) & JOY_BUTTON); /* wait for released button */ + /* wait for potentially still pressed button to be released */ + while (JoystickExt(joystick_nr, TRUE) & JOY_BUTTON); while (result < 0) { - if (PendingEvent()) /* got event */ + while (PendingEvent()) /* got event */ { Event event; @@ -6447,7 +6440,7 @@ static boolean CalibrateJoystickMain(int player_nr) } } - if (!ReadJoystick(joystick_fd, &joy_x, &joy_y, NULL, NULL)) + if (!ReadJoystick(joystick_nr, &joy_x, &joy_y, NULL, NULL)) return FALSE; new_joystick_xleft = MIN(new_joystick_xleft, joy_x); @@ -6464,7 +6457,7 @@ static boolean CalibrateJoystickMain(int player_nr) CheckJoystickData(); - joy_value = Joystick(player_nr); + joy_value = JoystickExt(joystick_nr, TRUE); if (joy_value & JOY_BUTTON && check_remaining == 0) result = 1; @@ -6493,14 +6486,14 @@ static boolean CalibrateJoystickMain(int player_nr) } /* calibrated center position (joystick should now be centered) */ - if (!ReadJoystick(joystick_fd, &joy_x, &joy_y, NULL, NULL)) + if (!ReadJoystick(joystick_nr, &joy_x, &joy_y, NULL, NULL)) return FALSE; new_joystick_xmiddle = joy_x; new_joystick_ymiddle = joy_y; /* wait until the last pressed button was released */ - while (Joystick(player_nr) & JOY_BUTTON) + while (JoystickExt(joystick_nr, TRUE) & JOY_BUTTON) { if (PendingEvent()) /* got event */ { @@ -6541,8 +6534,6 @@ void CalibrateJoystick(int player_nr) void DrawSetupScreen() { - DeactivateJoystick(); - if (setup_mode == SETUP_MODE_INPUT) DrawSetupScreen_Input(); else if (setup_mode == SETUP_MODE_CHOOSE_GAME_SPEED)