mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-08 17:59:37 +00:00
1
This commit is contained in:
@@ -0,0 +1,193 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
// $NoKeywords: $
|
||||
//=============================================================================//
|
||||
|
||||
#include "cbase.h"
|
||||
#include "in_buttons.h"
|
||||
#include "takedamageinfo.h"
|
||||
#include "weapon_tfcbase.h"
|
||||
#include "ammodef.h"
|
||||
#include "tfc_gamerules.h"
|
||||
|
||||
extern IVModelInfo* modelinfo;
|
||||
|
||||
|
||||
#if defined( CLIENT_DLL )
|
||||
|
||||
#include "vgui/ISurface.h"
|
||||
#include "vgui_controls/Controls.h"
|
||||
#include "c_tfc_player.h"
|
||||
#include "hud_crosshair.h"
|
||||
|
||||
#else
|
||||
|
||||
#include "tfc_player.h"
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------- //
|
||||
// Global functions.
|
||||
// ----------------------------------------------------------------------------- //
|
||||
|
||||
bool IsAmmoType( int iAmmoType, const char *pAmmoName )
|
||||
{
|
||||
return GetAmmoDef()->Index( pAmmoName ) == iAmmoType;
|
||||
}
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------- //
|
||||
// CWeaponTFCBase tables.
|
||||
// ----------------------------------------------------------------------------- //
|
||||
|
||||
IMPLEMENT_NETWORKCLASS_ALIASED( WeaponTFCBase, DT_WeaponTFCBase )
|
||||
|
||||
BEGIN_NETWORK_TABLE( CWeaponTFCBase, DT_WeaponTFCBase )
|
||||
END_NETWORK_TABLE()
|
||||
|
||||
BEGIN_PREDICTION_DATA( CWeaponTFCBase )
|
||||
END_PREDICTION_DATA()
|
||||
|
||||
LINK_ENTITY_TO_CLASS( weapon_tfc_base, CWeaponTFCBase );
|
||||
|
||||
|
||||
#ifdef GAME_DLL
|
||||
|
||||
BEGIN_DATADESC( CWeaponTFCBase )
|
||||
|
||||
DEFINE_FUNCTION( FallThink )
|
||||
|
||||
END_DATADESC()
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef CLIENT_DLL
|
||||
ConVar cl_crosshaircolor( "cl_crosshaircolor", "0", FCVAR_CLIENTDLL | FCVAR_ARCHIVE );
|
||||
ConVar cl_dynamiccrosshair( "cl_dynamiccrosshair", "1", FCVAR_CLIENTDLL | FCVAR_ARCHIVE );
|
||||
ConVar cl_scalecrosshair( "cl_scalecrosshair", "1", FCVAR_CLIENTDLL | FCVAR_ARCHIVE );
|
||||
ConVar cl_crosshairalpha( "cl_crosshairalpha", "200", FCVAR_CLIENTDLL | FCVAR_ARCHIVE );
|
||||
|
||||
int g_iScopeTextureID = 0;
|
||||
int g_iScopeDustTextureID = 0;
|
||||
#endif
|
||||
|
||||
// ----------------------------------------------------------------------------- //
|
||||
// CWeaponTFCBase implementation.
|
||||
// ----------------------------------------------------------------------------- //
|
||||
CWeaponTFCBase::CWeaponTFCBase()
|
||||
{
|
||||
SetPredictionEligible( true );
|
||||
AddSolidFlags( FSOLID_TRIGGER ); // Nothing collides with these but it gets touches.
|
||||
}
|
||||
|
||||
|
||||
bool CWeaponTFCBase::IsPredicted() const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
CTFCPlayer* CWeaponTFCBase::GetPlayerOwner() const
|
||||
{
|
||||
return dynamic_cast< CTFCPlayer* >( GetOwner() );
|
||||
}
|
||||
|
||||
const CTFCWeaponInfo &CWeaponTFCBase::GetTFCWpnData() const
|
||||
{
|
||||
const FileWeaponInfo_t *pWeaponInfo = &GetWpnData();
|
||||
const CTFCWeaponInfo *pTFCInfo;
|
||||
|
||||
#ifdef _DEBUG
|
||||
pTFCInfo = dynamic_cast< const CTFCWeaponInfo* >( pWeaponInfo );
|
||||
Assert( pTFCInfo );
|
||||
#else
|
||||
pTFCInfo = static_cast< const CTFCWeaponInfo* >( pWeaponInfo );
|
||||
#endif
|
||||
|
||||
return *pTFCInfo;
|
||||
}
|
||||
|
||||
|
||||
TFCWeaponID CWeaponTFCBase::GetWeaponID( void ) const
|
||||
{
|
||||
Assert( false ); return WEAPON_NONE;
|
||||
}
|
||||
|
||||
|
||||
bool CWeaponTFCBase::IsA( TFCWeaponID id ) const
|
||||
{
|
||||
return GetWeaponID() == id;
|
||||
}
|
||||
|
||||
|
||||
bool CWeaponTFCBase::IsSilenced( void ) const
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
void CWeaponTFCBase::Precache( void )
|
||||
{
|
||||
BaseClass::Precache();
|
||||
}
|
||||
|
||||
|
||||
#ifdef CLIENT_DLL
|
||||
|
||||
#else // CLIENT_DLL
|
||||
|
||||
void CWeaponTFCBase::Spawn()
|
||||
{
|
||||
BaseClass::Spawn();
|
||||
|
||||
// Set this here to allow players to shoot dropped weapons
|
||||
SetCollisionGroup( COLLISION_GROUP_WEAPON );
|
||||
|
||||
// Move it up a little bit, otherwise it'll be at the guy's feet, and its sound origin
|
||||
// will be in the ground so its EmitSound calls won't do anything.
|
||||
SetLocalOrigin( Vector( 0, 0, 5 ) );
|
||||
}
|
||||
|
||||
bool CWeaponTFCBase::DefaultReload( int iClipSize1, int iClipSize2, int iActivity )
|
||||
{
|
||||
if ( BaseClass::DefaultReload( iClipSize1, iClipSize2, iActivity ) )
|
||||
{
|
||||
SendReloadSoundEvent();
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
void CWeaponTFCBase::SendReloadSoundEvent()
|
||||
{
|
||||
CBasePlayer *pPlayer = GetPlayerOwner();
|
||||
|
||||
assert( pPlayer );
|
||||
|
||||
if ( !pPlayer )
|
||||
return;
|
||||
|
||||
// Send a message to any clients that have this entity to play the reload.
|
||||
CPASFilter filter( pPlayer->GetAbsOrigin() );
|
||||
filter.RemoveRecipient( pPlayer );
|
||||
|
||||
UserMessageBegin( filter, "ReloadEffect" );
|
||||
WRITE_SHORT( pPlayer->entindex() );
|
||||
MessageEnd();
|
||||
}
|
||||
|
||||
Vector CWeaponTFCBase::GetSoundEmissionOrigin() const
|
||||
{
|
||||
CBasePlayer *pPlayer = GetPlayerOwner();
|
||||
if ( pPlayer )
|
||||
return pPlayer->WorldSpaceCenter();
|
||||
else
|
||||
return WorldSpaceCenter();
|
||||
}
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user