#include "Survivor.h"
#include "Engine/HitResult.h"
#include "ESkillCheckCustomType.h"
#include "EImmobilizedState.h"
#include "EAuthoritativeMovementFlag.h"
#include "EHealthType.h"
#include "EGuidedState.h"
#include "Net/UnrealNetwork.h"
#include "StalkedComponent.h"
#include "CamperStillnessTrackerComponent.h"
#include "SpherePlayerOverlapComponent.h"
#include "Components/CapsuleComponent.h"
#include "SurvivorSlashableComponent.h"
#include "MoriableComponent.h"
#include "DBDPawnSensingComponent.h"
#include "SurviveTimerScoreEventComponent.h"
#include "HealthComponent.h"
#include "ChargeableComponent.h"
#include "CamperBloodTrailComponent.h"
#include "CameraAttachmentComponent.h"
#include "CharmSpawnerComponent.h"
#include "HookableComponent.h"
#include "ProtectionHitComponent.h"
#include "ScreamComponent.h"
#include "CharacterPositionRecorderComponent.h"
#include "SurvivorEndGameComponent.h"
#include "MoveComponentToComponent.h"
#include "CarriedMovementComponent.h"

class AActor;
class UPrimitiveComponent;
class APawn;
class ASurvivor;
class ADBDPlayer;
class AReverseBearTrap;
class UAkComponent;
class UAnimationMontageSlave;
class UChaseeCharacterComponent;
class UAntiCampSelfUnhookComponent;
class UDBDClipRegionComponent;

void ASurvivor::TriggerAfflictionHUDFeedback()
{

}

void ASurvivor::Server_SetRunInput_Implementation(bool pressed)
{

}

void ASurvivor::Server_SetOverlappingEscape_Implementation(AActor* escape)
{

}

void ASurvivor::ResetCameraAttach()
{

}

void ASurvivor::OnRep_SprintEffect()
{

}

void ASurvivor::OnRep_RunInputPressed()
{

}

void ASurvivor::OnProximityEntered(UPrimitiveComponent* hitComponent, AActor* otherActor, UPrimitiveComponent* otherComp, int32 otherBodyIndex, bool bFromSweep, const FHitResult& sweepResult)
{

}

void ASurvivor::OnPawnSensed(APawn* pawn)
{

}

void ASurvivor::OnObsessionChanged(ASurvivor* newObsession, ASurvivor* previousObsession)
{

}

void ASurvivor::OnHpSlotSkillCheckResponseAesthetic(bool success, bool bonus, ADBDPlayer* player, bool triggerLoudNoise, bool hadInput, ESkillCheckCustomType type, float chargeChange)
{

}

void ASurvivor::OnHooked()
{

}

void ASurvivor::OnDroppedStart(ADBDPlayer* dropper)
{

}

void ASurvivor::OnDroppedEnd(bool clearLeader)
{

}

void ASurvivor::NotifySurvivorDissolveFinished(bool isDissolved) const
{

}

void ASurvivor::Multicast_SetOverlappingEscape_Implementation(AActor* escape)
{

}

void ASurvivor::Multicast_SetImmobilized_Implementation(EImmobilizedState state)
{

}

void ASurvivor::Multicast_SetHookEscapeAutoFail_Implementation(bool enabled)
{

}

void ASurvivor::Multicast_SetAuthoritativeMovementFlag_Implementation(EAuthoritativeMovementFlag flag, bool value)
{

}

void ASurvivor::Multicast_RemoveReverseBearTrap_Implementation()
{

}

void ASurvivor::Multicast_EscapeItemEvents_Implementation(bool isItemFromSpawn)
{

}

void ASurvivor::Local_SetImmobilized(EImmobilizedState state)
{

}

void ASurvivor::Kill(EHealthType healthType)
{

}

bool ASurvivor::IsTrapped() const
{
	return false;
}

bool ASurvivor::IsObsessionTarget() const
{
	return false;
}

bool ASurvivor::IsInDeathBed() const
{
	return false;
}

bool ASurvivor::IsHooked() const
{
	return false;
}

bool ASurvivor::IsGuidedBySlasher() const
{
	return false;
}

bool ASurvivor::IsEscaped() const
{
	return false;
}

bool ASurvivor::IsDeadOrInParadise() const
{
	return false;
}

bool ASurvivor::IsCrawling() const
{
	return false;
}

bool ASurvivor::IsBeingUnhooked() const
{
	return false;
}

bool ASurvivor::IsBeingPutOnHook() const
{
	return false;
}

bool ASurvivor::IsBeingPutDown() const
{
	return false;
}

bool ASurvivor::IsBeingPickedUp() const
{
	return false;
}

bool ASurvivor::IsBeingMended() const
{
	return false;
}

bool ASurvivor::IsBeingInteractedWith() const
{
	return false;
}

bool ASurvivor::IsBeingHealed() const
{
	return false;
}

bool ASurvivor::IsBeingCarried() const
{
	return false;
}

void ASurvivor::Input_ToggleRun()
{

}

bool ASurvivor::HasReverseBearTrap() const
{
	return false;
}

bool ASurvivor::HasGuidedAction() const
{
	return false;
}

AReverseBearTrap* ASurvivor::GetReverseBearTrap() const
{
	return NULL;
}

UAkComponent* ASurvivor::GetNoOcclusionAudioComponent() const
{
	return NULL;
}

UAnimationMontageSlave* ASurvivor::GetMontageFollower() const
{
	return NULL;
}

EImmobilizedState ASurvivor::GetImmobilizedState() const
{
	return EImmobilizedState::VE_None;
}

UHookableComponent* ASurvivor::GetHookableComponent() const
{
	return NULL;
}

UHealthComponent* ASurvivor::GetHealthComponent() const
{
	return NULL;
}

EGuidedState ASurvivor::GetGuidedAction() const
{
	return EGuidedState::VE_None;
}

UChaseeCharacterComponent* ASurvivor::GetChaseeCharacterComponent() const
{
	return NULL;
}

UCamperBloodTrailComponent* ASurvivor::GetBloodTrailComponent() const
{
	return NULL;
}

UAntiCampSelfUnhookComponent* ASurvivor::GetAntiCampSelfUnhookComponent() const
{
	return NULL;
}

TArray<UDBDClipRegionComponent*> ASurvivor::GetAllEntityRenderRegions() const
{
	return TArray<UDBDClipRegionComponent*>();
}

void ASurvivor::DBD_SetSurvivorCameraArmLengthCommand(float cameraArmLength)
{

}

void ASurvivor::DBD_SetImmobilized(EImmobilizedState state)
{

}

void ASurvivor::DBD_LeaveParadise()
{

}

void ASurvivor::DBD_ForceRun(bool forced)
{

}

void ASurvivor::DBD_CheatEscaped()
{

}

bool ASurvivor::CanRushQuietly() const
{
	return false;
}

bool ASurvivor::CanBePickedUp() const
{
	return false;
}

void ASurvivor::Authority_OnSlashed(ADBDPlayer* attacker)
{

}

bool ASurvivor::AcceptsHealing() const
{
	return false;
}

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

	DOREPLIFETIME(ASurvivor, _escape);
	DOREPLIFETIME(ASurvivor, _lastEscaped);
	DOREPLIFETIME(ASurvivor, _runInputPressed);
	DOREPLIFETIME(ASurvivor, _antiCampSelfUnhookComponent);
	DOREPLIFETIME(ASurvivor, _sprintEffect);
}

ASurvivor::ASurvivor()
{
	this->ReverseBearTrapAttachSocket = NAME_None;
	this->isBeingDissolved = false;
	this->FootprintAudibleRange = 1200.000000;
	this->StalkedComponent = CreateDefaultSubobject<UStalkedComponent>(TEXT("StalkedComponent"));
	this->CameraResetToleranceYaw = 2.000000;
	this->CameraResetTolerancePitch = 2.000000;
	this->CameraRecenterOffsetYaw = 90.000000;
	this->CameraRecenterOffsetPitch = 30.000000;
	this->Gender = EGender::VE_Male;
	this->TimeforDeathWhileCrawling = 60.000000;
	this->TimeforDeathWhileHooked = 60.000000;
	this->SecondsUntilFootprintTrigger = 0.100000;
	this->TriggerAfflictionHUDIntro = false;
	this->_stillnessTracker = CreateDefaultSubobject<UCamperStillnessTrackerComponent>(TEXT("StillnessTracker"));
	this->PartiallyHiddenStillnessThreshold = 0.000000;
	this->ProximityZone = CreateDefaultSubobject<USpherePlayerOverlapComponent>(TEXT("ProximityZone"));
	this->SlashableZone = CreateDefaultSubobject<UCapsuleComponent>(TEXT("Slashable"));
	this->HookSlashableZone = CreateDefaultSubobject<UCapsuleComponent>(TEXT("HookSlashable"));
	this->_camperSlashable = CreateDefaultSubobject<USurvivorSlashableComponent>(TEXT("CamperSlashable"));
	this->_moriableComponent = CreateDefaultSubobject<UMoriableComponent>(TEXT("MoriableComponent"));
	this->CrouchCapsuleHalfHeight = 0.000000;
	this->IKOffsetRightFoot = 0.000000;
	this->IKOffsetLeftFoot = 0.000000;
	this->_camperSensor = CreateDefaultSubobject<UDBDPawnSensingComponent>(TEXT("CamperSensor"));
	this->_surviveTimerScoreComponent = CreateDefaultSubobject<USurviveTimerScoreEventComponent>(TEXT("SurviveTimerScoreComponent"));
	this->_healthComponent = CreateDefaultSubobject<UHealthComponent>(TEXT("CamperHealthComponent"));
	this->_hpSlot01 = CreateDefaultSubobject<UChargeableComponent>(TEXT("HPSlot01"));
	this->_hpSlot02 = CreateDefaultSubobject<UChargeableComponent>(TEXT("HPSlot02"));
	this->_mendChargeable = CreateDefaultSubobject<UChargeableComponent>(TEXT("MendChargeable"));
	this->_antiCampUnhookChargeable = CreateDefaultSubobject<UChargeableComponent>(TEXT("AntiCampUnhookChargeable"));
	this->_bloodTrailComponent = CreateDefaultSubobject<UCamperBloodTrailComponent>(TEXT("CamperBloodTrailComponent"));
	this->_cameraAttachment = CreateDefaultSubobject<UCameraAttachmentComponent>(TEXT("CameraAttachmentComponent"));
	this->_charmSpawnerComponent = CreateDefaultSubobject<UCharmSpawnerComponent>(TEXT("CharmSpawnerComponent"));
	this->_hookableComponent = CreateDefaultSubobject<UHookableComponent>(TEXT("HookableComponent"));
	this->_protectionHitComponent = CreateDefaultSubobject<UProtectionHitComponent>(TEXT("ProtectionHitComponent"));
	this->_screamComponent = CreateDefaultSubobject<UScreamComponent>(TEXT("ScreamComponent"));
	this->_positionRecorder = CreateDefaultSubobject<UCharacterPositionRecorderComponent>(TEXT("Position Recorder"));
	this->_lastEscaped = false;
	this->_runInputPressed = false;
	this->_camperEndGameComponent = CreateDefaultSubobject<USurvivorEndGameComponent>(TEXT("CamperEndGameComponent"));
	this->_isBeingSacrificed = false;
	this->_isWiggleProgressionAllowed = true;
	this->_meshMover = CreateDefaultSubobject<UMoveComponentToComponent>(TEXT("MeshMover"));
	this->_carriedMovementComponent = CreateDefaultSubobject<UCarriedMovementComponent>(TEXT("CarriedMovementComponent"));
	this->_sprintOnHitEffectClass = NULL;
}
