// Fill out your copyright notice in the Description page of Project Settings.


#include "KnifeWeapon.h"

#include "Kismet/GameplayStatics.h"
#include "vampires/PlayerCharacter.h"
#include "vampires/Projectile.h"

AKnifeWeapon::AKnifeWeapon()
{
}

void AKnifeWeapon::BeginPlay()
{
	Super::BeginPlay();
}

void AKnifeWeapon::FireWeaponAction_Implementation()
{
	Super::FireWeaponAction_Implementation();

	if (UKismetSystemLibrary::DoesImplementInterface(GetOwner(), UInputable::StaticClass()))
	{
		if (IsValid(ProjectileTemplate))
		{
			FActorSpawnParameters actorSpawnParameters;
			actorSpawnParameters.Owner = this;
			actorSpawnParameters.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn;
			actorSpawnParameters.TransformScaleMethod = ESpawnActorScaleMethod::MultiplyWithRoot;

			AProjectile* projectile = GetWorld()->SpawnActor<AProjectile>(ProjectileTemplate, GetOwner()->GetTransform(),
			                                                              actorSpawnParameters);

			FVector direction = FVector(IInputable::Execute_Input_GetPreviousMovementDirection(GetOwner()), 0.0);
			direction.Normalize();
			projectile->SetTargetDirection(direction);
		}
	}	
}