Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define WIN32_LEAN_AND_MEAN // We don't want the extra stuff like MFC and such
- #include <Windows.h>
- #include <XInput.h> // XInput API
- #pragma comment(lib, "XInput.lib") // Library. If your compiler doesn't support this type of lib include change to the corresponding one
- struct Vector2
- {
- float x;
- float y;
- void Vector2::set(float val)
- {
- this->x = val;
- this->y = val;
- }
- };
- typedef enum
- {
- Keyboard_SPACE = 32,
- Keyboard_ARROW_LEFT = 37,
- Keyboard_ARROW_UP = 38,
- Keyboard_ARROW_RIGHT = 39,
- Keyboard_ARROW_DOWN = 40
- }Keyboard;
- typedef enum
- {
- GamePad_Button_DPAD_UP = 0,
- GamePad_Button_DPAD_DOWN = 1,
- GamePad_Button_DPAD_LEFT = 2,
- GamePad_Button_DPAD_RIGHT = 3,
- GamePad_Button_START = 4,
- GamePad_Button_BACK = 5,
- GamePad_Button_LEFT_THUMB = 6,
- GamePad_Button_RIGHT_THUMB = 7,
- GamePad_Button_LEFT_SHOULDER = 8,
- GamePad_Button_RIGHT_SHOULDER = 9,
- GamePad_Button_A = 10,
- GamePad_Button_B = 11,
- GamePad_Button_X = 12,
- GamePad_Button_Y = 13,
- GamePadButton_Max = 14
- }GamePadButton;
- typedef enum
- {
- GamePadIndex_One = 0,
- GamePadIndex_Two = 1,
- GamePadIndex_Three =2,
- GamePadIndex_Four = 3
- }GamePadIndex;
- // The GamePad State Stuct, were we store the buttons positions
- struct GamePadState
- {
- bool _buttons[GamePadButton_Max];
- Vector2 _left_thumbstick;
- Vector2 _right_thumbstick;
- float _left_trigger;
- float _right_trigger;
- // Just to clear all values to default
- void reset()
- {
- for (int i=0;i<(int)GamePadButton_Max;++i){
- _buttons[i] = false;
- }
- _left_thumbstick.set(0.0f);
- _right_thumbstick.set(0.0f);
- _left_trigger = _right_trigger = 0.0f;
- }
- };
- class XboxController
- {
- public:
- GamePadState State;
- XboxController(GamePadIndex player);
- virtual ~XboxController(void);
- bool IsConnected();
- void Vibrate(int leftVal = 0,int rightVal = 0);
- void Update();
- private:
- XINPUT_STATE _controllerState;
- GamePadIndex _playerIndex;
- int _controllerNumber;
- };
Advertisement
Add Comment
Please, Sign In to add comment