CPlayerAbilities.cpp
No notes
Syntax:
C++
#include "CPlayerAbilities.h" #include "extdll.h" #include "util.h" #include "cbase.h" #include "monsters.h" #include "weapons.h" #include "player.h" extern globalvars_t* glGlobals; CPlayerAbilities::CPlayerAbilities() { m_activatedAbility = NONE; m_pPlayer = NULL; m_flAbilityTimeLeft = MAX_ABILITY_DURATION; Precache(); } void CPlayerAbilities::Precache( void ) { PRECACHE_SOUND( "abilities/on.wav" ); PRECACHE_SOUND( "abilities/off.wav" ); PRECACHE_SOUND( "abilities/notimeleft.wav" ); } void CPlayerAbilities::Think( void ) { if( HasEnabledAbility() ) { if( !HasAbilityTimeLeft() ) { DisableAbility(); m_flAbilityTimeLeft = 0.0; } float flDrain = gpGlobals->time - m_flActivationTimeStart; m_flAbilityTimeLeft -= flDrain; } } bool CPlayerAbilities::EnableAbility( abilities_t ability ) { if( HasEnabledAbility() ) return false; if( !HasAbilityTimeLeft() ) { PlaySound( NO_TIME_LEFT ); return false; } m_flActivationTimeStart = gpGlobals->time; m_activatedAbility = ability; PlaySound( ABILITY_ON ); return true; } bool CPlayerAbilities::DisableAbility( void ) { if( !HasEnabledAbility() ) return false; m_flActivationTimeStart = 0.0f; m_activatedAbility = NONE; PlaySound( ABILITY_OFF ); return true; } void CPlayerAbilities::PlaySound( sound_t sound ) const { switch( sound ) { case ABILITY_ON: EMIT_SOUND( ENT( m_pPlayer->pev ), CHAN_BODY, "abilities/on.wav", VOL_NORM, ATTN_NORM ); break; case ABILITY_OFF: EMIT_SOUND( ENT( m_pPlayer->pev ), CHAN_BODY, "abilities/off.wav", VOL_NORM, ATTN_NORM ); break; case NO_TIME_LEFT: EMIT_SOUND( ENT( m_pPlayer->pev ), CHAN_BODY, "abilities/notimeleft.wav", VOL_NORM, ATTN_NORM ); break; } }