Ejemplo n.º 1
0
CCrossBow::CCrossBow()
{
	//Load the Animation
	CBaseCharacter::LoadAnimations("resource/aeonaAirCrossBow.xml");
	SetAttacking(false);
	m_pArrow = NULL;
	//m_fTime = 0;
	m_imgArrow = TEX_MNG->LoadTexture("resource/BlueArrow.png", D3DCOLOR_XRGB(0,0,0));
	SetSound(new Sound("resource/sound/AtkBowShoot.wav"));
	m_sndCharged = AUDIO->SFXLoadSound("resource/sound/AtkBowLaser.wav");

	m_fSlashTimer = 0.0f;
}
Ejemplo n.º 2
0
void CCrossBow::Attack(void)
{
	SetAttacking(true);
	CPlayer::GetInstance()->SetAttackDamage(15);
	if(m_fSlashTimer == 0.0f)
	{
		if(CPlayer::GetInstance()->m_bPhilSpecialAttack == false)
		{
			GetSound()->Play();
			ShootArrow();
		}
		else
		{
			AUDIO->SFXPlaySound(m_sndCharged);
		}
	}
}
/*Unused for now*/
void AEnemy::UpdateCharacter()
{
	Super::UpdateCharacter();
	
	if (_receiverAttack)

		if (GetDistanceTo(_receiverAttack) < GetRangeAttack() && !IsAttacking() && !_receiverAttack->IsAttacked()) {
			auto timer = GetWorldTimerManager().GetTimerRate(_countdownTimerHandle);
			if (timer != GetFlipbook(Attack_Animation)->GetTotalDuration())
			{
				SetAttacking(true);
				GetCharacterMovement()->StopMovementImmediately();
				GetWorldTimerManager().SetTimer(_countdownTimerHandle, this, &AAzraelCharacter::Attacking, GetFlipbook(Attack_Animation)->GetTotalDuration()/2.0f, false);
			}
		}
		else {
			_receiverAttack->SetAttacked(false);
		}
		if (IsPawnJumping())
			GetCharacterMovement()->SetMovementMode(MOVE_Falling);
		else if (_isPatrolling && !_isImmobile) {
			GetCharacterMovement()->Velocity = FVector(GetPawnDirection()*-100.f, 0.f, 0.f);
		}
}
Ejemplo n.º 4
0
RectD CCrossBow::GetCollisionRect(void)
{
	RectD rectCollision;
	if(ANM_ATK_UP == GetCurrentAnimation())
	{
		if(m_fSlashTimer < 0.5f)
		{
			rectCollision.left = -2;
			rectCollision.top = -2;
			rectCollision.right = 2;
			rectCollision.bottom = 2;
			if(CPlayer::GetInstance()->m_bPhilSpecialAttack)
			{
				rectCollision.left = -24;
				rectCollision.top = -500;
				rectCollision.right = 24;
				rectCollision.bottom = 500;
				CPlayer::GetInstance()->m_fBlastTimer = 0.15f;
				CPlayer::GetInstance()->SetAttackDamage(29);
			}
		}
		else
		{
			rectCollision.left = -2;
			rectCollision.top = -2;
			rectCollision.right = 2;
			rectCollision.bottom = 2;
			SetAttacking(false);
			m_fSlashTimer = 0.0f;
			CPlayer::GetInstance()->m_bPhilSpecialAttack = false;
		}
	}
	else if(ANM_ATK_DOWN == GetCurrentAnimation())
	{
		if(m_fSlashTimer < 0.5f)
		{
			rectCollision.left = -2;
			rectCollision.top = -2;
			rectCollision.right = 2;
			rectCollision.bottom = 2;
			if(CPlayer::GetInstance()->m_bPhilSpecialAttack)
			{
				rectCollision.left = -24;
				rectCollision.top = -500;
				rectCollision.right = 24;
				rectCollision.bottom = 500;
				CPlayer::GetInstance()->m_fBlastTimer = 0.15f;
				CPlayer::GetInstance()->SetAttackDamage(29);
			}
		}
		else
		{
			rectCollision.left = -2;
			rectCollision.top = -2;
			rectCollision.right = 2;
			rectCollision.bottom = 2;
			SetAttacking(false);
			m_fSlashTimer = 0.0f;
			CPlayer::GetInstance()->m_bPhilSpecialAttack = false;
		}
	}
	else if(ANM_ATK_LEFT == GetCurrentAnimation())
	{
		if(m_fSlashTimer < 0.5f)
		{
			rectCollision.left = -2;
			rectCollision.top = -2;
			rectCollision.right = 2;
			rectCollision.bottom = 2;
			if(CPlayer::GetInstance()->m_bPhilSpecialAttack)
			{
				rectCollision.left = -500;
				rectCollision.top = -24;
				rectCollision.right = 500;
				rectCollision.bottom = 24;
				CPlayer::GetInstance()->m_fBlastTimer = 0.15f;
				CPlayer::GetInstance()->SetAttackDamage(29);
			}
		}
		else
		{
			rectCollision.left = -2;
			rectCollision.top = -2;
			rectCollision.right = 2;
			rectCollision.bottom = 2;
			SetAttacking(false);
			m_fSlashTimer = 0.0f;
			CPlayer::GetInstance()->m_bPhilSpecialAttack = false;
		}
	}
	else if(ANM_ATK_RIGHT == GetCurrentAnimation())
	{
		if(m_fSlashTimer < 0.5f)
		{
			rectCollision.left = -2;
			rectCollision.top = -2;
			rectCollision.right = 2;
			rectCollision.bottom = 2;
			if(CPlayer::GetInstance()->m_bPhilSpecialAttack)
			{
				rectCollision.left = -500;
				rectCollision.top = -24;
				rectCollision.right = 500;
				rectCollision.bottom = 24;
				CPlayer::GetInstance()->m_fBlastTimer = 0.15f;
				CPlayer::GetInstance()->SetAttackDamage(29);
			}
		}
		else
		{
			rectCollision.left = -2;
			rectCollision.top = -2;
			rectCollision.right = 2;
			rectCollision.bottom = 2;
			SetAttacking(false);
			m_fSlashTimer = 0.0f;
			CPlayer::GetInstance()->m_bPhilSpecialAttack = false;
		}
	}
	return rectCollision;
}