mirror of
https://gitlab.com/skmp/dca3-game.git
synced 2025-08-30 01:50:04 +02:00
Merge branch 'Pgta/Duck-Button-Modification' into 'main'
Some checks failed
re3 conan+cmake / build-cmake (openal, glfw, macos-latest, gl3) (push) Has been cancelled
re3 conan+cmake / build-cmake (openal, glfw, ubuntu-18.04, gl3) (push) Has been cancelled
re3 conan+cmake / build-cmake (openal, glfw, windows-latest, gl3) (push) Has been cancelled
re3 conan+cmake / build-cmake (openal, windows-latest, d3d9) (push) Has been cancelled
re3 cmake devkitA64 (Nintendo Switch) / build-nintendo-switch (push) Has been cancelled
re3 premake amd64 / build (Debug, win-amd64-librw_d3d9-oal) (push) Has been cancelled
re3 premake amd64 / build (Debug, win-amd64-librw_gl3_glfw-oal) (push) Has been cancelled
re3 premake amd64 / build (Release, win-amd64-librw_d3d9-oal) (push) Has been cancelled
re3 premake amd64 / build (Release, win-amd64-librw_gl3_glfw-oal) (push) Has been cancelled
re3 premake x86 / build (Debug, win-x86-librw_d3d9-mss) (push) Has been cancelled
re3 premake x86 / build (Debug, win-x86-librw_d3d9-oal) (push) Has been cancelled
re3 premake x86 / build (Debug, win-x86-librw_gl3_glfw-mss) (push) Has been cancelled
re3 premake x86 / build (Debug, win-x86-librw_gl3_glfw-oal) (push) Has been cancelled
re3 premake x86 / build (Release, win-x86-librw_d3d9-mss) (push) Has been cancelled
re3 premake x86 / build (Release, win-x86-librw_d3d9-oal) (push) Has been cancelled
re3 premake x86 / build (Release, win-x86-librw_gl3_glfw-mss) (push) Has been cancelled
re3 premake x86 / build (Release, win-x86-librw_gl3_glfw-oal) (push) Has been cancelled
re3 premake x86 / build (Vanilla, win-x86-librw_d3d9-mss) (push) Has been cancelled
re3 premake x86 / build (Vanilla, win-x86-librw_d3d9-oal) (push) Has been cancelled
re3 premake x86 / build (Vanilla, win-x86-librw_gl3_glfw-mss) (push) Has been cancelled
re3 premake x86 / build (Vanilla, win-x86-librw_gl3_glfw-oal) (push) Has been cancelled
Some checks failed
re3 conan+cmake / build-cmake (openal, glfw, macos-latest, gl3) (push) Has been cancelled
re3 conan+cmake / build-cmake (openal, glfw, ubuntu-18.04, gl3) (push) Has been cancelled
re3 conan+cmake / build-cmake (openal, glfw, windows-latest, gl3) (push) Has been cancelled
re3 conan+cmake / build-cmake (openal, windows-latest, d3d9) (push) Has been cancelled
re3 cmake devkitA64 (Nintendo Switch) / build-nintendo-switch (push) Has been cancelled
re3 premake amd64 / build (Debug, win-amd64-librw_d3d9-oal) (push) Has been cancelled
re3 premake amd64 / build (Debug, win-amd64-librw_gl3_glfw-oal) (push) Has been cancelled
re3 premake amd64 / build (Release, win-amd64-librw_d3d9-oal) (push) Has been cancelled
re3 premake amd64 / build (Release, win-amd64-librw_gl3_glfw-oal) (push) Has been cancelled
re3 premake x86 / build (Debug, win-x86-librw_d3d9-mss) (push) Has been cancelled
re3 premake x86 / build (Debug, win-x86-librw_d3d9-oal) (push) Has been cancelled
re3 premake x86 / build (Debug, win-x86-librw_gl3_glfw-mss) (push) Has been cancelled
re3 premake x86 / build (Debug, win-x86-librw_gl3_glfw-oal) (push) Has been cancelled
re3 premake x86 / build (Release, win-x86-librw_d3d9-mss) (push) Has been cancelled
re3 premake x86 / build (Release, win-x86-librw_d3d9-oal) (push) Has been cancelled
re3 premake x86 / build (Release, win-x86-librw_gl3_glfw-mss) (push) Has been cancelled
re3 premake x86 / build (Release, win-x86-librw_gl3_glfw-oal) (push) Has been cancelled
re3 premake x86 / build (Vanilla, win-x86-librw_d3d9-mss) (push) Has been cancelled
re3 premake x86 / build (Vanilla, win-x86-librw_d3d9-oal) (push) Has been cancelled
re3 premake x86 / build (Vanilla, win-x86-librw_gl3_glfw-mss) (push) Has been cancelled
re3 premake x86 / build (Vanilla, win-x86-librw_gl3_glfw-oal) (push) Has been cancelled
Adding long press for Duck. See merge request skmp/dca3-game!92
This commit is contained in:
@@ -3881,36 +3881,49 @@ bool CPad::CollectPickupJustDown(void)
|
||||
return false;
|
||||
}
|
||||
|
||||
bool CPad::DuckJustDown(void)
|
||||
bool CPad::DuckJustDown(void)
|
||||
{
|
||||
if (ArePlayerControlsDisabled())
|
||||
if (ArePlayerControlsDisabled()) {
|
||||
duckFrameCounter = 0;
|
||||
return false;
|
||||
}
|
||||
|
||||
#ifdef RW_DC
|
||||
switch (CPad::GetPad(0)->Mode)
|
||||
{
|
||||
case 0: //Xbox Mode
|
||||
if (CPad::GetPad(0)->IsDualAnalog)
|
||||
{
|
||||
return !!(NewState.X&& !OldState.X);
|
||||
}
|
||||
else
|
||||
{
|
||||
return !!(NewState.X&& !OldState.X);
|
||||
}
|
||||
case 1: //PS2 Mode
|
||||
if (CPad::GetPad(0)->IsDualAnalog)
|
||||
{
|
||||
return !!(NewState.X&& !OldState.X);
|
||||
}
|
||||
else
|
||||
{
|
||||
return !!(NewState.X&& !OldState.X);
|
||||
}
|
||||
bool buttonPressed = false;
|
||||
switch (CPad::GetPad(0)->Mode) {
|
||||
case 0: // Xbox Mode
|
||||
buttonPressed = NewState.X;
|
||||
break;
|
||||
case 1: // PS2 Mode
|
||||
buttonPressed = NewState.X;
|
||||
break;
|
||||
}
|
||||
|
||||
if (buttonPressed) {
|
||||
duckFrameCounter++;
|
||||
if (duckFrameCounter >= DUCK_DELAY_FRAMES && !isDucking) {
|
||||
isDucking = true;
|
||||
return true; // Trigger ducking after delay
|
||||
}
|
||||
} else {
|
||||
duckFrameCounter = 0;
|
||||
isDucking = false;
|
||||
}
|
||||
|
||||
return false;
|
||||
#else
|
||||
return !!(NewState.LeftShock && !OldState.LeftShock);
|
||||
bool buttonPressed = NewState.Square;
|
||||
if (buttonPressed) {
|
||||
duckFrameCounter++;
|
||||
if (duckFrameCounter >= DUCK_DELAY_FRAMES && !isDucking) {
|
||||
isDucking = true;
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
duckFrameCounter = 0;
|
||||
isDucking = false;
|
||||
}
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@@ -173,11 +173,26 @@ public:
|
||||
uint32 CameraJustUpTime;
|
||||
uint32 CameraLastPressed;
|
||||
bool CameraIsDoublePressed;
|
||||
static const int DUCK_DELAY_FRAMES = 30; // 1 second at 30 FPS
|
||||
int duckFrameCounter; // Frames the duck button has been held
|
||||
bool isDucking; // Tracks if duck action is active
|
||||
|
||||
#ifdef DETECT_PAD_INPUT_SWITCH
|
||||
static bool IsAffectedByController;
|
||||
static bool IsAffectedByController;
|
||||
#endif
|
||||
CPad() { }
|
||||
|
||||
CPad() : duckFrameCounter(0), isDucking(false), // New variables initialized
|
||||
SteeringLeftRightBuffer{0}, DrunkDrivingBufferUsed(0), Phase(0), Mode(0),
|
||||
ShakeDur(0), DisablePlayerControls(0), ShakeFreq(0), iCurrHornHistory(0),
|
||||
JustOutOfFrontend(0), bApplyBrakes(0), LastTimeTouched(0), AverageWeapon(0),
|
||||
AverageEntries(0), IsKeyboardMouse(false), IsDualAnalog(false),
|
||||
CameraJustDown(false), CameraJustUp(false), CameraJustUpTime(0),
|
||||
CameraLastPressed(0), CameraIsDoublePressed(false) {
|
||||
Clear(false);
|
||||
memset(bHornHistory, 0, sizeof(bHornHistory));
|
||||
memset(CheatString, 0, sizeof(CheatString));
|
||||
}
|
||||
|
||||
~CPad() { }
|
||||
|
||||
static bool bDisplayNoControllerMessage;
|
||||
|
Reference in New Issue
Block a user