CPlayerAbilities.cpp

by ninja on July 23rd, 2010
No notes
Syntax: C++
Show lines - Hide lines - Show in textbox - Download
#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;
	}
}

Leave a Reply

Note: XHTML is allowed. Your email address will never be published.

Subscribe to this comment feed via RSS