#pragma once

#include "CoreMinimal.h"
#include "ItemAddon.h"
#include "Templates/SubclassOf.h"
#include "BlightedSerumAddon.generated.h"

class ACollectable;
class UBlightedSerumDashInteraction;

UCLASS(Blueprintable, meta=(BlueprintSpawnableComponent))
class HALLOWEEN2020_API UBlightedSerumAddon : public UItemAddon
{
	GENERATED_BODY()

private:
	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	TSubclassOf<ACollectable> _blightedSerumCollectable;

	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, ReplicatedUsing=OnRep_DashInteraction, Transient, Instanced, meta=(AllowPrivateAccess=true))
	UBlightedSerumDashInteraction* _dashInteraction;

	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, ReplicatedUsing=OnRep_BlightPowerPickedUp, Transient, meta=(AllowPrivateAccess=true))
	bool _blightPowerPickedUp;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	int32 _theBlightExtraTokens;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	int32 _numberOfDashesPerEvent;

private:
	UFUNCTION(BlueprintCallable)
	void OnRep_DashInteraction();

	UFUNCTION(BlueprintCallable)
	void OnRep_BlightPowerPickedUp();

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

public:
	virtual void GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const override;

public:
	UBlightedSerumAddon();
};

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