iw4x-client/src/Components/Modules/Gamepad.hpp

83 lines
2.3 KiB
C++
Raw Normal View History

2021-01-02 01:49:45 -05:00
#pragma once
namespace Components
{
class XInput : public Component
{
public:
XInput();
struct ActionMapping {
int input;
std::string action;
bool isReversible;
bool wasPressed = false;
bool spamWhenHeld = false;
ActionMapping(int input, std::string action, bool isReversible = true, bool spamWhenHeld = false)
{
this->action = action;
this->isReversible = isReversible;
this->input = input;
this->spamWhenHeld = spamWhenHeld;
}
};
2021-05-04 09:47:46 -04:00
struct MenuMapping {
int input;
Game::keyNum_t keystroke;
bool wasPressed = false;
MenuMapping(int input, Game::keyNum_t keystroke)
{
this->keystroke = keystroke;
this->input = input;
}
};
2021-01-02 01:49:45 -05:00
private:
2021-01-02 02:17:37 -05:00
static XINPUT_STATE xiStates[XUSER_MAX_COUNT];
2021-01-02 14:42:52 -05:00
static int xiPlayerNum;
static XINPUT_STATE lastXiState;
static bool isHoldingMaxLookX;
static std::chrono::milliseconds timeAtFirstHeldMaxLookX;
static bool isADS;
2021-05-04 09:47:46 -04:00
static std::chrono::milliseconds lastNavigationTime;
static std::chrono::milliseconds msBetweenNavigations;
static float lastMenuNavigationDirection;
2021-08-14 07:51:22 -04:00
static Dvar::Var XInput::xpadSensitivity;
static Dvar::Var XInput::xpadEarlyTime;
static Dvar::Var XInput::xpadEarlyMultiplier;
static Dvar::Var XInput::xpadHorizontalMultiplier;
static Dvar::Var XInput::xpadVerticalMultiplier;
static Dvar::Var XInput::xpadAdsMultiplier;
static void CL_GetMouseMovementCl(Game::clientActive_t* result, float* mx, float* my);
static int unk_CheckKeyHook(int localClientNum, Game::keyNum_t keyCode);
static void MouseOverride(Game::clientActive_t* clientActive, float* my, float* mx);
static void Vibrate(int leftVal = 0, int rightVal = 0);
2021-01-02 02:17:37 -05:00
static void CL_FrameStub();
static void PollXInputDevices();
static void CL_CreateCmdStub();
static void CL_GamepadMove(int, Game::usercmd_s*);
2021-05-04 09:47:46 -04:00
static void MenuNavigate();
static void MSG_WriteDeltaUsercmdKeyStub();
static void ApplyMovement(Game::msg_t* msg, int key, Game::usercmd_s* from, Game::usercmd_s* to);
static void MSG_ReadDeltaUsercmdKeyStub();
static void MSG_ReadDeltaUsercmdKeyStub2();
static void GetLeftStick01Value(XINPUT_STATE* xiState, float& x, float& y);
static void GetRightStick01Value(XINPUT_STATE* xiState, float& x, float& y);
static void GamepadStickTo01(SHORT value, SHORT deadzone, float& output01);
};
2021-01-02 01:49:45 -05:00
}