Files

87 lines
1.7 KiB
C++

#pragma once
#ifndef DIRECTINPUT_VERSION
#define DIRECTINPUT_VERSION 0x0800
#endif
#include <dinput.h>
#include "CXDirectXInput.h"
enum ENUM_JOYSTICK_BUTTON
{
BUTTON_X_AXIS_LOCK=0,
BUTTON_Y_AXIS_LOCK=1,
BUTTON_Z_AXIS_LOCK=2,
BUTTON_ROTATETABLE_REFLECTOR=3,
BUTTON_RESERVED_1=4,
BUTTON_LASER_PEN=5,
BUTTON_SPEED_PLUS=6,
BUTTON_SPEED_MINUS=7,
BUTTON_MAX=8
};
enum ENUM_BUTTON_STATE
{
BUTTON_STATE_RELEASE=0,
BUTTON_STATE_PRESS=1
};
struct ENUM_JOYSTICK_BUTTON_STATE
{
ENUM_BUTTON_STATE buttonState;
BYTE lastValue;
};
enum ENUM_MOVE_STATE
{
MOVE_STATE_NONE=0,
MOVE_STATE_ROTATETABLE_CLOCKWISE,
MOVE_STATE_ROTATETABLE_ANTICLOCKWISE,
MOVE_STATE_REFLECTOR_LEFT,
MOVE_STATE_REFLECTOR_RIGHT,
MOVE_STATE_X_AXIS_LEFT,
MOVE_STATE_X_AXIS_RIGHT,
MOVE_STATE_Y_AXIS_UP,
MOVE_STATE_Y_AXIS_DOWN,
MOVE_STATE_Z_AXIS_UP,
MOVE_STATE_Z_AXIS_DOWN
};
struct JoystickControlState
{
ENUM_JOYSTICK_BUTTON_STATE joystickButtonStates[BUTTON_MAX];
int joystickSpeed;
};
class HSI_Joystick
{
public:
HSI_Joystick(LPVOID ptr);
~HSI_Joystick();
public:
HANDLE m_hSuspendEvent;
HANDLE m_ResumeEvent;
HANDLE m_hExitEvent;
HANDLE m_hExitNotifyEvent;
HANDLE handles[2];
ENUM_JOYSTICK_BUTTON_STATE joystickButtonStates[BUTTON_MAX];
int joystickSpeed;
JoystickControlState *joystickControlState;
ENUM_BUTTON_STATE laserPenLastState;
void UpdateJosstickData();
void SuspendJoyStickThread();
void ResumeJoyStickThread();
void SendJoystickControlState();
private:
bool m_bEnableJoyStick;
CXDirectXInput *m_pXDirectInput;
ENUM_MOVE_STATE m_eMoveState;
HANDLE m_hJoyStickThread;
void CreateJoyStickThread();
void DestoryJoyStickThread();
};extern HSI_Joystick *g_pHSI_JoyStick;