#include "MrMarch.h"
#include "EMrMarchState.h"
#include "UObject/NoExportTypes.h"
#include "Engine/HitResult.h"
#include "Net/UnrealNetwork.h"
#include "DBDSkeletalMeshComponentBudgeted.h"
#include "DBDOutlineComponent.h"
#include "Components/CapsuleComponent.h"
#include "Components/SphereComponent.h"
#include "DBDNavModifierComponent.h"

class ADBDPlayer;
class UPrimitiveComponent;
class AActor;

void AMrMarch::OnRep_MrMarchState(EMrMarchState previousState)
{

}

void AMrMarch::Multicast_StartMrMarchDestruction_Implementation(bool destroyImmediate)
{

}

void AMrMarch::Multicast_OnPlayerJumpscared_Implementation(ADBDPlayer* player, const FVector& jumpscareLocation)
{

}

void AMrMarch::DBD_MrMarchSpawn()
{

}

void AMrMarch::DBD_MrMarchDestroy()
{

}

void AMrMarch::Authority_OnJumpscareTriggerZoneExited(UPrimitiveComponent* overlappedComponent, AActor* otherActor, UPrimitiveComponent* otherComp, int32 otherBodyIndex)
{

}

void AMrMarch::Authority_OnJumpscareTriggerZoneEntered(UPrimitiveComponent* overlappedComponent, AActor* otherActor, UPrimitiveComponent* otherComp, int32 otherBodyIndex, bool bFromSweep, const FHitResult& sweepResult)
{

}

void AMrMarch::Authority_OnJumpscareFinished()
{

}

void AMrMarch::GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const
{
	Super::GetLifetimeReplicatedProps(OutLifetimeProps);

	DOREPLIFETIME(AMrMarch, _mrMarchState);
}

AMrMarch::AMrMarch()
{
	this->_mrMarchSkeletalMesh = CreateDefaultSubobject<UDBDSkeletalMeshComponentBudgeted>(TEXT("MrMarchSkeletalMesh"));
	this->_outlineComponent = CreateDefaultSubobject<UDBDOutlineComponent>(TEXT("MrMarchOutlineComponent"));
	this->_mrMarchCollision = CreateDefaultSubobject<UCapsuleComponent>(TEXT("MrMarchCollision"));
	this->_jumpscareTriggerZone = CreateDefaultSubobject<USphereComponent>(TEXT("JumpscareTriggerZone"));
	this->_dbdNavModifierComponent = CreateDefaultSubobject<UDBDNavModifierComponent>(TEXT("DBDNavModifierComponent"));
	this->_mrMarchJumpscareTimerRate = 0.160000;
	this->_mrMarchState = EMrMarchState::Destroyed;
}
