// Oleg Petruny proprietary.

#pragma once

#include "Minigame/Minigame.h"

#include "FishingManager.generated.h"

USTRUCT(BlueprintType)
struct FFishVariation
{
    GENERATED_BODY()

    UPROPERTY(EditAnywhere, BlueprintReadWrite)
    float difficulty;

    UPROPERTY(EditAnywhere, BlueprintReadWrite)
    float size;

    UPROPERTY(EditAnywhere, BlueprintReadWrite)
    float duration;

    UPROPERTY(EditAnywhere, BlueprintReadWrite)
    int32 price;

    UPROPERTY(EditAnywhere, BlueprintReadWrite)
    FLinearColor color;
};

UCLASS(Blueprintable, BlueprintType, MinimalAPI)
class AFishingManager : public AMinigame
{
    GENERATED_BODY()

public:
    AFishingManager();

    virtual void Start(class APlayerBase* playerPawn, FMinigameEndCallback delegate) override;
    virtual void End() override;

    UFUNCTION(BlueprintImplementableEvent, BlueprintCallable)
    void CatchSucceed(int32 price);

    UFUNCTION(BlueprintImplementableEvent, BlueprintCallable)
    void CatchFailed();

protected:
    UFUNCTION(BlueprintImplementableEvent)
    void OnInputHold();
    UFUNCTION(BlueprintImplementableEvent)
    void OnInputUnhold();

    int32 handler1, handler2;
};
