Fix gamepad use hold time by checking for used buttons from gentity instead of local player keys to work on dedicated servers

This commit is contained in:
Jan 2021-08-30 20:05:06 +02:00
parent aa3c6d79c6
commit a07a00da93
3 changed files with 12 additions and 5 deletions

View File

@ -878,10 +878,10 @@ namespace Components
}
}
bool Gamepad::Gamepad_ShouldUse(const unsigned useTime)
bool Gamepad::Gamepad_ShouldUse(const Game::gentity_s* playerEnt, const unsigned useTime)
{
// Only apply hold time to +usereload keybind
return !Game::playersKb[Game::KB_USE_RELOAD].active || useTime >= static_cast<unsigned>(gpad_use_hold_time.get<int>());
return !(playerEnt->client->buttons & Game::CMD_BUTTON_USE_RELOAD) || useTime >= static_cast<unsigned>(gpad_use_hold_time.get<int>());
}
__declspec(naked) void Gamepad::Player_UseEntity_Stub()
@ -896,8 +896,9 @@ namespace Components
push eax
pushad
push eax
push edi
call Gamepad_ShouldUse
add esp,4
add esp,8
mov [esp + 0x20],eax
popad
pop eax

View File

@ -355,7 +355,7 @@ namespace Components
static void CL_GamepadMove(int gamePadIndex, Game::usercmd_s* cmd, float frameTimeBase);
static void CL_MouseMove_Stub();
static bool Gamepad_ShouldUse(unsigned useTime);
static bool Gamepad_ShouldUse(const Game::gentity_s* playerEnt, unsigned useTime);
static void Player_UseEntity_Stub();
static bool Key_IsValidGamePadChar(int key);

View File

@ -5262,7 +5262,13 @@ namespace Game
unsigned int team;
char pad2[436];
int flags;
char pad3[724];
int spectatorClient;
int lastCmdTime;
int buttons;
int oldbuttons;
int latched_buttons;
int buttonsSinceLastFrame;
char pad3[700];
} gclient_t;
struct EntHandle