#include "Searchable.h"
#include "Net/UnrealNetwork.h"
#include "SearchableSpawnPoint.h"
#include "BlockableComponent.h"
#include "LocalPlayerTrackerComponent.h"

class ADBDPlayer;
class UPrimitiveComponent;
class ACollectable;

void ASearchable::SetHasBeenSearched(bool newHasBeenSearched)
{

}

void ASearchable::OnSearchableBlockChanged()
{

}

void ASearchable::OnRep_IsOpened()
{

}

void ASearchable::OnLocallyObservedChanged()
{

}

void ASearchable::Multicast_SetHasBeenSearched_Implementation(bool hasBeenSearched)
{

}

bool ASearchable::IsSearchableBlockedForPlayer(const ADBDPlayer* player) const
{
	return false;
}

bool ASearchable::HasBeenSearched() const
{
	return false;
}

UPrimitiveComponent* ASearchable::GetInteractorPrimitiveComponent_Implementation() const
{
	return NULL;
}

bool ASearchable::ContainsSpawnedItem() const
{
	return false;
}

ACollectable* ASearchable::Authority_SpawnObject(ADBDPlayer* player)
{
	return NULL;
}

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

	DOREPLIFETIME(ASearchable, _spawnedItem);
	DOREPLIFETIME(ASearchable, _itemInsideSearchable);
	DOREPLIFETIME(ASearchable, _isOpened);
}

ASearchable::ASearchable()
{
	this->Weight = 1.000000;
	this->_searchableSpawnPoint = CreateDefaultSubobject<USearchableSpawnPoint>(TEXT("SearchableSpawnPoint"));
	this->_isOpened = false;
	this->_hasBeenOpened = false;
	this->_searchableBlockableComponent = CreateDefaultSubobject<UBlockableComponent>(TEXT("SearchableBlockableComponent"));
	this->_localPlayerTracker = CreateDefaultSubobject<ULocalPlayerTrackerComponent>(TEXT("LocalPlayerTracker"));
}
