/* LONG g_JoystickXStart = INT_MAX; LONG g_JoystickXEnd = INT_MIN; LONG g_JoystickYStart = INT_MAX; LONG g_JoystickYEnd = INT_MIN; */ //g_JoystickXStart = INT_MIN; //g_JoystickXEnd = INT_MAX; //g_JoystickYStart = INT_MAX; //g_JoystickYEnd = INT_MIN; void CRIOMAIN::UpdateJoystickX (DIJOYSTATE &js) { #define RANGE_JOYSTICK 1000L #define DEADZONE_JOYSTICK 30L LONG lJ; LONG JoystickX_Center = 0L; if ((g_JoystickX < -RANGE_JOYSTICK) || (g_JoystickX > RANGE_JOYSTICK)) { // error } else { // Set StartPosition if (g_JoystickXStart > g_JoystickX) g_JoystickXStart = g_JoystickX; // Set EndPosition if (g_JoystickXEnd < g_JoystickX) g_JoystickXEnd = g_JoystickX; if ((g_JoystickXStart + g_JoystickXEnd) != 0) { JoystickX_Center = (g_JoystickXStart + g_JoystickXEnd) / 2; } else { JoystickX_Center = 0L; } lJ = JoystickX_Center - g_JoystickX; if (lJ > 0) { lJ -= DEADZONE_JOYSTICK; } else if (lJ < 0) { lJ += DEADZONE_JOYSTICK; } if ((g_JoystickX < JoystickX_Center + DEADZONE_JOYSTICK) && (g_JoystickX > JoystickX_Center - DEADZONE_JOYSTICK)) { g_JoystickXLast = 0; } else { g_JoystickXLast = lJ * 15.0L; if (g_JoystickXLast < -1000L) { g_JoystickXLast = -1000L; } else if (g_JoystickXLast > 1000L) { g_JoystickXLast = 1000L; } } } if (g_lpJoystickXMode) { *g_lpJoystickXMode = g_JoystickXLast; } #if defined(_DEBUG) && 0 // watcom static char s_szStr[256]; sprintf (s_szStr, "@JOY_X@ RIO (%ld), CENTER (%ld),START (%ld), END (%ld), LAST (%ld) \n", g_JoystickX, JoystickX_Center, g_JoystickXStart, g_JoystickXEnd, g_JoystickXLast); ::OutputDebugString(s_szStr); #endif // watcom } void CRIOMAIN::UpdateJoystickY (DIJOYSTATE &js) { #define RANGE_JOYSTICK 1000L #define DEADZONE_JOYSTICK 30L LONG lJ; LONG JoystickY_Center = 0L; if ((g_JoystickY < -RANGE_JOYSTICK) || (g_JoystickY > RANGE_JOYSTICK)) { // error } else { // Set StartPosition if (g_JoystickYStart > g_JoystickY) g_JoystickYStart = g_JoystickY; // Set EndPosition if (g_JoystickYEnd < g_JoystickY) g_JoystickYEnd = g_JoystickY; // Set CenterPosition if ((g_JoystickYStart + g_JoystickYEnd) != 0) { JoystickY_Center = (g_JoystickYStart + g_JoystickYEnd) / 2; } else { JoystickY_Center = 0L; } lJ = JoystickY_Center - g_JoystickY; // °í°¨µµ // Dead Zone ¿¡¼­ ¹þ¾î³­ ½ÃÁ¡À» 0À¸·Î °è»êÇÑ´Ù if (lJ > 0) { lJ -= DEADZONE_JOYSTICK; } else if (lJ < 0) { lJ += DEADZONE_JOYSTICK; } if ((g_JoystickY < JoystickY_Center + DEADZONE_JOYSTICK) && (g_JoystickY > JoystickY_Center - DEADZONE_JOYSTICK)) { g_JoystickYLast = 0; } else { g_JoystickYLast = lJ * -15.0L; if (g_JoystickYLast < -1000L) { g_JoystickYLast = -1000L; } else if (g_JoystickYLast > 1000L) { g_JoystickYLast = 1000L; } } } js.lY = g_JoystickYLast; #if defined(_DEBUG) && 0 // watcom static char s_szStr[256]; sprintf (s_szStr, "@JOY_Y@ RIO (%ld), CENTER (%ld),START (%ld), END (%ld), LAST (%ld) \n", g_JoystickY, JoystickY_Center, g_JoystickYStart, g_JoystickYEnd, g_JoystickYLast); ::OutputDebugString(s_szStr); #endif // watcom } /* void CRIOMAIN::UpdateJoystick (DIJOYSTATE &js) { #define DEADZONE_JOYSTICK 20L //* // == JOYSTICK == // LEFT (+) - RIGHT (-) // UP (-) - DOWN (+) // if (g_lpJoystickXMode) { if (g_JoystickX > DEADZONE_JOYSTICK || g_JoystickX < -DEADZONE_JOYSTICK) { *g_lpJoystickXMode = g_JoystickX * -10; } else { *g_lpJoystickXMode = 0; } } if (g_JoystickY > DEADZONE_JOYSTICK || g_JoystickY < -DEADZONE_JOYSTICK) { js.lY = g_JoystickY * 10; } else { js.lY = 0; } #if defined(_DEBUG) && 0 // watcom static char s_szStr[256]; sprintf (s_szStr, "x:[%ld], y:[%ld], z:[%ld]\n", g_JoystickX, g_JoystickY, js.lRz); ::OutputDebugString(s_szStr); #endif // watcom } */