#include "DBDAttack.h"
#include "EAttackSubstate.h"
#include "ActionPredictionKey.h"
#include "PreAttackData.h"
#include "PostAttackData.h"
#include "Engine/EngineTypes.h"
#include "AttackSubstateRequestResult.h"

class ACharacter;
class UAttackableComponent;
class ADBDPlayer;
class UDBDAttackSubstate;

void UDBDAttack::Server_RequestStateChange_Implementation(const EAttackSubstate state)
{

}

bool UDBDAttack::Server_RequestStateChange_Validate(const EAttackSubstate state)
{
	return true;
}

void UDBDAttack::Server_HitTarget_Implementation(ACharacter* target, const float targetLocationTimestamp, FActionPredictionKey predictionKey)
{

}

void UDBDAttack::Server_HitDestroyableActorAttackableComponent_Implementation(UAttackableComponent* attackableComponent)
{

}

void UDBDAttack::Server_ClearTargets_Implementation()
{

}

void UDBDAttack::Multicast_SendPostHitTargetData_Implementation(ADBDPlayer* owningKiller, ADBDPlayer* target, const FPreAttackData& preAttackData, const FPostAttackData& postAttackData)
{

}

void UDBDAttack::Multicast_RequestStateChange_Implementation(const EAttackSubstate state)
{

}

void UDBDAttack::Multicast_HitTarget_Implementation(ACharacter* target, bool hitCosmeticOnly)
{

}

void UDBDAttack::Multicast_HitAttackableComponent_Implementation(UAttackableComponent* attackableComponent)
{

}

void UDBDAttack::Multicast_ClearTargets_Implementation()
{

}

void UDBDAttack::Local_OnMovementChanged(ACharacter* character, EMovementMode prevMovementMode, uint8 previousCustomMode)
{

}

UDBDAttackSubstate* UDBDAttack::GetAttackSubstate(const EAttackSubstate state) const
{
	return NULL;
}

void UDBDAttack::Client_ReceiveHitResult_Implementation(ACharacter* target, bool isValid, FActionPredictionKey predictionKey)
{

}

void UDBDAttack::Client_ReceiveAttackSubstateRequestResult_Implementation(const FAttackSubstateRequestResult result)
{

}

UDBDAttack::UDBDAttack()
{
	this->_attackType = EAttackType::VE_None;
	this->_useMontage = true;
	this->_damageZone = EDetectionZone::VE_Damage;
	this->_lockZone = EDetectionZone::VE_Pounce;
	this->_obstructionZone = EDetectionZone::VE_Obstructed;
	this->_onlyApplyAccelerationMultiplierWhenWalking = false;
	this->_hitValidationConfigName = EHitValidatorConfigName::Default;
}
