#pragma once

#include "CoreMinimal.h"
#include "SurvivorCosmeticHelperActor.h"
#include "K40SecuritySystemAbilitySurvivorCosmeticHelperActor.generated.h"

class AK40SecurityDoor;

UCLASS(Blueprintable)
class AK40SecuritySystemAbilitySurvivorCosmeticHelperActor : public ASurvivorCosmeticHelperActor
{
	GENERATED_BODY()

public:
	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent, BlueprintCosmetic)
	void Cosmetic_TravellingThroughSecurityOfficeStop();

	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent, BlueprintCosmetic)
	void Cosmetic_TravellingThroughSecurityOfficeStart();

	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent, BlueprintCosmetic)
	void Cosmetic_OnBatteryRebooted();

	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent, BlueprintCosmetic)
	void Cosmetic_OnBatteryPercentChanged(const float batteryPercent);

	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent, BlueprintCosmetic)
	void Cosmetic_OnBatteryDepleted();

	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent, BlueprintCosmetic)
	void Cosmetic_GrabSurvivorDuringEnterSecurityDoor(AK40SecurityDoor* door);

	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent, BlueprintCosmetic)
	void Cosmetic_ExitingSecurityDoorStop(AK40SecurityDoor* door);

	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent, BlueprintCosmetic)
	void Cosmetic_ExitingSecurityDoorStart(AK40SecurityDoor* door);

	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent, BlueprintCosmetic)
	void Cosmetic_EnterSecurityDoorFailure(AK40SecurityDoor* door);

	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent, BlueprintCosmetic)
	void Cosmetic_EnteringSecurityDoorStop(AK40SecurityDoor* door);

	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent, BlueprintCosmetic)
	void Cosmetic_EnteringSecurityDoorStart(AK40SecurityDoor* door);

	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent, BlueprintCosmetic)
	void Cosmetic_BeingOfficeGrabbedStop();

	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent, BlueprintCosmetic)
	void Cosmetic_BeingOfficeGrabbedStart();

	UFUNCTION(BlueprintCallable)
	void ChangePlayerVisibility(bool isVisible);

public:
	AK40SecuritySystemAbilitySurvivorCosmeticHelperActor();
};

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