#pragma once

#include "CoreMinimal.h"
#include "Engine/TimerHandle.h"
#include "K26SurvivorStatus.generated.h"

class AK26AttachedCrow;
class ASurvivor;
class UK26KillerInstinctStatusEffect;
class AActor;

USTRUCT(BlueprintType)
struct FK26SurvivorStatus
{
	GENERATED_BODY()

public:
	UPROPERTY(BlueprintReadWrite, Transient)
	bool IsPowerAttached;

	UPROPERTY(BlueprintReadWrite, Transient)
	bool IsAttachementAuraOn;

	UPROPERTY(BlueprintReadWrite, NotReplicated, Transient)
	float LastAttachmentTime;

	UPROPERTY(BlueprintReadWrite, NotReplicated, Transient)
	float LastDetachmentTime;

	UPROPERTY(BlueprintReadWrite, NotReplicated, Transient)
	float LastRemovalStarted;

	UPROPERTY(BlueprintReadWrite, NotReplicated, Transient)
	float LastRemovalStopped;

	UPROPERTY(BlueprintReadWrite, NotReplicated, Transient)
	float LastHitTime;

	UPROPERTY(BlueprintReadWrite, Transient)
	AK26AttachedCrow* StatusIndicator;

	UPROPERTY(BlueprintReadWrite, Transient)
	ASurvivor* OwningSurvivor;

	UPROPERTY(BlueprintReadWrite, Transient, Instanced)
	UK26KillerInstinctStatusEffect* K26KillerInstinctStatusEffect;

	UPROPERTY(BlueprintReadWrite, Transient)
	TArray<AActor*> IdleCrowsBeingTouched;

	UPROPERTY(NotReplicated, Transient)
	FTimerHandle KillerInstinctTimeHandler;

public:
	THEK26_API FK26SurvivorStatus();
};

FORCEINLINE uint32 GetTypeHash(const FK26SurvivorStatus) { return 0; }
