/*********************************************************************//**
*	Implementace zbrane: Knife (Nuz)
*	
*	author: Michal Jirous
*	date: 9.12.2008
*	file: wpn_knife.cpp
**********************************************************************/

#include "wpn_knife.h"
#include "ctrl_var_definition.h"
#include "game.h"
#include "attack_info.h"
#include "crosshairs.h"
using namespace modelLib;

//poradi a identifikacni cisla animaci
enum
{
	IDLE = 0,
	SLASH1,
	SLASH2,
	GRAB,
	STAB,
	STAB_MISS,
	MIDSLASH,
	MIDSLASH2
};

const int PRIMARY_ATTACK_DURATION = 750;//ms
const int GRAB_DURATION = 2000;//ms
const float ATTACK_DISTANCE = 48.0f;


WeaponKnife::WeaponKnife( ) : BasicWeapon( )
{
	m_bNeedAmmo = false;
	setModel( "v_knife2.mdl" );
	soundLibrary.loadSound( m_Sounds[MISS1], "weapons/knife/KNIFE1.wav" );
	soundLibrary.loadSound( m_Sounds[MISS2], "weapons/knife/KNIFE2.wav" );
	soundLibrary.loadSound( m_Sounds[MISS3], "weapons/knife/KNIFE3.wav" );
	soundLibrary.loadSound( m_Sounds[HIT_WALL1], "weapons/knife/knife_hit_wall1.wav" );
	soundLibrary.loadSound( m_Sounds[HIT_WALL2], "weapons/knife/knife_hit_wall2.wav" );
	soundLibrary.loadSound( m_Sounds[HIT_FLESH1], "weapons/knife/knife_hit_flesh1.wav" );
	soundLibrary.loadSound( m_Sounds[HIT_FLESH2], "weapons/knife/knife_hit_flesh2.wav" );
	m_pPrimaryAttackDmg = gamevarsLibrary::getVariable( vardef::WEAPON_KNIFE_DMG_NAME );
	m_iCrosshair = CROSSHAIR_NONE;
}

void WeaponKnife::primaryAttack( bool pulse )
{
	if( playAnimation( rand()%2 + SLASH1, PRIMARY_ATTACK_DURATION ))
	{
		int iDamage = gamevarsLibrary::getiData( m_pPrimaryAttackDmg );
		AttackInfo info;
		if( basic_fight( iDamage, info, ATTACK_DISTANCE, dmg::SLASH ) )
		{
			if( info.m_iMaterial == MATERIAL_FLESH )
				m_Sounds[ rand() % 2 + HIT_FLESH1 ].play();
			else
				m_Sounds[ rand() % 2 + HIT_WALL1 ].play();
		}
		else
			m_Sounds[ rand() % 3 + MISS1 ].play();
	}	

}

void WeaponKnife::idle()
{
	playAnimation( IDLE, 2000, true, UNLOCKED );	//UNLOCKED, aby ji bylo mozne cimkoliv prepsat
}

void WeaponKnife::secondaryAttack( bool pulse )
{
	//bude
}

void WeaponKnife::grab()
{
	playAnimation( GRAB, GRAB_DURATION );
}

WeaponKnife::~WeaponKnife()
{
	for( int i = 0; i < NUM_SOUNDS; i++ )
		soundLibrary.unloadSound( m_Sounds[i] );	//uklid
}
