#pragma once

#include "CoreMinimal.h"
#include "CosmeticHelperActor.h"
#include "EPalletState.h"
#include "PalletCosmeticHelperActor.generated.h"

class APallet;

UCLASS(Blueprintable)
class APalletCosmeticHelperActor : public ACosmeticHelperActor
{
	GENERATED_BODY()

protected:
	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	TWeakObjectPtr<APallet> _linkedPallet;

protected:
	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent, BlueprintCosmetic)
	void Cosmetic_OnPalletStateChange(EPalletState palletState);

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

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

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

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

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

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

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

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

public:
	APalletCosmeticHelperActor();
};

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