Binding button behavior to the controller

This commit is contained in:
Dima353
2026-07-17 23:31:17 +03:00
parent 2608cde0dc
commit ad8a4c984d
4 changed files with 34 additions and 12 deletions
+8 -9
View File
@@ -94,12 +94,11 @@ int GetOptionCount(int screen)
#ifdef TRIANGLE_BACK_BUTTON
#define GetBackJustUp GetTriangleJustUp
#define GetBackJustDown GetTriangleJustDown
#elif defined(CIRCLE_BACK_BUTTON)
#define GetBackJustUp GetCrossJustUp
#define GetBackJustDown GetCrossJustDown
#else
#define GetBackJustUp GetSquareJustUp
#define GetBackJustDown GetSquareJustDown
// Menu cancel/back follows the selected controller type (see CPad::GetMenuCancel*).
// This supersedes the old CIRCLE_BACK_BUTTON mapping.
#define GetBackJustUp GetMenuCancelJustUp
#define GetBackJustDown GetMenuCancelJustDown
#endif
#ifdef MAP_ENHANCEMENTS
@@ -3577,7 +3576,7 @@ CMenuManager::AdditionalOptionInput(bool &goBack)
#else
// Adding marker
if (m_nMenuFadeAlpha == 255) {
if (CPad::GetPad(0)->GetRightMouseJustDown() || CPad::GetPad(0)->GetCircleJustDown()) {
if (CPad::GetPad(0)->GetRightMouseJustDown() || CPad::GetPad(0)->GetMenuConfirmJustDown()) {
if (mapCrosshair.y > m_fMapCenterY - m_fMapSize && mapCrosshair.y < m_fMapCenterY + m_fMapSize &&
mapCrosshair.x > m_fMapCenterX - m_fMapSize && mapCrosshair.x < m_fMapCenterX + m_fMapSize) {
@@ -4061,7 +4060,7 @@ CMenuManager::ProcessList(bool &optionSelected, bool &goBack)
m_nSelectedListRow = m_nTotalListRow - 1;
}
if (CPad::GetPad(0)->GetEnterJustDown() || CPad::GetPad(0)->GetCircleJustDown()) {
if (CPad::GetPad(0)->GetEnterJustDown() || CPad::GetPad(0)->GetMenuConfirmJustDown()) {
m_bShowMouse = 0;
optionSelected = true;
}
@@ -4379,12 +4378,12 @@ CMenuManager::UserInput(void)
}
if ((m_nCurrOption == 0) && (m_nCurrScreen == MENUPAGE_PAUSE_MENU)) {
if (CPad::GetPad(0)->GetEnterJustUp() || CPad::GetPad(0)->GetCircleJustUp()) {
if (CPad::GetPad(0)->GetEnterJustUp() || CPad::GetPad(0)->GetMenuConfirmJustUp()) {
m_bShowMouse = false;
optionSelected = true;
}
} else {
if (CPad::GetPad(0)->GetEnterJustDown() || CPad::GetPad(0)->GetCircleJustDown()) {
if (CPad::GetPad(0)->GetEnterJustDown() || CPad::GetPad(0)->GetMenuConfirmJustDown()) {
m_bShowMouse = false;
optionSelected = true;
}
+18
View File
@@ -1101,6 +1101,24 @@ void CPad::StartShake_Train(float fX, float fY)
}
}
#ifdef GAMEPAD_MENU
static bool MenuUsesNintendoLayout()
{
return FrontEndMenuManager.m_PrefsControllerType == CMenuManager::CONTROLLER_NINTENDO_SWITCH
|| FrontEndMenuManager.m_PrefsControllerType == CMenuManager::CONTROLLER_DUALSHOCK2;
}
bool CPad::GetMenuConfirmJustDown() { return MenuUsesNintendoLayout() ? GetCircleJustDown() : GetCrossJustDown(); }
bool CPad::GetMenuConfirmJustUp() { return MenuUsesNintendoLayout() ? GetCircleJustUp() : GetCrossJustUp(); }
bool CPad::GetMenuCancelJustDown() { return MenuUsesNintendoLayout() ? GetCrossJustDown() : GetCircleJustDown(); }
bool CPad::GetMenuCancelJustUp() { return MenuUsesNintendoLayout() ? GetCrossJustUp() : GetCircleJustUp(); }
#else
bool CPad::GetMenuConfirmJustDown() { return GetCrossJustDown(); }
bool CPad::GetMenuConfirmJustUp() { return GetCrossJustUp(); }
bool CPad::GetMenuCancelJustDown() { return GetCircleJustDown(); }
bool CPad::GetMenuCancelJustUp() { return GetCircleJustUp(); }
#endif
#ifdef GTA_PS2_STUFF
void CPad::AddToCheatString(char c)
{
+4
View File
@@ -427,6 +427,8 @@ public:
bool GetCircleJustDown() { return !!(NewState.Circle && !OldState.Circle); }
bool GetCrossJustDown() { return !!(NewState.Cross && !OldState.Cross); }
bool GetSquareJustDown() { return !!(NewState.Square && !OldState.Square); }
bool GetMenuConfirmJustDown();
bool GetMenuCancelJustDown();
bool GetDPadUpJustDown() { return !!(NewState.DPadUp && !OldState.DPadUp); }
bool GetDPadDownJustDown() { return !!(NewState.DPadDown && !OldState.DPadDown); }
bool GetDPadLeftJustDown() { return !!(NewState.DPadLeft && !OldState.DPadLeft); }
@@ -446,6 +448,8 @@ public:
bool GetCircleJustUp() { return !!(!NewState.Circle && OldState.Circle); }
bool GetCrossJustUp() { return !!(!NewState.Cross && OldState.Cross); }
bool GetSquareJustUp() { return !!(!NewState.Square && OldState.Square); }
bool GetMenuConfirmJustUp();
bool GetMenuCancelJustUp();
bool GetDPadUpJustUp() { return !!(!NewState.DPadUp && OldState.DPadUp); }
bool GetDPadDownJustUp() { return !!(!NewState.DPadDown && OldState.DPadDown); }
bool GetDPadLeftJustUp() { return !!(!NewState.DPadLeft && OldState.DPadLeft); }
+4 -3
View File
@@ -1891,11 +1891,12 @@ WinMain(HINSTANCE instance,
#endif
#else
// True if the player pressed a button to skip an intro movie (controller A /
// Start, or Enter on a keyboard).
// True if the player pressed a button to skip an intro movie. Uses the menu
// confirm button so it follows the selected controller type (Nintendo layout:
// A/east; PlayStation/Xbox: Cross/south), plus Start or Enter on a keyboard.
static bool SkipMovieButtonJustDown()
{
return CPad::GetPad(0)->GetCrossJustDown()
return CPad::GetPad(0)->GetMenuConfirmJustDown()
|| CPad::GetPad(0)->GetStartJustDown()
|| CPad::GetPad(0)->GetEnterJustDown();
}