\constfunc{int}{GetButtonState}{\void}
-Returns the state of the joystick buttons. A bitlist of wxJOY\_BUTTONn identifiers,
-where n is 1, 2, 3 or 4.
+Returns the state of the joystick buttons. Every button is mapped to a single
+bit in the returned integer, with the first button being mapped to the least
+significant bit, and so on.
+A bitlist of wxJOY\_BUTTONn identifiers, where n is 1, 2, 3 or 4
+is available for historical reasons.
\membersection{wxJoystick::GetManufacturerId}\label{wxjoystickgetmanufacturerid}
\constfunc{int}{GetPOVPosition}{\void}
-Returns the point-of-view position, expressed in discrete units.
+Returns the point-of-view position, expressed in continuous, one-hundredth of a degree units,
+but limited to return 0, 9000, 18000 or 27000.
+Returns -1 on error.
\membersection{wxJoystick::GetPOVCTSPosition}\label{wxjoystickgetpovctsposition}
\constfunc{int}{GetPOVCTSPosition}{\void}
Returns the point-of-view position, expressed in continuous, one-hundredth of a degree units.
+Returns -1 on error.
\membersection{wxJoystick::GetRudderMax}\label{wxjoystickgetruddermax}
* Public interface
*/
- wxJoystick(int joystick = wxJOYSTICK1) { m_joystick = joystick; };
+ wxJoystick(int joystick = wxJOYSTICK1);
// Attributes
////////////////////////////////////////////////////////////////////////////
// Capabilities
////////////////////////////////////////////////////////////////////////////
+ static int GetNumberJoysticks(void);
+
bool IsOk(void) const; // Checks that the joystick is functioning
- int GetNumberJoysticks(void) const ;
int GetManufacturerId(void) const ;
int GetProductId(void) const ;
wxString GetProductName(void) const ;
// Attributes
////////////////////////////////////////////////////////////////////////////
+/**
+ johan@linkdata.se 2002-08-20:
+ Now returns only valid, functioning
+ joysticks, counting from the first
+ available and upwards.
+*/
+wxJoystick::wxJoystick(int joystick = wxJOYSTICK1)
+{
+ JOYINFO joyInfo;
+ int i, maxsticks;
+
+ maxsticks = joyGetNumDevs();
+ for( i=0; i<maxsticks; i++ )
+ {
+ if( joyGetPos(i, & joyInfo) == JOYERR_NOERROR )
+ {
+ if( !joystick )
+ {
+ /* Found the one we want, store actual OS id and return */
+ m_joystick = i;
+ return;
+ }
+ joystick --;
+ }
+ }
+
+ /* No such joystick, return ID 0 */
+ m_joystick = 0;
+ return;
+};
+
wxPoint wxJoystick::GetPosition() const
{
JOYINFO joyInfo;
return 0;
}
+/**
+ johan@linkdata.se 2002-08-20:
+ Return a bitmap with all button states in it,
+ like the GTK version does and Win32 does.
+*/
int wxJoystick::GetButtonState() const
{
JOYINFO joyInfo;
MMRESULT res = joyGetPos(m_joystick, & joyInfo);
if (res == JOYERR_NOERROR )
{
+ return joyInfo.wButtons;
+#if 0
int buttons = 0;
if (joyInfo.wButtons & JOY_BUTTON1)
buttons |= wxJOY_BUTTON3;
if (joyInfo.wButtons & JOY_BUTTON4)
buttons |= wxJOY_BUTTON4;
+
return buttons;
+#endif
}
else
return 0;
}
+/**
+ JLI 2002-08-20:
+ Returns -1 to signify error.
+*/
int wxJoystick::GetPOVPosition() const
{
#ifndef NO_JOYGETPOSEX
return joyInfo.dwPOV;
}
else
- return 0;
+ return -1;
#else
- return 0;
+ return -1;
#endif
}
+/**
+ johan@linkdata.se 2002-08-20:
+ Returns -1 to signify error.
+*/
int wxJoystick::GetPOVCTSPosition() const
{
#ifndef NO_JOYGETPOSEX
return joyInfo.dwPOV;
}
else
- return 0;
+ return -1;
#else
- return 0;
+ return -1;
#endif
}
// Capabilities
////////////////////////////////////////////////////////////////////////////
-bool wxJoystick::IsOk() const
+/**
+ johan@linkdata.se 2002-08-20:
+ Now returns the number of connected, functioning
+ joysticks, as intended.
+*/
+int wxJoystick::GetNumberJoysticks()
{
JOYINFO joyInfo;
- MMRESULT res = joyGetPos(m_joystick, & joyInfo);
- return ((joyGetNumDevs() > 0) || (res == JOYERR_NOERROR));
-}
-
-int wxJoystick::GetNumberJoysticks() const
+ int i, maxsticks, actualsticks;
+ maxsticks = joyGetNumDevs();
+ actualsticks = 0;
+ for( i=0; i<maxsticks; i++ )
+ {
+ if( joyGetPos( i, & joyInfo ) == JOYERR_NOERROR )
+ {
+ actualsticks ++;
+ }
+ }
+ return actualsticks;
+}
+
+/**
+ johan@linkdata.se 2002-08-20:
+ The old code returned true if there were any
+ joystick capable drivers loaded (=always).
+*/
+bool wxJoystick::IsOk() const
{
- return joyGetNumDevs();
+ JOYINFO joyInfo;
+ return (joyGetPos(m_joystick, & joyInfo) == JOYERR_NOERROR);
}
int wxJoystick::GetManufacturerId() const