summaryrefslogtreecommitdiffstats
path: root/src/core/Pad.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/Pad.cpp')
-rw-r--r--src/core/Pad.cpp141
1 files changed, 112 insertions, 29 deletions
diff --git a/src/core/Pad.cpp b/src/core/Pad.cpp
index f4b81cb4..ef074a0c 100644
--- a/src/core/Pad.cpp
+++ b/src/core/Pad.cpp
@@ -55,6 +55,10 @@ CMouseControllerState CPad::OldMouseControllerState;
CMouseControllerState CPad::NewMouseControllerState;
CMouseControllerState CPad::PCTempMouseControllerState;
+#ifdef DETECT_PAD_INPUT_SWITCH
+bool CPad::IsAffectedByController = false;
+#endif
+
_TODO("gbFastTime");
extern bool gbFastTime;
@@ -325,6 +329,16 @@ void AltDodoCheat(void)
}
#endif
+#ifdef DETECT_PAD_INPUT_SWITCH
+bool
+CControllerState::IsAnyButtonPressed(void)
+{
+ return !!LeftStickX || !!LeftStickY || !!RightStickX || !!RightStickY || !!LeftShoulder1 || !!LeftShoulder2 || !!RightShoulder1 || !!RightShoulder2 ||
+ !!DPadUp || !!DPadDown || !!DPadLeft || !!DPadRight || !!Start || !!Select || !!Square || !!Triangle || !!Cross || !!Circle || !!LeftShock ||
+ !!RightShock || !!NetworkTalk;
+}
+#endif
+
void
CControllerState::Clear(void)
{
@@ -1037,11 +1051,20 @@ void CPad::UpdatePads(void)
#else
CapturePad(0);
#endif
-
+#ifdef DETECT_PAD_INPUT_SWITCH
+ if (GetPad(0)->PCTempJoyState.IsAnyButtonPressed())
+ IsAffectedByController = true;
+ else {
+#endif
+ ControlsManager.ClearSimButtonPressCheckers();
+ ControlsManager.AffectPadFromKeyBoard();
+ ControlsManager.AffectPadFromMouse();
- ControlsManager.ClearSimButtonPressCheckers();
- ControlsManager.AffectPadFromKeyBoard();
- ControlsManager.AffectPadFromMouse();
+#ifdef DETECT_PAD_INPUT_SWITCH
+ }
+ if (IsAffectedByController && (GetPad(0)->PCTempKeyState.IsAnyButtonPressed() || GetPad(0)->PCTempMouseState.IsAnyButtonPressed()))
+ IsAffectedByController = false;
+#endif
if ( CReplay::IsPlayingBackFromFile() )
bUpdate = false;
@@ -1096,7 +1119,10 @@ void CPad::Update(int16 unk)
void CPad::DoCheats(void)
{
- GetPad(0)->DoCheats(0);
+#ifdef DETECT_PAD_INPUT_SWITCH
+ if (IsAffectedByController)
+#endif
+ GetPad(0)->DoCheats(0);
}
void CPad::DoCheats(int16 unk)
@@ -1159,7 +1185,9 @@ int16 CPad::GetSteeringLeftRight(void)
{
if ( ArePlayerControlsDisabled() )
return 0;
-
+#ifdef DETECT_PAD_INPUT_SWITCH
+ int16 Mode = IsAffectedByController ? this->Mode : 0;
+#endif
switch ( Mode )
{
case 0:
@@ -1192,7 +1220,9 @@ int16 CPad::GetSteeringUpDown(void)
{
if ( ArePlayerControlsDisabled() )
return 0;
-
+#ifdef DETECT_PAD_INPUT_SWITCH
+ int16 Mode = IsAffectedByController ? this->Mode : 0;
+#endif
switch ( Mode )
{
case 0:
@@ -1225,7 +1255,9 @@ int16 CPad::GetCarGunUpDown(void)
{
if ( ArePlayerControlsDisabled() )
return 0;
-
+#ifdef DETECT_PAD_INPUT_SWITCH
+ int16 Mode = IsAffectedByController ? this->Mode : 0;
+#endif
switch ( Mode )
{
case 0:
@@ -1252,7 +1284,9 @@ int16 CPad::GetCarGunLeftRight(void)
{
if ( ArePlayerControlsDisabled() )
return 0;
-
+#ifdef DETECT_PAD_INPUT_SWITCH
+ int16 Mode = IsAffectedByController ? this->Mode : 0;
+#endif
switch ( Mode )
{
case 0:
@@ -1279,7 +1313,9 @@ int16 CPad::GetPedWalkLeftRight(void)
{
if ( ArePlayerControlsDisabled() )
return 0;
-
+#ifdef DETECT_PAD_INPUT_SWITCH
+ int16 Mode = IsAffectedByController ? this->Mode : 0;
+#endif
switch ( Mode )
{
case 0:
@@ -1313,7 +1349,9 @@ int16 CPad::GetPedWalkUpDown(void)
{
if ( ArePlayerControlsDisabled() )
return 0;
-
+#ifdef DETECT_PAD_INPUT_SWITCH
+ int16 Mode = IsAffectedByController ? this->Mode : 0;
+#endif
switch ( Mode )
{
case 0:
@@ -1344,6 +1382,9 @@ int16 CPad::GetPedWalkUpDown(void)
int16 CPad::GetAnalogueUpDown(void)
{
+#ifdef DETECT_PAD_INPUT_SWITCH
+ int16 Mode = IsAffectedByController ? this->Mode : 0;
+#endif
switch ( Mode )
{
case 0:
@@ -1409,7 +1450,9 @@ bool CPad::GetHorn(void)
{
if ( ArePlayerControlsDisabled() )
return false;
-
+#ifdef DETECT_PAD_INPUT_SWITCH
+ int16 Mode = IsAffectedByController ? this->Mode : 0;
+#endif
switch ( Mode )
{
case 0:
@@ -1448,7 +1491,9 @@ bool CPad::HornJustDown(void)
{
if ( ArePlayerControlsDisabled() )
return false;
-
+#ifdef DETECT_PAD_INPUT_SWITCH
+ int16 Mode = IsAffectedByController ? this->Mode : 0;
+#endif
switch ( Mode )
{
case 0:
@@ -1488,7 +1533,9 @@ bool CPad::GetCarGunFired(void)
{
if ( ArePlayerControlsDisabled() )
return false;
-
+#ifdef DETECT_PAD_INPUT_SWITCH
+ int16 Mode = IsAffectedByController ? this->Mode : 0;
+#endif
switch ( Mode )
{
case 0:
@@ -1515,7 +1562,9 @@ bool CPad::CarGunJustDown(void)
{
if ( ArePlayerControlsDisabled() )
return false;
-
+#ifdef DETECT_PAD_INPUT_SWITCH
+ int16 Mode = IsAffectedByController ? this->Mode : 0;
+#endif
switch ( Mode )
{
case 0:
@@ -1542,7 +1591,9 @@ int16 CPad::GetHandBrake(void)
{
if ( ArePlayerControlsDisabled() )
return 0;
-
+#ifdef DETECT_PAD_INPUT_SWITCH
+ int16 Mode = IsAffectedByController ? this->Mode : 0;
+#endif
switch ( Mode )
{
case 0:
@@ -1575,7 +1626,9 @@ int16 CPad::GetBrake(void)
{
if ( ArePlayerControlsDisabled() )
return 0;
-
+#ifdef DETECT_PAD_INPUT_SWITCH
+ int16 Mode = IsAffectedByController ? this->Mode : 0;
+#endif
switch ( Mode )
{
case 0:
@@ -1613,7 +1666,9 @@ bool CPad::GetExitVehicle(void)
{
if ( ArePlayerControlsDisabled() )
return false;
-
+#ifdef DETECT_PAD_INPUT_SWITCH
+ int16 Mode = IsAffectedByController ? this->Mode : 0;
+#endif
switch ( Mode )
{
case 0:
@@ -1640,7 +1695,9 @@ bool CPad::ExitVehicleJustDown(void)
{
if ( ArePlayerControlsDisabled() )
return false;
-
+#ifdef DETECT_PAD_INPUT_SWITCH
+ int16 Mode = IsAffectedByController ? this->Mode : 0;
+#endif
switch ( Mode )
{
case 0:
@@ -1667,7 +1724,9 @@ int32 CPad::GetWeapon(void)
{
if ( ArePlayerControlsDisabled() )
return false;
-
+#ifdef DETECT_PAD_INPUT_SWITCH
+ int16 Mode = IsAffectedByController ? this->Mode : 0;
+#endif
switch ( Mode )
{
case 0:
@@ -1700,7 +1759,9 @@ bool CPad::WeaponJustDown(void)
{
if ( ArePlayerControlsDisabled() )
return false;
-
+#ifdef DETECT_PAD_INPUT_SWITCH
+ int16 Mode = IsAffectedByController ? this->Mode : 0;
+#endif
switch ( Mode )
{
case 0:
@@ -1733,7 +1794,9 @@ int16 CPad::GetAccelerate(void)
{
if ( ArePlayerControlsDisabled() )
return 0;
-
+#ifdef DETECT_PAD_INPUT_SWITCH
+ int16 Mode = IsAffectedByController ? this->Mode : 0;
+#endif
switch ( Mode )
{
case 0:
@@ -1769,6 +1832,9 @@ int16 CPad::GetAccelerate(void)
bool CPad::CycleCameraModeUpJustDown(void)
{
+#ifdef DETECT_PAD_INPUT_SWITCH
+ int16 Mode = IsAffectedByController ? this->Mode : 0;
+#endif
switch ( Mode )
{
case 0:
@@ -1793,6 +1859,9 @@ bool CPad::CycleCameraModeUpJustDown(void)
bool CPad::CycleCameraModeDownJustDown(void)
{
+#ifdef DETECT_PAD_INPUT_SWITCH
+ int16 Mode = IsAffectedByController ? this->Mode : 0;
+#endif
switch ( Mode )
{
case 0:
@@ -1819,7 +1888,9 @@ bool CPad::ChangeStationJustDown(void)
{
if ( ArePlayerControlsDisabled() )
return false;
-
+#ifdef DETECT_PAD_INPUT_SWITCH
+ int16 Mode = IsAffectedByController ? this->Mode : 0;
+#endif
switch ( Mode )
{
case 0:
@@ -1875,7 +1946,9 @@ bool CPad::GetTarget(void)
{
if ( ArePlayerControlsDisabled() )
return false;
-
+#ifdef DETECT_PAD_INPUT_SWITCH
+ int16 Mode = IsAffectedByController ? this->Mode : 0;
+#endif
switch ( Mode )
{
case 0:
@@ -1902,7 +1975,9 @@ bool CPad::TargetJustDown(void)
{
if ( ArePlayerControlsDisabled() )
return false;
-
+#ifdef DETECT_PAD_INPUT_SWITCH
+ int16 Mode = IsAffectedByController ? this->Mode : 0;
+#endif
switch ( Mode )
{
case 0:
@@ -1937,7 +2012,9 @@ bool CPad::GetSprint(void)
{
if ( ArePlayerControlsDisabled() )
return false;
-
+#ifdef DETECT_PAD_INPUT_SWITCH
+ int16 Mode = IsAffectedByController ? this->Mode : 0;
+#endif
switch ( Mode )
{
case 0:
@@ -2092,7 +2169,9 @@ bool CPad::ForceCameraBehindPlayer(void)
{
if ( ArePlayerControlsDisabled() )
return false;
-
+#ifdef DETECT_PAD_INPUT_SWITCH
+ int16 Mode = IsAffectedByController ? this->Mode : 0;
+#endif
switch ( Mode )
{
case 0:
@@ -2125,7 +2204,9 @@ bool CPad::SniperZoomIn(void)
{
if ( ArePlayerControlsDisabled() )
return false;
-
+#ifdef DETECT_PAD_INPUT_SWITCH
+ int16 Mode = IsAffectedByController ? this->Mode : 0;
+#endif
switch ( Mode )
{
case 0:
@@ -2152,7 +2233,9 @@ bool CPad::SniperZoomOut(void)
{
if ( ArePlayerControlsDisabled() )
return false;
-
+#ifdef DETECT_PAD_INPUT_SWITCH
+ int16 Mode = IsAffectedByController ? this->Mode : 0;
+#endif
switch ( Mode )
{
case 0: