#include "PhantomTrap.h"
#include "GameplayTagContainer.h"
#include "Engine/HitResult.h"
#include "Net/UnrealNetwork.h"
#include "TerrorRadiusEmitterComponent.h"
#include "ChargeableComponent.h"
#include "WipeAwayPhantomTrapInteraction.h"
#include "Interactor.h"
#include "Components/BoxComponent.h"

class ASurvivor;
class AKiller;
class UPrimitiveComponent;
class AActor;

void APhantomTrap::SetIsInUse(bool inUse)
{

}

void APhantomTrap::RetrievePerkFlags(const FGameplayTag silentTrapTag, const FGameplayTag phantomCollisionTag)
{

}

void APhantomTrap::OnTrapReset()
{

}

void APhantomTrap::OnTrapPlaced()
{

}

void APhantomTrap::OnTrapActivated()
{

}

void APhantomTrap::Multicast_DestroyTrap_Implementation(ASurvivor* playerDestroyingTrap, bool wipedAway)
{

}

bool APhantomTrap::IsTrapSet_Implementation() const
{
	return false;
}

bool APhantomTrap::IsTrapDeactivating() const
{
	return false;
}

bool APhantomTrap::IsTrapActive() const
{
	return false;
}

bool APhantomTrap::IsSilentTrigger() const
{
	return false;
}

void APhantomTrap::InitializeTerrorRadiusEmitter(AKiller* owningSlasher)
{

}

bool APhantomTrap::HasKillerTeleported() const
{
	return false;
}

bool APhantomTrap::CanActivateTrap(ASurvivor* survivor, bool isInUse)
{
	return false;
}

void APhantomTrap::Authority_OnTriggerZoneEndOverlap(UPrimitiveComponent* overlappedComponent, AActor* otherActor, UPrimitiveComponent* otherComp, int32 otherBodyIndex)
{

}

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

}

void APhantomTrap::ActivateSlasher(AKiller* slasher)
{

}

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

	DOREPLIFETIME(APhantomTrap, _hasTrapBeenSetOff);
	DOREPLIFETIME(APhantomTrap, _hasTrapBeenDestroyed);
}

APhantomTrap::APhantomTrap()
{
	this->_phantomHasCollision = false;
	this->_silentTrapTrigger = false;
	this->_isDeactivating = false;
	this->_slowdownInTrapZoneEffect = NULL;
	this->_terrorRadiusEmitter = CreateDefaultSubobject<UTerrorRadiusEmitterComponent>(TEXT("Terror Radius Component"));
	this->_camperOutlineDuration = 5.000000;
	this->_lineOfSightTraceMinInterval = 0.100000;
	this->_speedTolerance = 900.000000;
	this->_wipeAwayInteractionChargeable = CreateDefaultSubobject<UChargeableComponent>(TEXT("WipeAwayInteractionChargeable"));
	this->_wipeAwayInteraction = CreateDefaultSubobject<UWipeAwayPhantomTrapInteraction>(TEXT("WipeAwayInteraction"));
	this->_wipeAwayInteractor = CreateDefaultSubobject<UInteractor>(TEXT("WipeAwayInteractor"));
	this->_wipeAwayInteractionZone = CreateDefaultSubobject<UBoxComponent>(TEXT("WipeAwayInteractionZone"));
	this->_hasTrapBeenSetOff = false;
	this->_hasTrapBeenDestroyed = false;
	this->_isInUse = false;
	this->_isSlasherHere = false;
}
