merge cafeberry/main (keep ported KBM input)
This commit is contained in:
commit
e5530005a2
50 files changed
+1938
-547
No files matched your search
@@ -85,8 +85,8 @@ void CForceFeedback::AddRumble(unsigned int uiPad, WORD leftMotorSpeed, WORD rig
|
||||
QueryPerformanceCounter(&qwCurrentTime);
|
||||
|
||||
pRumble->m_TimeLeft = (m_TicksPerSecond * fSeconds) + qwCurrentTime.QuadPart;
|
||||
pRumble->m_RumbleData.wLeftMotorSpeed = leftMotorSpeed;
|
||||
pRumble->m_RumbleData.wRightMotorSpeed = rightMotorSpeed;
|
||||
pRumble->m_LowFreqRumble = leftMotorSpeed;
|
||||
pRumble->m_HighFreqRumble = rightMotorSpeed;
|
||||
pRumble->m_Pad = uiPad;
|
||||
|
||||
m_RumbleList.AddToTail(pRumble);
|
||||
@@ -108,14 +108,15 @@ void CForceFeedback::Tick(void)
|
||||
LinkedList::_LL_NODE *pRumbleNode = m_RumbleList.m_Head;
|
||||
while (pRumbleNode)
|
||||
{
|
||||
if (pRumbleNode->GetDataAs<RUMBLE_EFFECT>()->m_TimeLeft <= qwCurrentTime.QuadPart)
|
||||
RUMBLE_EFFECT *pRumble = pRumbleNode->GetDataAs<RUMBLE_EFFECT>();
|
||||
SDL_Gamepad* m_pGamepad = SDL_GetGamepadFromPlayerIndex(pRumble->m_Pad);
|
||||
|
||||
if (pRumble->m_TimeLeft <= qwCurrentTime.QuadPart)
|
||||
{
|
||||
RUMBLE_EFFECT *pRumble = pRumbleNode->GetDataAs<RUMBLE_EFFECT>();
|
||||
pRumble->m_LowFreqRumble = 0;
|
||||
pRumble->m_HighFreqRumble = 0;
|
||||
|
||||
pRumble->m_RumbleData.wLeftMotorSpeed = 0;
|
||||
pRumble->m_RumbleData.wRightMotorSpeed = 0;
|
||||
|
||||
XInputSetState(pRumble->m_Pad, &pRumble->m_RumbleData);
|
||||
if (m_pGamepad != nullptr) SDL_RumbleGamepad(m_pGamepad, 0, 0, 0);
|
||||
|
||||
m_RumbleList.RemoveNode(pRumbleNode);
|
||||
|
||||
@@ -127,7 +128,7 @@ void CForceFeedback::Tick(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
XInputSetState(pRumbleNode->GetDataAs<RUMBLE_EFFECT>()->m_Pad, &pRumbleNode->GetDataAs<RUMBLE_EFFECT>()->m_RumbleData);
|
||||
if (m_pGamepad != nullptr) SDL_RumbleGamepad(m_pGamepad, pRumble->m_LowFreqRumble, pRumble->m_HighFreqRumble, 30000);
|
||||
pRumbleNode = pRumbleNode->m_Next;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@ SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "LinkedList.h"
|
||||
#include "SDL3\SDL_gamepad.h"
|
||||
|
||||
#define MAX_EFFECTS 10
|
||||
|
||||
@@ -38,9 +39,10 @@ public:
|
||||
|
||||
struct RUMBLE_EFFECT
|
||||
{
|
||||
DWORD m_Pad;
|
||||
int m_Pad;
|
||||
uint64_t m_TimeLeft;
|
||||
XINPUT_VIBRATION m_RumbleData;
|
||||
uint16_t m_LowFreqRumble;
|
||||
uint16_t m_HighFreqRumble;
|
||||
WORD unk;
|
||||
};
|
||||
|
||||
|
||||
@@ -27,10 +27,11 @@ SOFTWARE.
|
||||
|
||||
CInput InternalInputManager;
|
||||
|
||||
bool m_SelectBackSwapped = false;
|
||||
|
||||
CInput::CInput()
|
||||
{
|
||||
m_Keyboard = CKeyboard();
|
||||
m_bSelectBackSwapped = false;
|
||||
|
||||
m_uiSigninJoypadMask = 0;
|
||||
for (int i = 0; i < 4; ++i)
|
||||
m_bIsMenuDisplayed[i] = 0;
|
||||
@@ -148,6 +149,11 @@ void CInput::SetJoypadValues(JOYPAD *pThisPad)
|
||||
pThisPad->m_uiButtons |= _360_JOY_BUTTON_BACK;
|
||||
}
|
||||
|
||||
if (SDL_GetGamepadButton(pGamePad, SDL_GAMEPAD_BUTTON_TOUCHPAD))
|
||||
{
|
||||
pThisPad->m_uiButtons |= _PS_JOY_BUTTON_TOUCHPAD;
|
||||
}
|
||||
|
||||
if (SDL_GetGamepadButton(pGamePad, SDL_GAMEPAD_BUTTON_LEFT_STICK))
|
||||
{
|
||||
pThisPad->m_uiButtons |= _360_JOY_BUTTON_LTHUMB;
|
||||
@@ -316,7 +322,21 @@ unsigned int CInput::GetGameJoypadMaps(unsigned char ucMap, unsigned char ucActi
|
||||
//str1k3r - renamed to match the Orbis Input lib, why did i rename it cause tism
|
||||
EControllerType CInput::GetControllerType(int iPad)
|
||||
{
|
||||
return GetControllerName(SDL_GetGamepadType(m_Joypads[iPad].m_pGamepad)); // str1k3r - magic we return it :shocked:
|
||||
//str1k3r - if the pad is connected then check the type, if we are the same type or we arent connected return the last type
|
||||
if(InternalInputManager.IsPadConnected(iPad))
|
||||
{
|
||||
EControllerType ControllerType = GetControllerName(SDL_GetGamepadType(m_Joypads[iPad].m_pGamepad));
|
||||
|
||||
if(ControllerType != m_LastControllerType)
|
||||
{
|
||||
m_LastControllerType = ControllerType;
|
||||
return ControllerType;
|
||||
}
|
||||
|
||||
return m_LastControllerType;
|
||||
}
|
||||
|
||||
return m_LastControllerType;
|
||||
}
|
||||
|
||||
void CInput::SetJoypadMapVal(int iPad, unsigned char ucMap)
|
||||
@@ -404,12 +424,15 @@ bool CInput::IsPadConnected(int iPad)
|
||||
|
||||
void CInput::SetSelectBackSwapped(bool swapped)
|
||||
{
|
||||
m_SelectBackSwapped = swapped;
|
||||
if(m_bSelectBackSwapped != swapped)
|
||||
{
|
||||
m_bSelectBackSwapped = swapped;
|
||||
}
|
||||
}
|
||||
|
||||
bool CInput::IsSelectBackSwapped()
|
||||
{
|
||||
return m_SelectBackSwapped;
|
||||
return m_bSelectBackSwapped;
|
||||
}
|
||||
|
||||
bool CInput::IsPadActive(int iPad)
|
||||
|
||||
@@ -169,10 +169,13 @@ public:
|
||||
|
||||
unsigned int **m_JoypadMap;
|
||||
|
||||
bool m_bSelectBackSwapped;
|
||||
|
||||
bool m_bJoypadMapArrayIsSetup;
|
||||
unsigned int m_uiSigninJoypadMask;
|
||||
bool m_bIsMenuDisplayed[MAX_JOYPADS];
|
||||
|
||||
EControllerType m_LastControllerType;
|
||||
CForceFeedback m_ForceFeedback;
|
||||
CKeyboard m_Keyboard;
|
||||
|
||||
|
||||
Reference in new issue
Block a user