- while (result < 0)
- {
- while (PendingEvent()) /* got event */
- {
- Event event;
-
- NextEvent(&event);
-
- switch (event.type)
- {
- case EVENT_KEYPRESS:
- switch (GetEventKey((KeyEvent *)&event, TRUE))
- {
- case KSYM_Return:
- if (check_remaining == 0)
- result = 1;
- break;
-
- case KSYM_Escape:
- FadeSkipNextFadeIn();
- result = 0;
- break;
-
- default:
- break;
- }
- break;
-
- case EVENT_KEYRELEASE:
- key_joystick_mapping = 0;
- break;
-
- default:
- HandleOtherEvents(&event);
- break;
- }
- }
-
- if (!ReadJoystick(joystick_nr, &joy_x, &joy_y, NULL, NULL))
- return FALSE;
-
- new_joystick_xleft = MIN(new_joystick_xleft, joy_x);
- new_joystick_xright = MAX(new_joystick_xright, joy_x);
- new_joystick_yupper = MIN(new_joystick_yupper, joy_y);
- new_joystick_ylower = MAX(new_joystick_ylower, joy_y);
-
- setup.input[player_nr].joy.xleft = new_joystick_xleft;
- setup.input[player_nr].joy.yupper = new_joystick_yupper;
- setup.input[player_nr].joy.xright = new_joystick_xright;
- setup.input[player_nr].joy.ylower = new_joystick_ylower;
- setup.input[player_nr].joy.xmiddle = new_joystick_xmiddle;
- setup.input[player_nr].joy.ymiddle = new_joystick_ymiddle;
-
- CheckJoystickData();
-
- joy_value = JoystickExt(joystick_nr, TRUE);
-
- if (joy_value & JOY_BUTTON && check_remaining == 0)
- result = 1;
-
- 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)
- {
- DrawFixedGraphic(xpos + last_x, ypos + last_y,
- IMG_MENU_CALIBRATE_YELLOW, 0);
- DrawFixedGraphic(xpos + x, ypos + y,
- IMG_MENU_CALIBRATE_RED, 0);
-
- last_x = x;
- last_y = y;
-
- if (check_remaining > 0 && !check[x+1][y+1])
- {
- check[x+1][y+1] = TRUE;
- check_remaining--;
- }
- }
-
- BackToFront();
- }
-
- /* calibrated center position (joystick should now be centered) */
- 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 (JoystickExt(joystick_nr, TRUE) & JOY_BUTTON)
- {
- if (PendingEvent()) /* got event */
- {
- Event event;
-
- NextEvent(&event);
- HandleOtherEvents(&event);
-
- BackToFront();
- }
- }
-
- return TRUE;
-}
-#endif
-
-/* game controller mapping generator by Gabriel Jacobo <gabomdq@gmail.com> */
-
-#define MARKER_BUTTON 1
-#define MARKER_AXIS_X 2
-#define MARKER_AXIS_Y 3
-
-static boolean ConfigureJoystickMapButtonsAndAxes(SDL_Joystick *joystick)
-{
-#if defined(TARGET_SDL2)
- static Bitmap *controller, *button, *axis_x, *axis_y;
- Bitmap *marker;
- boolean bitmaps_initialized = FALSE;
- boolean screen_initialized = FALSE;
- const char *name = NULL;
- boolean success = TRUE;
- boolean done = FALSE, next = FALSE;
- Event event;
- int alpha = 200, alpha_step = -1;
- int alpha_ticks = 0;
- char mapping[4096], temp[4096];
- int i, j;
-
- struct
- {
- int x, y;
- int marker;
- char *field;
- int axis, button, hat, hat_value;
- char mapping[4096];
- }
- *step, *prev_step, steps[] =
- {
- { 370, 175, MARKER_BUTTON, "a", },
- { 410, 142, MARKER_BUTTON, "b", },
- { 334, 145, MARKER_BUTTON, "x", },
- { 372, 115, MARKER_BUTTON, "y", },
- { 176, 145, MARKER_BUTTON, "back", },
- { 230, 145, MARKER_BUTTON, "guide", },
- { 285, 145, MARKER_BUTTON, "start", },
- { 124, 220, MARKER_BUTTON, "dpleft", },
- { 160, 248, MARKER_BUTTON, "dpdown", },
- { 192, 220, MARKER_BUTTON, "dpright", },
- { 160, 192, MARKER_BUTTON, "dpup", },
- { 64, 60, MARKER_BUTTON, "leftshoulder", },
- { 102, 10, MARKER_AXIS_Y, "lefttrigger", },
- { 396, 60, MARKER_BUTTON, "rightshoulder", },
- { 360, 10, MARKER_AXIS_Y, "righttrigger", },
- { 87, 161, MARKER_BUTTON, "leftstick", },
- { 296, 230, MARKER_BUTTON, "rightstick", },
- { 87, 161, MARKER_AXIS_X, "leftx", },
- { 87, 161, MARKER_AXIS_Y, "lefty", },
- { 296, 230, MARKER_AXIS_X, "rightx", },
- { 296, 230, MARKER_AXIS_Y, "righty", },
- };
-
- unsigned int event_frame_delay = 0;
- unsigned int event_frame_delay_value = GAME_FRAME_DELAY;
-
- ResetDelayCounter(&event_frame_delay);
-
- if (!bitmaps_initialized)