mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-08 01:39:36 +00:00
1
This commit is contained in:
@@ -0,0 +1,136 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
// $NoKeywords: $
|
||||
//=============================================================================//
|
||||
#include "cbase.h"
|
||||
#include "c_tf_class_commando.h"
|
||||
#include "usercmd.h"
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
// Commando Data Table
|
||||
//
|
||||
BEGIN_RECV_TABLE_NOBASE( C_PlayerClassCommando, DT_PlayerClassCommandoData )
|
||||
RecvPropInt ( RECVINFO( m_ClassData.m_bCanBullRush ) ),
|
||||
RecvPropInt ( RECVINFO( m_ClassData.m_bBullRush ) ),
|
||||
RecvPropVector ( RECVINFO( m_ClassData.m_vecBullRushDir ) ),
|
||||
RecvPropVector ( RECVINFO( m_ClassData.m_vecBullRushViewDir ) ),
|
||||
RecvPropVector ( RECVINFO( m_ClassData.m_vecBullRushViewGoalDir ) ),
|
||||
RecvPropFloat ( RECVINFO( m_ClassData.m_flBullRushTime ) ),
|
||||
RecvPropFloat ( RECVINFO( m_ClassData.m_flDoubleTapForwardTime ) ),
|
||||
END_RECV_TABLE()
|
||||
|
||||
BEGIN_PREDICTION_DATA_NO_BASE( C_PlayerClassCommando )
|
||||
|
||||
DEFINE_PRED_TYPEDESCRIPTION( m_ClassData, PlayerClassCommandoData_t ),
|
||||
|
||||
END_PREDICTION_DATA()
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
C_PlayerClassCommando::C_PlayerClassCommando( C_BaseTFPlayer *pPlayer ) :
|
||||
C_PlayerClass( pPlayer )
|
||||
{
|
||||
m_ClassData.m_bCanBullRush = false;
|
||||
m_ClassData.m_bBullRush = false;
|
||||
m_ClassData.m_vecBullRushDir.Init();
|
||||
m_ClassData.m_vecBullRushViewDir.Init();
|
||||
m_ClassData.m_vecBullRushViewGoalDir.Init();
|
||||
m_ClassData.m_flBullRushTime = COMMANDO_TIME_INVALID;
|
||||
m_ClassData.m_flDoubleTapForwardTime = COMMANDO_TIME_INVALID;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
C_PlayerClassCommando::~C_PlayerClassCommando()
|
||||
{
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void C_PlayerClassCommando::ClassThink( void )
|
||||
{
|
||||
CheckBullRushState();
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void C_PlayerClassCommando::PostClassThink( void )
|
||||
{
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void C_PlayerClassCommando::ClassPreDataUpdate( void )
|
||||
{
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void C_PlayerClassCommando::ClassOnDataChanged( void )
|
||||
{
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void C_PlayerClassCommando::CreateMove( float flInputSampleTime, CUserCmd *pCmd )
|
||||
{
|
||||
if ( m_ClassData.m_bBullRush )
|
||||
{
|
||||
pCmd->viewangles = m_ClassData.m_vecBullRushViewDir;
|
||||
QAngle angles = m_ClassData.m_vecBullRushViewDir;
|
||||
engine->SetViewAngles( angles );
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
bool C_PlayerClassCommando::CanGetInVehicle( void )
|
||||
{
|
||||
if ( m_ClassData.m_bBullRush )
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void C_PlayerClassCommando::CheckBullRushState( void )
|
||||
{
|
||||
if ( m_ClassData.m_bBullRush )
|
||||
{
|
||||
InterpolateBullRushViewAngles();
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void C_PlayerClassCommando::InterpolateBullRushViewAngles( void )
|
||||
{
|
||||
// Determine the fraction.
|
||||
if ( m_ClassData.m_flBullRushTime < COMMANDO_BULLRUSH_VIEWDELTA_TEST )
|
||||
{
|
||||
m_ClassData.m_vecBullRushViewDir = m_ClassData.m_vecBullRushViewGoalDir;
|
||||
return;
|
||||
}
|
||||
|
||||
float flFraction = 1.0f - ( ( m_ClassData.m_flBullRushTime - COMMANDO_BULLRUSH_VIEWDELTA_TEST ) / COMMANDO_BULLRUSH_VIEWDELTA_TIME );
|
||||
|
||||
QAngle angCurrent;
|
||||
InterpolateAngles( m_ClassData.m_vecBullRushViewDir, m_ClassData.m_vecBullRushViewGoalDir, angCurrent, flFraction );
|
||||
|
||||
NormalizeAngles( angCurrent );
|
||||
m_ClassData.m_vecBullRushViewDir = angCurrent;
|
||||
}
|
||||
Reference in New Issue
Block a user