mirror of
https://git.rip/DMCA_FUCKER/re3.git
synced 2024-12-23 08:50:00 +00:00
XInput
This commit is contained in:
parent
29f69f6216
commit
43b092033c
|
@ -5,6 +5,10 @@
|
||||||
#pragma warning( pop )
|
#pragma warning( pop )
|
||||||
|
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
#ifdef XINPUT
|
||||||
|
#include <Xinput.h>
|
||||||
|
#pragma comment( lib, "Xinput.lib" )
|
||||||
|
#endif
|
||||||
#include "patcher.h"
|
#include "patcher.h"
|
||||||
#include "Pad.h"
|
#include "Pad.h"
|
||||||
#include "ControllerConfig.h"
|
#include "ControllerConfig.h"
|
||||||
|
@ -547,12 +551,60 @@ void CPad::AddToPCCheatString(char c)
|
||||||
#undef _CHEATCMP
|
#undef _CHEATCMP
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef XINPUT
|
||||||
|
void CPad::AffectFromXinput(uint32 pad)
|
||||||
|
{
|
||||||
|
XINPUT_STATE xstate;
|
||||||
|
memset(&xstate, 0, sizeof(XINPUT_STATE));
|
||||||
|
if (XInputGetState(pad, &xstate) == ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
PCTempJoyState.Circle = (xstate.Gamepad.wButtons & XINPUT_GAMEPAD_B) ? 255 : 0;
|
||||||
|
PCTempJoyState.Cross = (xstate.Gamepad.wButtons & XINPUT_GAMEPAD_A) ? 255 : 0;
|
||||||
|
PCTempJoyState.Square = (xstate.Gamepad.wButtons & XINPUT_GAMEPAD_X) ? 255 : 0;
|
||||||
|
PCTempJoyState.Triangle = (xstate.Gamepad.wButtons & XINPUT_GAMEPAD_Y) ? 255 : 0;
|
||||||
|
PCTempJoyState.DPadDown = (xstate.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_DOWN) ? 255 : 0;
|
||||||
|
PCTempJoyState.DPadLeft = (xstate.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_LEFT) ? 255 : 0;
|
||||||
|
PCTempJoyState.DPadRight = (xstate.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_RIGHT) ? 255 : 0;
|
||||||
|
PCTempJoyState.DPadUp = (xstate.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_UP) ? 255 : 0;
|
||||||
|
PCTempJoyState.LeftShock = (xstate.Gamepad.wButtons & XINPUT_GAMEPAD_LEFT_THUMB) ? 255 : 0;
|
||||||
|
PCTempJoyState.LeftShoulder1 = (xstate.Gamepad.wButtons & XINPUT_GAMEPAD_LEFT_SHOULDER) ? 255 : 0;
|
||||||
|
PCTempJoyState.LeftShoulder2 = xstate.Gamepad.bLeftTrigger;
|
||||||
|
PCTempJoyState.RightShock = (xstate.Gamepad.wButtons & XINPUT_GAMEPAD_RIGHT_THUMB) ? 255 : 0;
|
||||||
|
PCTempJoyState.RightShoulder1 = (xstate.Gamepad.wButtons & XINPUT_GAMEPAD_RIGHT_SHOULDER) ? 255 : 0;
|
||||||
|
PCTempJoyState.RightShoulder2 = xstate.Gamepad.bRightTrigger;
|
||||||
|
|
||||||
|
PCTempJoyState.Select = (xstate.Gamepad.wButtons & XINPUT_GAMEPAD_BACK) ? 255 : 0;
|
||||||
|
PCTempJoyState.Start = (xstate.Gamepad.wButtons & XINPUT_GAMEPAD_START) ? 255 : 0;
|
||||||
|
|
||||||
|
float lx = (float)xstate.Gamepad.sThumbLX / (float)0x7FFF;
|
||||||
|
float ly = (float)xstate.Gamepad.sThumbLY / (float)0x7FFF;
|
||||||
|
float rx = (float)xstate.Gamepad.sThumbRX / (float)0x7FFF;
|
||||||
|
float ry = (float)xstate.Gamepad.sThumbRY / (float)0x7FFF;
|
||||||
|
|
||||||
|
if (Abs(lx) > 0.3f || Abs(ly) > 0.3f) {
|
||||||
|
PCTempJoyState.LeftStickX = (int32)(lx * 128.0f);
|
||||||
|
PCTempJoyState.LeftStickY = (int32)(-ly * 128.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Abs(rx) > 0.3f || Abs(ry) > 0.3f) {
|
||||||
|
PCTempJoyState.RightStickX = (int32)(rx * 128.0f);
|
||||||
|
PCTempJoyState.RightStickY = (int32)(ry * 128.0f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void CPad::UpdatePads(void)
|
void CPad::UpdatePads(void)
|
||||||
{
|
{
|
||||||
bool bUpdate = true;
|
bool bUpdate = true;
|
||||||
|
|
||||||
GetPad(0)->UpdateMouse();
|
GetPad(0)->UpdateMouse();
|
||||||
|
#ifdef XINPUT
|
||||||
|
GetPad(0)->AffectFromXinput(0);
|
||||||
|
GetPad(1)->AffectFromXinput(1);
|
||||||
|
#else
|
||||||
CapturePad(0);
|
CapturePad(0);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
ControlsManager.ClearSimButtonPressCheckers();
|
ControlsManager.ClearSimButtonPressCheckers();
|
||||||
|
@ -567,8 +619,10 @@ void CPad::UpdatePads(void)
|
||||||
GetPad(0)->Update(0);
|
GetPad(0)->Update(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(MASTER) && !defined(XINPUT)
|
||||||
GetPad(1)->NewState.Clear();
|
GetPad(1)->NewState.Clear();
|
||||||
GetPad(1)->OldState.Clear();
|
GetPad(1)->OldState.Clear();
|
||||||
|
#endif
|
||||||
|
|
||||||
OldKeyState = NewKeyState;
|
OldKeyState = NewKeyState;
|
||||||
NewKeyState = TempKeyState;
|
NewKeyState = TempKeyState;
|
||||||
|
|
|
@ -247,6 +247,10 @@ public:
|
||||||
static char *EditString(char *pStr, int32 nSize);
|
static char *EditString(char *pStr, int32 nSize);
|
||||||
static int32 *EditCodesForControls(int32 *pRsKeys, int32 nSize);
|
static int32 *EditCodesForControls(int32 *pRsKeys, int32 nSize);
|
||||||
|
|
||||||
|
#ifdef XINPUT
|
||||||
|
void AffectFromXinput(uint32 pad);
|
||||||
|
#endif
|
||||||
|
|
||||||
// mouse
|
// mouse
|
||||||
bool GetLeftMouseJustDown() { return !!(NewMouseControllerState.LMB && !OldMouseControllerState.LMB); }
|
bool GetLeftMouseJustDown() { return !!(NewMouseControllerState.LMB && !OldMouseControllerState.LMB); }
|
||||||
bool GetRightMouseJustDown() { return !!(NewMouseControllerState.RMB && !OldMouseControllerState.RMB); }
|
bool GetRightMouseJustDown() { return !!(NewMouseControllerState.RMB && !OldMouseControllerState.RMB); }
|
||||||
|
|
|
@ -174,6 +174,7 @@ enum Config {
|
||||||
#define TOGGLEABLE_BETA_FEATURES // toggleable from debug menu. not too many things
|
#define TOGGLEABLE_BETA_FEATURES // toggleable from debug menu. not too many things
|
||||||
|
|
||||||
// Pad
|
// Pad
|
||||||
|
#define XINPUT
|
||||||
#define KANGAROO_CHEAT
|
#define KANGAROO_CHEAT
|
||||||
#define REGISTER_START_BUTTON // currently only in menu sadly. resumes the game
|
#define REGISTER_START_BUTTON // currently only in menu sadly. resumes the game
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue