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,111 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
// $NoKeywords: $
|
||||
//=============================================================================//
|
||||
|
||||
#include "cbase.h"
|
||||
#include "basetfplayer_shared.h"
|
||||
#include "weapon_combat_usedwithshieldbase.h"
|
||||
#include "weapon_combatshield.h"
|
||||
#include "weapon_twohandedcontainer.h"
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Make sure we're not switching directly to this weapon, since this
|
||||
// weapon can only be "switched" to by the twohandedcontainer weapon.
|
||||
//-----------------------------------------------------------------------------
|
||||
bool CWeaponCombatUsedWithShieldBase::CanDeploy( void )
|
||||
{
|
||||
CBaseTFPlayer *pPlayer = ToBaseTFPlayer( GetOwner() );
|
||||
if (!pPlayer)
|
||||
return false;
|
||||
|
||||
// Make sure the current weapon is a twohanded weapon container
|
||||
CWeaponTwoHandedContainer *pContainer = dynamic_cast<CWeaponTwoHandedContainer*>(pPlayer->GetActiveWeapon());
|
||||
if ( !pContainer )
|
||||
{
|
||||
// Not the two handed container, so deploy the two handed container instead
|
||||
pContainer = ( CWeaponTwoHandedContainer * )pPlayer->Weapon_OwnsThisType( "weapon_twohandedcontainer" );
|
||||
if ( !pContainer )
|
||||
return BaseClass::Deploy();
|
||||
|
||||
// Deploy the container
|
||||
pPlayer->Weapon_Switch( pContainer );
|
||||
|
||||
// Make sure the container's using the desired weapon
|
||||
pContainer->SetWeapons( this, pContainer->GetRightWeapon() );
|
||||
return false;
|
||||
}
|
||||
|
||||
return BaseClass::CanDeploy();
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
// Input : allow -
|
||||
//-----------------------------------------------------------------------------
|
||||
void CWeaponCombatUsedWithShieldBase::AllowShieldPostFrame( bool allow )
|
||||
{
|
||||
CBaseTFPlayer *pOwner = ToBaseTFPlayer( GetOwner() );
|
||||
if (!pOwner)
|
||||
return;
|
||||
|
||||
CWeaponCombatShield *shield = static_cast< CWeaponCombatShield * >( pOwner->Weapon_OwnsThisType( "weapon_combat_shield" ) );
|
||||
if ( !shield )
|
||||
return;
|
||||
|
||||
shield->SetAllowPostFrame( allow );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
// Output : int
|
||||
//-----------------------------------------------------------------------------
|
||||
int CWeaponCombatUsedWithShieldBase::GetShieldState( void )
|
||||
{
|
||||
CBaseTFPlayer *pOwner = ToBaseTFPlayer( GetOwner() );
|
||||
if ( !pOwner )
|
||||
return SS_DOWN;
|
||||
|
||||
CWeaponCombatShield *pShield = pOwner->GetCombatShield();
|
||||
if ( !pShield )
|
||||
return SS_DOWN;
|
||||
|
||||
return pShield->GetShieldState();
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Mirror the values in the container, if there is one
|
||||
// Input : *pPlayer -
|
||||
// Output : int
|
||||
//-----------------------------------------------------------------------------
|
||||
int CWeaponCombatUsedWithShieldBase::UpdateClientData( CBasePlayer *pPlayer )
|
||||
{
|
||||
if ( !pPlayer )
|
||||
{
|
||||
return BaseClass::UpdateClientData( pPlayer );
|
||||
}
|
||||
|
||||
CWeaponTwoHandedContainer *pContainer = ( CWeaponTwoHandedContainer * )pPlayer->Weapon_OwnsThisType( "weapon_twohandedcontainer" );
|
||||
if ( !pContainer || pContainer != pPlayer->GetActiveWeapon() )
|
||||
return BaseClass::UpdateClientData( pPlayer );
|
||||
|
||||
// Make sure this weapon is one of the container's active weapons
|
||||
if ( pContainer->GetLeftWeapon() != this && pContainer->GetRightWeapon() != this )
|
||||
return BaseClass::UpdateClientData( pPlayer );
|
||||
|
||||
int retval = pContainer->UpdateClientData( pPlayer );
|
||||
m_iState = pContainer->m_iState;
|
||||
return retval;
|
||||
}
|
||||
|
||||
LINK_ENTITY_TO_CLASS( weapon_combat_usedwithshieldbase, CWeaponCombatUsedWithShieldBase );
|
||||
|
||||
IMPLEMENT_NETWORKCLASS_ALIASED( WeaponCombatUsedWithShieldBase, DT_WeaponCombatUsedWithShieldBase )
|
||||
|
||||
BEGIN_NETWORK_TABLE( CWeaponCombatUsedWithShieldBase, DT_WeaponCombatUsedWithShieldBase )
|
||||
END_NETWORK_TABLE()
|
||||
|
||||
BEGIN_PREDICTION_DATA( CWeaponCombatUsedWithShieldBase )
|
||||
END_PREDICTION_DATA()
|
||||
Reference in New Issue
Block a user