// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "CoreMinimal.h"
#include "Blueprint/UserWidget.h"
#include "PC_Display.generated.h"

USTRUCT(BlueprintType)
struct FPC_Display_Info
{
	GENERATED_BODY()

	UPROPERTY(BlueprintReadWrite, Category = "PC_Display_Info")
	bool IsGameOver;

	UPROPERTY(BlueprintReadWrite, Category = "PC_Display_Info")
	FString MB_Title;
	
	UPROPERTY(BlueprintReadWrite, Category = "PC_Display_Info")
	FString MB_Desc;

	UPROPERTY(BlueprintReadWrite, Category = "PC_Display_Info")
	int MB_Reward;

	UPROPERTY(BlueprintReadWrite, Category = "PC_Display_Info")
	TArray<FString> SB_Title;

	UPROPERTY(BlueprintReadWrite, Category = "PC_Display_Info")
	TArray<UTexture2D*> SB_Icon;

	UPROPERTY(BlueprintReadWrite, Category = "PC_Display_Info")
	TArray<FString> SB_Desc;

	UPROPERTY(BlueprintReadWrite, Category = "PC_Display_Info")
	TArray<int> SB_Reward;

	UPROPERTY(BlueprintReadWrite, Category = "PC_Display_Info")
	TArray<FString> CustomBountyAlteration_Desc;

	UPROPERTY(BlueprintReadWrite, Category = "PC_Display_Info")
	TArray<int> CustomBountyAlteration_Cost;

	UPROPERTY(BlueprintReadWrite, Category = "PC_Display_Info")
	int PlayersFavourAmount;
};

DECLARE_DYNAMIC_MULTICAST_DELEGATE(FLogoutFromBountyDirectorPC);
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FBuyCBA_1);
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FBuyCBA_2);
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FBuyCBA_3);
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FBuyAmmoDrop);
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FBuyHealthDrop);
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FBuyRadio);
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FBuyFavour);

UCLASS()
class ENDLESSVENDETTA_API UPC_Display : public UUserWidget
{
	GENERATED_BODY()
public:
	// Button Delegates
	UPROPERTY(BlueprintCallable, Category = PC_Display)
	FLogoutFromBountyDirectorPC LogoutFromBountyDirectorPC;
	UPROPERTY(BlueprintCallable, Category = PC_Display)
	FBuyCBA_1 BuyCba_1;
	UPROPERTY(BlueprintCallable, Category = PC_Display)
	FBuyCBA_2 BuyCba_2;
	UPROPERTY(BlueprintCallable, Category = PC_Display)
	FBuyCBA_3 BuyCba_3;
	UPROPERTY(BlueprintCallable, Category = PC_Display)
	FBuyAmmoDrop BuyAmmoDrop;
	UPROPERTY(BlueprintCallable, Category = PC_Display)
	FBuyHealthDrop BuyHealthDrop;
	UPROPERTY(BlueprintCallable, Category = PC_Display)
	FBuyRadio BuyRadio;
	UPROPERTY(BlueprintCallable, Category = PC_Display)
	FBuyFavour BuyFavour;

	// USTRUCT
	UPROPERTY(BlueprintReadOnly)
	FPC_Display_Info PC_Display_Info;

	// Takes USTRUCT and uses its values to fill in widget
	UFUNCTION(BlueprintImplementableEvent, Category = "PC_Display")
	void LoadOS();

	UFUNCTION(BlueprintImplementableEvent, Category = "PC_Display")
	void UpdateFavourCount(int NewFavourCount);

	
};

