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.
167 lines
4.8 KiB
167 lines
4.8 KiB
![]()
4 years ago
|
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||
|
//
|
||
|
// Purpose: Client's Support "weapon"
|
||
|
//
|
||
|
// $NoKeywords: $
|
||
|
//=============================================================================//
|
||
|
#include "cbase.h"
|
||
|
#include "weapon_twohandedcontainer.h"
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose: Draws little viewmodel attachments
|
||
|
//-----------------------------------------------------------------------------
|
||
|
void C_WeaponTwoHandedContainer::ViewModelDrawn( C_BaseViewModel *pBaseViewModel )
|
||
|
{
|
||
|
BaseClass::ViewModelDrawn( pBaseViewModel );
|
||
|
|
||
|
if (pBaseViewModel->ViewModelIndex() != 0)
|
||
|
{
|
||
|
if ( m_hRightWeapon )
|
||
|
{
|
||
|
m_hRightWeapon->ViewModelDrawn(pBaseViewModel);
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
if ( m_hLeftWeapon )
|
||
|
{
|
||
|
m_hLeftWeapon->ViewModelDrawn(pBaseViewModel);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose:
|
||
|
//-----------------------------------------------------------------------------
|
||
|
bool C_WeaponTwoHandedContainer::OnFireEvent( C_BaseViewModel *pViewModel, const Vector& origin,
|
||
|
const QAngle& angles, int event, const char *options )
|
||
|
{
|
||
|
bool bRight = m_hRightWeapon->OnFireEvent( pViewModel, origin, angles, event, options );
|
||
|
bool bLeft = m_hLeftWeapon->OnFireEvent( pViewModel, origin, angles, event, options );
|
||
|
|
||
|
return ( bRight || bLeft );
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose:
|
||
|
//-----------------------------------------------------------------------------
|
||
|
void C_WeaponTwoHandedContainer::OnDataChanged( DataUpdateType_t updateType )
|
||
|
{
|
||
|
BaseClass::OnDataChanged( updateType );
|
||
|
|
||
|
// Did we just receive a new weapon?
|
||
|
bool rightchanged = m_hOldRightWeapon.Get() != m_hRightWeapon.Get() ? true : false;
|
||
|
bool leftchanged = m_hOldLeftWeapon.Get() != m_hLeftWeapon.Get() ? true : false;
|
||
|
|
||
|
if ( rightchanged || leftchanged )
|
||
|
{
|
||
|
/*
|
||
|
// Tell weapons that they're being holstered
|
||
|
if ( m_hRightWeapon != NULL && rightchanged )
|
||
|
{
|
||
|
m_hRightWeapon->Holster( NULL );
|
||
|
}
|
||
|
if ( m_hLeftWeapon != NULL && leftchanged )
|
||
|
{
|
||
|
m_hLeftWeapon->Holster( NULL );
|
||
|
}
|
||
|
*/
|
||
|
|
||
|
HookWeaponEntities();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose:
|
||
|
//-----------------------------------------------------------------------------
|
||
|
void C_WeaponTwoHandedContainer::HookWeaponEntities( void )
|
||
|
{
|
||
|
m_hOldRightWeapon = m_hRightWeapon;
|
||
|
m_hOldLeftWeapon = m_hLeftWeapon;
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose: Never draw the container
|
||
|
//-----------------------------------------------------------------------------
|
||
|
bool C_WeaponTwoHandedContainer::ShouldDraw( void )
|
||
|
{
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose: This weapon is the active weapon, and it should now draw anything
|
||
|
// it wants to. This gets called every frame.
|
||
|
//-----------------------------------------------------------------------------
|
||
|
void C_WeaponTwoHandedContainer::Redraw()
|
||
|
{
|
||
|
BaseClass::Redraw();
|
||
|
|
||
|
if ( m_hRightWeapon.Get() )
|
||
|
{
|
||
|
m_hRightWeapon->Redraw();
|
||
|
}
|
||
|
if ( m_hLeftWeapon.Get() )
|
||
|
{
|
||
|
m_hLeftWeapon->Redraw();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose: Draw both weapon's ammo's
|
||
|
//-----------------------------------------------------------------------------
|
||
|
void C_WeaponTwoHandedContainer::DrawAmmo()
|
||
|
{
|
||
|
// Just tell our active weapon to draw it's ammo, since our offhand doesn't use it
|
||
|
if ( m_hLeftWeapon )
|
||
|
{
|
||
|
m_hLeftWeapon->DrawAmmo();
|
||
|
}
|
||
|
if ( m_hRightWeapon.Get() )
|
||
|
{
|
||
|
m_hRightWeapon->DrawAmmo();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose: Let each weapon handle input
|
||
|
//-----------------------------------------------------------------------------
|
||
|
void C_WeaponTwoHandedContainer::HandleInput( void )
|
||
|
{
|
||
|
BaseClass::HandleInput();
|
||
|
|
||
|
if ( m_hRightWeapon )
|
||
|
{
|
||
|
m_hRightWeapon->HandleInput();
|
||
|
}
|
||
|
if ( m_hLeftWeapon )
|
||
|
{
|
||
|
m_hLeftWeapon->HandleInput();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose: Let each weapon handle input
|
||
|
//-----------------------------------------------------------------------------
|
||
|
void C_WeaponTwoHandedContainer::OverrideMouseInput( float *x, float *y )
|
||
|
{
|
||
|
BaseClass::OverrideMouseInput( x,y );
|
||
|
|
||
|
if ( m_hRightWeapon )
|
||
|
{
|
||
|
m_hRightWeapon->OverrideMouseInput( x,y );
|
||
|
}
|
||
|
if ( m_hLeftWeapon )
|
||
|
{
|
||
|
m_hLeftWeapon->OverrideMouseInput( x,y );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose:
|
||
|
// Output : Returns true on success, false on failure.
|
||
|
//-----------------------------------------------------------------------------
|
||
|
bool C_WeaponTwoHandedContainer::VisibleInWeaponSelection( void )
|
||
|
{
|
||
|
return false;
|
||
|
}
|