|
|
|
#pragma once
|
|
|
|
#ifndef INPUT_MOUSE_H
|
|
|
|
#define INPUT_MOUSE_H
|
|
|
|
#include "cl_dll.h"
|
|
|
|
#include "usercmd.h"
|
|
|
|
#include "in_defs.h"
|
|
|
|
|
|
|
|
class AbstractInput
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
virtual void IN_ClientMoveEvent( float forwardmove, float sidemove ) = 0;
|
|
|
|
virtual void IN_ClientLookEvent( float relyaw, float relpitch ) = 0;
|
|
|
|
virtual void IN_Move( float frametime, usercmd_t *cmd ) = 0;
|
|
|
|
virtual void IN_MouseEvent( int mstate ) = 0;
|
|
|
|
virtual void IN_ClearStates( void ) = 0;
|
|
|
|
virtual void IN_ActivateMouse( void ) = 0;
|
|
|
|
virtual void IN_DeactivateMouse( void ) = 0;
|
|
|
|
virtual void IN_Accumulate( void ) = 0;
|
|
|
|
virtual void IN_Commands( void ) = 0;
|
|
|
|
virtual void IN_Shutdown( void ) = 0;
|
|
|
|
virtual void IN_Init( void ) = 0;
|
|
|
|
};
|
|
|
|
|
|
|
|
class FWGSInput : public AbstractInput
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
virtual void IN_ClientMoveEvent( float forwardmove, float sidemove );
|
|
|
|
virtual void IN_ClientLookEvent( float relyaw, float relpitch );
|
|
|
|
virtual void IN_Move( float frametime, usercmd_t *cmd );
|
|
|
|
virtual void IN_MouseEvent( int mstate );
|
|
|
|
virtual void IN_ClearStates( void );
|
|
|
|
virtual void IN_ActivateMouse( void );
|
|
|
|
virtual void IN_DeactivateMouse( void );
|
|
|
|
virtual void IN_Accumulate( void );
|
|
|
|
virtual void IN_Commands( void );
|
|
|
|
virtual void IN_Shutdown( void );
|
|
|
|
virtual void IN_Init( void );
|
|
|
|
|
|
|
|
protected:
|
|
|
|
float ac_forwardmove;
|
|
|
|
float ac_sidemove;
|
|
|
|
int ac_movecount;
|
|
|
|
float rel_yaw;
|
|
|
|
float rel_pitch;
|
|
|
|
};
|
|
|
|
|
|
|
|
// No need for goldsource input support on the platforms that are not supported by GoldSource.
|
|
|
|
#if defined(GOLDSOURCE_SUPPORT) && (defined(_WIN32) || defined(__linux__) || defined(__APPLE__)) && (defined(__i386) || defined(_M_IX86))
|
|
|
|
#define SUPPORT_GOLDSOURCE_INPUT
|
|
|
|
class GoldSourceInput : public AbstractInput
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
virtual void IN_ClientMoveEvent( float forwardmove, float sidemove ) {}
|
|
|
|
virtual void IN_ClientLookEvent( float relyaw, float relpitch ) {}
|
|
|
|
virtual void IN_Move( float frametime, usercmd_t *cmd );
|
|
|
|
virtual void IN_MouseEvent( int mstate );
|
|
|
|
virtual void IN_ClearStates( void );
|
|
|
|
virtual void IN_ActivateMouse( void );
|
|
|
|
virtual void IN_DeactivateMouse( void );
|
|
|
|
virtual void IN_Accumulate( void );
|
|
|
|
virtual void IN_Commands( void );
|
|
|
|
virtual void IN_Shutdown( void );
|
|
|
|
virtual void IN_Init( void );
|
|
|
|
|
|
|
|
protected:
|
|
|
|
void IN_GetMouseDelta( int *pOutX, int *pOutY);
|
|
|
|
void IN_MouseMove ( float frametime, usercmd_t *cmd);
|
|
|
|
void IN_StartupMouse (void);
|
|
|
|
|
|
|
|
int mouse_buttons;
|
|
|
|
int mouse_oldbuttonstate;
|
|
|
|
POINT current_pos;
|
|
|
|
int old_mouse_x, old_mouse_y, mx_accum, my_accum;
|
|
|
|
int mouseinitialized;
|
|
|
|
};
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#endif
|