iw4x-client/src/Components/Modules/Lean.cpp
2017-01-18 23:44:36 +01:00

70 lines
1.4 KiB
C++

#include "STDInclude.hpp"
namespace Components
{
Game::kbutton_t Lean::in_leanleft;
Game::kbutton_t Lean::in_leanright;
void Lean::IN_LeanLeft_Up()
{
Game::IN_KeyUp(&Lean::in_leanleft);
}
void Lean::IN_LeanLeft_Down()
{
Game::IN_KeyDown(&Lean::in_leanleft);
}
void Lean::IN_LeanRight_Up()
{
Game::IN_KeyUp(&Lean::in_leanright);
}
void Lean::IN_LeanRight_Down()
{
Game::IN_KeyDown(&Lean::in_leanright);
}
void Lean::SetLeanFlags(Game::usercmd_s* cmds)
{
if (Lean::in_leanleft.active || Lean::in_leanleft.wasPressed)
{
cmds->buttons |= BUTTON_FLAG_LEANLEFT;
}
if (Lean::in_leanright.active || Lean::in_leanright.wasPressed)
{
cmds->buttons |= BUTTON_FLAG_LEANRIGHT;
}
Lean::in_leanleft.wasPressed = 0;
Lean::in_leanright.wasPressed = 0;
}
void __declspec(naked) Lean::CL_CmdButtonsStub()
{
__asm
{
// CL_CmdButtons
mov ecx, 5A6510h
call ecx
push esi
call Lean::SetLeanFlags
pop esi
retn
}
}
Lean::Lean()
{
Command::AddRaw("+leanleft", Lean::IN_LeanLeft_Down, true);
Command::AddRaw("-leanleft", Lean::IN_LeanLeft_Up, true);
Command::AddRaw("+leanright", Lean::IN_LeanRight_Down, true);
Command::AddRaw("-leanright", Lean::IN_LeanRight_Up, true);
Utils::Hook(0x5A6D84, Lean::CL_CmdButtonsStub, HOOK_CALL).install()->quick();
}
}