123 lines
4.1 KiB
C++
123 lines
4.1 KiB
C++
//========= Copyright Valve Corporation, All rights reserved. ============//
|
|
//
|
|
// Purpose:
|
|
//
|
|
// $NoKeywords: $
|
|
//
|
|
//=============================================================================//
|
|
#if !defined(IINPUT_H)
|
|
#define IINPUT_H
|
|
#ifdef _WIN32
|
|
#pragma once
|
|
#endif
|
|
|
|
class bf_write;
|
|
class bf_read;
|
|
class CUserCmd;
|
|
class C_BaseCombatWeapon;
|
|
struct kbutton_t;
|
|
|
|
struct CameraThirdData_t {
|
|
float m_flPitch;
|
|
float m_flYaw;
|
|
float m_flDist;
|
|
float m_flLag;
|
|
Vector m_vecHullMin;
|
|
Vector m_vecHullMax;
|
|
};
|
|
|
|
abstract_class IInput {
|
|
public:
|
|
// Initialization/shutdown of the subsystem
|
|
virtual void Init_All(void) = 0;
|
|
virtual void Shutdown_All(void) = 0;
|
|
// Latching button states
|
|
virtual int GetButtonBits(int) = 0;
|
|
// Create movement command
|
|
virtual void CreateMove(int sequence_number, float input_sample_frametime,
|
|
bool active) = 0;
|
|
virtual void ExtraMouseSample(float frametime, bool active) = 0;
|
|
virtual bool WriteUsercmdDeltaToBuffer(bf_write * buf, int from, int to,
|
|
bool isnewcommand) = 0;
|
|
virtual void EncodeUserCmdToBuffer(bf_write & buf, int slot) = 0;
|
|
virtual void DecodeUserCmdFromBuffer(bf_read & buf, int slot) = 0;
|
|
|
|
virtual CUserCmd *GetUserCmd(int sequence_number) = 0;
|
|
|
|
virtual void MakeWeaponSelection(C_BaseCombatWeapon * weapon) = 0;
|
|
|
|
// Retrieve key state
|
|
virtual float KeyState(kbutton_t * key) = 0;
|
|
// Issue key event
|
|
virtual int KeyEvent(int eventcode, ButtonCode_t keynum,
|
|
const char *pszCurrentBinding) = 0;
|
|
// Look for key
|
|
virtual kbutton_t *FindKey(const char *name) = 0;
|
|
|
|
// Issue commands from controllers
|
|
virtual void ControllerCommands(void) = 0;
|
|
// Extra initialization for some joysticks
|
|
virtual void Joystick_Advanced(void) = 0;
|
|
virtual void Joystick_SetSampleTime(float frametime) = 0;
|
|
virtual void IN_SetSampleTime(float frametime) = 0;
|
|
|
|
// Accumulate mouse delta
|
|
virtual void AccumulateMouse(void) = 0;
|
|
// 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;
|
|
|
|
// 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(void) = 0;
|
|
virtual float GetLastForwardMove(void) = 0;
|
|
virtual float Joystick_GetForward(void) = 0;
|
|
virtual float Joystick_GetSide(void) = 0;
|
|
virtual float Joystick_GetPitch(void) = 0;
|
|
virtual float Joystick_GetYaw(void) = 0;
|
|
|
|
// Third Person camera ( TODO/FIXME: Move this to a separate interface? )
|
|
virtual void CAM_Think(void) = 0;
|
|
virtual int CAM_IsThirdPerson(void) = 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;
|
|
|
|
// orthographic camera info ( TODO/FIXME: Move this to a separate
|
|
// interface? )
|
|
virtual void CAM_ToOrthographic() = 0;
|
|
virtual bool CAM_IsOrthographic() const = 0;
|
|
virtual void CAM_OrthographicSize(float &w, float &h) const = 0;
|
|
|
|
#if defined(HL2_CLIENT_DLL)
|
|
// IK back channel info
|
|
virtual void AddIKGroundContactInfo(int entindex, float minheight,
|
|
float maxheight) = 0;
|
|
#endif
|
|
|
|
virtual void LevelInit(void) = 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;
|
|
|
|
virtual bool EnableJoystickMode() = 0;
|
|
};
|
|
|
|
extern ::IInput *input;
|
|
|
|
#endif // IINPUT_H
|