Team Fortress 2 Source Code as on 22/4/2020
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $NoKeywords: $
//=============================================================================//
#include "vgui_controls/pch_vgui_controls.h"
#include <vgui_controls/KeyRepeat.h>
// memdbgon must be the last include file in a .cpp file
#include "tier0/memdbgon.h"
using namespace vgui;
vgui::KeyCode g_iCodesForAliases[FM_NUM_KEYREPEAT_ALIASES] = { KEY_XBUTTON_UP, KEY_XBUTTON_DOWN, KEY_XBUTTON_LEFT, KEY_XBUTTON_RIGHT, };
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
void CKeyRepeatHandler::KeyDown( vgui::KeyCode code ) { int iIndex = GetIndexForCode(code); if ( iIndex == -1 ) return;
if ( m_bAliasDown[ iIndex ] ) return;
Reset(); m_bAliasDown[ iIndex ] = true; m_flNextKeyRepeat = system()->GetCurrentTime() + 0.4; m_bHaveKeyDown = true; }
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
void CKeyRepeatHandler::KeyUp( vgui::KeyCode code ) { int iIndex = GetIndexForCode(code); if ( iIndex == -1 ) return;
m_bAliasDown[ GetIndexForCode(code) ] = false;
m_bHaveKeyDown = false; for ( int i = 0; i < FM_NUM_KEYREPEAT_ALIASES; i++ ) { if ( m_bAliasDown[i] ) { m_bHaveKeyDown = true; break; } } }
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
vgui::KeyCode CKeyRepeatHandler::KeyRepeated( void ) { if ( IsPC() ) return BUTTON_CODE_NONE;
if ( !m_bHaveKeyDown ) return BUTTON_CODE_NONE;
if ( m_flNextKeyRepeat < system()->GetCurrentTime() ) { for ( int i = 0; i < FM_NUM_KEYREPEAT_ALIASES; i++ ) { if ( m_bAliasDown[i] ) { m_flNextKeyRepeat = system()->GetCurrentTime() + m_flRepeatTimes[i]; return g_iCodesForAliases[i]; } } }
return BUTTON_CODE_NONE; }
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
void CKeyRepeatHandler::SetKeyRepeatTime( vgui::KeyCode code, float flRepeat ) { int iIndex = GetIndexForCode(code); Assert( iIndex != -1 ); m_flRepeatTimes[ iIndex ] = flRepeat; }
|