mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
Client: add reverse engineered Input interface
IInput and CInput interfaces reverse engineered.
This commit is contained in:
parent
155bfd5be3
commit
4b67f4c27e
@ -7,7 +7,7 @@
|
||||
#include "common/global.h"
|
||||
#include "game/shared/weapon_types.h"
|
||||
|
||||
void CInput::SetCustomWeaponActivity(CInput* pInput, int weaponActivity)
|
||||
void CInput::VSetCustomWeaponActivity(CInput* pInput, int weaponActivity)
|
||||
{
|
||||
// Server only allows other custom weapon activities if cheats are enabled,
|
||||
// don't bother simulating it on the client without the cheats cvar, as
|
||||
@ -20,5 +20,5 @@ void CInput::SetCustomWeaponActivity(CInput* pInput, int weaponActivity)
|
||||
|
||||
void VInput::Detour(const bool bAttach) const
|
||||
{
|
||||
DetourSetup(&v_CInput__SetCustomWeaponActivity, CInput::SetCustomWeaponActivity, bAttach);
|
||||
DetourSetup(&v_CInput__SetCustomWeaponActivity, CInput::VSetCustomWeaponActivity, bAttach);
|
||||
}
|
||||
|
@ -1,11 +1,48 @@
|
||||
#ifndef CLIENT_INPUT_H
|
||||
#define CLIENT_INPUT_H
|
||||
#include "game/shared/weapon_types.h"
|
||||
#include "game/client/iinput.h"
|
||||
|
||||
class CInput : public IInput
|
||||
{
|
||||
public:
|
||||
static void SetCustomWeaponActivity(CInput* pInput, int weaponActivity);
|
||||
virtual void sub_140701C40() = 0;
|
||||
virtual void sub_140701D60() = 0;
|
||||
virtual void sub_140701D90() = 0;
|
||||
|
||||
virtual int GetMaxAbilityBindingCount( void ) = 0;
|
||||
virtual int GetMaxAbilityBindingLength( void ) = 0;
|
||||
|
||||
virtual void sub_140701DC0() = 0;
|
||||
|
||||
virtual void SetJoystickDebounce( int nSlot = -1 ) = 0;
|
||||
virtual void ClearJoystickDebounce( int nSlot = -1 ) = 0;
|
||||
|
||||
virtual float GetLastSwapSelectTime() = 0;
|
||||
virtual void SetLastSwapSelectTime( float lastSelectTime ) = 0;
|
||||
virtual float Unknown_GetFloat20() = 0;
|
||||
virtual void Unknown_SetFloat20( float a2 ) = 0;
|
||||
virtual float Unknown_GetFloat24() = 0;
|
||||
virtual void Unknown_SetFloat24( float a2 ) = 0;
|
||||
|
||||
virtual float GetLastButtonPressTime( void ) = 0;
|
||||
virtual void SetLastButtonPressTime( float lastPressTime ) = 0;
|
||||
virtual void LinkButtonPair( int button1, int button2, int output ) = 0;
|
||||
|
||||
virtual void sub_140701720() = 0;
|
||||
|
||||
virtual void SetCustomWeaponActivity( WeaponActivity_t weaponActivity ) = 0;
|
||||
virtual void ActivateOffhandWeaponByIndex( char index /*TODO[ AMOS ]: needs enum, enumVal 6 = INVALID; see Script_ActivateOffhandWeaponByIndex*/ ) = 0;
|
||||
|
||||
virtual void ChangeControllerMode( bool newMode ) = 0;
|
||||
|
||||
virtual void SetZoomScale( float zoomScale ) = 0; // Used for SetBigMapZoomScale script func
|
||||
virtual float GetZoomScale() = 0; // Used for GetBigMapZoomScale script func
|
||||
virtual void SetZoomAnchor( Vector2D& inAnchor ) = 0; // Used for SetBigMapZoomAnchor script func
|
||||
virtual void GetZoomAnchor( Vector2D& outAnchor ) = 0; // Used for SetBigMapZoomAnchor script func
|
||||
|
||||
public: // Hook statics
|
||||
static void VSetCustomWeaponActivity( CInput* pInput, int weaponActivity );
|
||||
private:
|
||||
};
|
||||
|
||||
|
@ -1,10 +1,110 @@
|
||||
#ifndef IINPUT_H
|
||||
#define IINPUT_H
|
||||
|
||||
class bf_write;
|
||||
class bf_read;
|
||||
class CUserCmd;
|
||||
struct kbutton_t;
|
||||
|
||||
struct CameraThirdData_t
|
||||
{
|
||||
float m_flPitch;
|
||||
float m_flYaw;
|
||||
float m_flDist;
|
||||
float m_flLag;
|
||||
Vector3D m_vecHullMin;
|
||||
Vector3D m_vecHullMax;
|
||||
};
|
||||
|
||||
abstract_class IInput
|
||||
{
|
||||
public:
|
||||
virtual ~IInput() {};
|
||||
|
||||
// Initialization/shutdown of the subsystem
|
||||
virtual void Init_All( void ) = 0;
|
||||
virtual void Shutdown_All( void ) = 0;
|
||||
// Latching button states
|
||||
virtual int GetButtonBits( bool resetState ) = 0;
|
||||
// Create movement command
|
||||
virtual void CreateMove ( int sequenceNumber, float inputSampleFrametime, bool active ) = 0;
|
||||
virtual void ExtraMouseSample( float frametime ) = 0;
|
||||
virtual bool WriteUsercmdDeltaToBuffer( int slot, bf_write *buf, int from, int to ) = 0;
|
||||
virtual void EncodeUserCmdToBuffer( int slot, bf_write& buf, int sequenceNumber ) = 0;
|
||||
virtual void DecodeUserCmdFromBuffer( int slot, bf_read& buf, int sequenceNumber ) = 0;
|
||||
|
||||
virtual CUserCmd *GetUserCmd( int slot, int sequenceNumber ) = 0; // TODO[ AMOS ]: CUserCmdExteded*
|
||||
|
||||
virtual void MakeWeaponSelection( int secondary, int primary ) = 0;
|
||||
|
||||
virtual void sub_140702970() = 0;
|
||||
virtual void sub_140702980() = 0;
|
||||
|
||||
virtual bool MouseInitialized() = 0;
|
||||
|
||||
// Retrieve key state
|
||||
virtual float KeyState( kbutton_t* key ) = 0;
|
||||
|
||||
virtual void sub_140701EC0() = 0;
|
||||
virtual void sub_140701F50() = 0;
|
||||
virtual void sub_140702000() = 0;
|
||||
|
||||
// Look for key
|
||||
virtual kbutton_t* FindKey(const char* name) = 0;
|
||||
|
||||
// Extra initialization for some joysticks
|
||||
virtual bool ControllerModeActive() = 0;
|
||||
virtual bool JoystickActive() = 0;
|
||||
|
||||
virtual void Joystick_SetSampleTime( float frametime ) = 0;
|
||||
virtual void IN_SetSampleTime( float frametime ) = 0;
|
||||
|
||||
// Accumulate mouse delta
|
||||
virtual void AccumulateMouse( int nSlot ) = 0; // Unimplemented in R5
|
||||
|
||||
// Activate/deactivate mouse
|
||||
virtual void ActivateMouse( void ) = 0;
|
||||
virtual void DeactivateMouse( void ) = 0;
|
||||
|
||||
// Clear mouse state data
|
||||
virtual void ClearStates( void ) = 0;
|
||||
// Retrieve lookspring setting
|
||||
virtual float GetLookSpring( void ) = 0;
|
||||
|
||||
// Clear weapon activities and additional UserCmd related data
|
||||
virtual void ClearSupplementalWeaponData( void ) = 0;
|
||||
|
||||
// Retrieve mouse position
|
||||
virtual void GetFullscreenMousePos( int *mx, int *my, int *unclampedx = 0, int *unclampedy = 0 ) = 0;
|
||||
virtual void SetFullscreenMousePos( int mx, int my ) = 0;
|
||||
virtual void ResetMouse() = 0;
|
||||
virtual float GetLastForwardMove( void ) = 0;
|
||||
|
||||
// Third Person camera
|
||||
virtual void CAM_Think( void ) = 0;
|
||||
virtual int CAM_IsThirdPerson( int nSlot = -1 ) = 0;
|
||||
virtual void CAM_GetCameraOffset( Vector3D& ofs ) = 0;
|
||||
virtual void CAM_SetCameraOffset( Vector3D& ofs ) = 0;
|
||||
virtual void CAM_ToThirdPerson( void ) = 0;
|
||||
virtual void CAM_ToFirstPerson( void ) = 0;
|
||||
virtual void CAM_StartMouseMove( void ) = 0;
|
||||
virtual void CAM_EndMouseMove( void ) = 0;
|
||||
virtual void CAM_StartDistance( void ) = 0;
|
||||
virtual void CAM_EndDistance( void ) = 0;
|
||||
virtual int CAM_InterceptingMouse( void ) = 0;
|
||||
virtual void CAM_Command( int command ) = 0;
|
||||
|
||||
virtual void Unknown_SetFloatB0( float a2 ) = 0;
|
||||
virtual float Unknown_GetFloatB0() = 0;
|
||||
|
||||
virtual void nullsub_0() = 0;
|
||||
virtual int sub_1407060E0() = 0;
|
||||
|
||||
// Causes an input to have to be re-pressed to become active
|
||||
virtual void ClearInputButton( int bits ) = 0;
|
||||
|
||||
virtual void CAM_SetCameraThirdData( CameraThirdData_t *pCameraData, const QAngle &vecCameraOffset ) = 0;
|
||||
virtual void CAM_CameraThirdThink( void ) = 0;
|
||||
};
|
||||
|
||||
#endif // IINPUT_H
|
||||
|
Loading…
x
Reference in New Issue
Block a user