Modified source engine (2017) developed by valve and leaked in 2020. Not for commercial purporses
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

5 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;
}