//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: Auto Repair // // $NoKeywords: $ //=============================================================================// #include "cbase.h" #include "tf_gamemovement_chooser.h" #include "tf_movedata.h" static CTFGameMovementChooser g_GameMovement; IGameMovement *g_pGameMovement = ( IGameMovement* )&g_GameMovement; //----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- CTFGameMovementChooser::CTFGameMovementChooser() { // Allocate memory for a movement type for each class (0 = undecided) m_Movements.SetSize( TFCLASS_CLASS_COUNT ); // NOTE: the order here matches the enum order in tf_shareddefs.h m_Movements[TFCLASS_RECON] = &m_ReconMovement; m_Movements[TFCLASS_COMMANDO] = &m_CommandoMovement; m_Movements[TFCLASS_MEDIC] = &m_MedicMovement; m_Movements[TFCLASS_DEFENDER] = &m_DefenderMovement; m_Movements[TFCLASS_SNIPER] = &m_SniperMovement; m_Movements[TFCLASS_SUPPORT] = &m_SupportMovement; m_Movements[TFCLASS_ESCORT] = &m_EscortMovement; m_Movements[TFCLASS_SAPPER] = &m_SapperMovement; m_Movements[TFCLASS_INFILTRATOR] = &m_InfiltratorMovement; m_Movements[TFCLASS_PYRO] = &m_PyroMovement; } //----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CTFGameMovementChooser::ProcessMovement( CBasePlayer *pPlayer, CMoveData *pMoveData ) { // Convert CMoveData to CTFMoveData CTFMoveData *pTFMoveData = static_cast( pMoveData ); // Cache the current class id m_nClassID = pTFMoveData->m_nClassID; // Player class movement. (If possible) if ( m_nClassID != TFCLASS_UNDECIDED ) { m_Movements[m_nClassID]->ProcessClassMovement( (CBaseTFPlayer *)pPlayer, pTFMoveData ); } } //----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- const Vector &CTFGameMovementChooser::GetPlayerMins( bool ducked ) const { // Player class mins. return m_Movements[m_nClassID]->GetPlayerMins( ducked ); } //----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- const Vector &CTFGameMovementChooser::GetPlayerMaxs( bool ducked ) const { return m_Movements[m_nClassID]->GetPlayerMins( ducked ); } //----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- const Vector &CTFGameMovementChooser::GetPlayerViewOffset( bool ducked ) const { return m_Movements[m_nClassID]->GetPlayerViewOffset( ducked ); }