本文整理汇总了C++中CBaseTFPlayer::SwitchToNextBestWeapon方法的典型用法代码示例。如果您正苦于以下问题:C++ CBaseTFPlayer::SwitchToNextBestWeapon方法的具体用法?C++ CBaseTFPlayer::SwitchToNextBestWeapon怎么用?C++ CBaseTFPlayer::SwitchToNextBestWeapon使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CBaseTFPlayer
的用法示例。
在下文中一共展示了CBaseTFPlayer::SwitchToNextBestWeapon方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ItemPostFrame
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
void CWeaponBuilder::ItemPostFrame( void )
{
CBaseTFPlayer *pOwner = ToBaseTFPlayer( GetOwner() );
if ( !pOwner )
return;
// Ignore input while the player's building anything
if ( pOwner->IsBuilding() )
return;
// Switch away if I'm not in placement mode
if ( m_iBuildState != BS_PLACING && m_iBuildState != BS_PLACING_INVALID )
{
pOwner->SwitchToNextBestWeapon( NULL );
return;
}
if (( pOwner->m_nButtons & IN_ATTACK ) && (m_flNextPrimaryAttack <= gpGlobals->curtime) )
{
PrimaryAttack();
}
// Allow shield post frame
AllowShieldPostFrame( true );
WeaponIdle();
}
示例2: ItemPostFrame
//-----------------------------------------------------------------------------
// Purpose: Handle deploying, undeploying, firing, etc.
// TODO: Add a deploy to the firing! Currently no reloading!
//-----------------------------------------------------------------------------
void CWeaponRocketLauncher::ItemPostFrame( void )
{
// Get the player.
CBaseTFPlayer *pPlayer = ToBaseTFPlayer( GetOwner() );
if ( !pPlayer )
return;
if ( UsesClipsForAmmo1() )
{
CheckReload();
}
#if !defined( CLIENT_DLL )
if ( !HasPrimaryAmmo() && ( m_flNextPrimaryAttack <= gpGlobals->curtime ) )
{
pPlayer->SwitchToNextBestWeapon( NULL );
}
#endif
// Handle Firing
if ( GetShieldState() == SS_DOWN && !m_bInReload )
{
// Attempting to fire.
if ( ( pPlayer->m_nButtons & IN_ATTACK ) && ( m_flNextPrimaryAttack <= gpGlobals->curtime ) )
{
if ( m_iClip1 > 0 )
{
PrimaryAttack();
}
else
{
Reload();
}
}
// Reload button (or fire button when we're out of ammo)
if ( m_flNextPrimaryAttack <= gpGlobals->curtime )
{
if ( pPlayer->m_nButtons & IN_RELOAD )
{
Reload();
}
else if ( !((pPlayer->m_nButtons & IN_ATTACK) || (pPlayer->m_nButtons & IN_ATTACK2) || (pPlayer->m_nButtons & IN_RELOAD)) )
{
if ( !m_iClip1 && HasPrimaryAmmo() )
{
Reload();
}
}
}
}
// Prevent shield post frame if we're not ready to attack, or we're charging
AllowShieldPostFrame( m_flNextPrimaryAttack <= gpGlobals->curtime || m_bInReload );
}
示例3: PrimaryAttack
//-----------------------------------------------------------------------------
// Purpose: Start placing or building the currently selected object
//-----------------------------------------------------------------------------
void CWeaponBuilder::PrimaryAttack( void )
{
CBaseTFPlayer *pOwner = ToBaseTFPlayer( GetOwner() );
if ( !pOwner )
return;
// What state should we move to?
switch( m_iBuildState )
{
case BS_IDLE:
{
// Idle state starts selection
SetCurrentState( BS_SELECTING );
}
break;
case BS_SELECTING:
{
// Do nothing, client handles selection
return;
}
break;
case BS_PLACING:
{
if ( m_hObjectBeingBuilt )
{
// Give the object a chance to veto the "start building" command. Objects like barbed wire
// may want to change their properties instead of actually building yet.
if ( m_hObjectBeingBuilt->PreStartBuilding() )
{
int iFlags = m_hObjectBeingBuilt->GetObjectFlags();
// Can't build if the game hasn't started
if ( !tf_fastbuild.GetInt() && CurrentActIsAWaitingAct() )
{
ClientPrint( pOwner, HUD_PRINTCENTER, "Can't build until the game's started.\n" );
return;
}
StartBuilding();
// Should we switch away?
if ( iFlags & OF_ALLOW_REPEAT_PLACEMENT )
{
// Start placing another
SetCurrentState( BS_PLACING );
StartPlacement();
}
else
{
pOwner->SwitchToNextBestWeapon( NULL );
}
}
}
}
break;
case BS_PLACING_INVALID:
{
WeaponSound( SINGLE_NPC );
// If there is any associated error text when placing the object, display it
if( m_hObjectBeingBuilt != NULL )
{
if (m_hObjectBeingBuilt->MustBeBuiltInResourceZone())
{
ClientPrint( pOwner, HUD_PRINTCENTER, "Only placeable in an empty resource zone.\n" );
}
else if (m_hObjectBeingBuilt->MustBeBuiltInConstructionYard())
{
ClientPrint( pOwner, HUD_PRINTCENTER, "Only placeable in a construction yard.\n" );
}
}
}
break;
}
m_flNextPrimaryAttack = gpGlobals->curtime + 0.2f;
}