#pragma once

#include "CoreMinimal.h"
#include "ScreenBase.h"
#include "PanelScreen.generated.h"

UCLASS(Blueprintable)
class DEADBYDAYLIGHT_API UPanelScreen : public UScreenBase
{
	GENERATED_BODY()

public:
	UFUNCTION(BlueprintCallable)
	void OnWebNodeUnhovered() const;

	UFUNCTION(BlueprintCallable)
	void OnWebNodeSelected(int32 characterId, int32 id, int32 nodeDepth);

	UFUNCTION(BlueprintCallable)
	void OnWebNodeHovered(const int32 id, const int32 left, const int32 top, const int32 width, const int32 height) const;

	UFUNCTION(BlueprintCallable)
	void OnWebBuilt(int32 characterId, bool isEmpty);

	UFUNCTION(BlueprintCallable)
	void OnSequenceStepCompleted(int32 characterId, int32 id);

	UFUNCTION(BlueprintCallable)
	void OnSelectedEquipableSlotZoomChange(bool zoomIn);

	UFUNCTION(BlueprintCallable)
	void OnReservedBloodPoints(int32 characterId, int32 bloodPoints, bool fullCost);

	UFUNCTION(BlueprintCallable)
	void OnRegenerateButtonClick(int32 characterId);

	UFUNCTION(BlueprintCallable)
	void OnPrestigeUp(int32 characterId);

	UFUNCTION(BlueprintCallable)
	void OnPanelsHidden();

	UFUNCTION(BlueprintCallable)
	void OnNodeConsumptionAnimDone();

	UFUNCTION(BlueprintCallable)
	void OnNodeCollectionAnimDone();

	UFUNCTION(BlueprintCallable)
	void OnLevelUpShown();

	UFUNCTION(BlueprintCallable)
	void OnLevelUpDone();

	UFUNCTION(BlueprintCallable)
	void OnEquipableSlotClicked(int32 clickedSlotCategory, int32 clickedSlotIndex);

	UFUNCTION(BlueprintCallable)
	void OnCustomizationPresetClick(int32 index);

	UFUNCTION(BlueprintCallable)
	void OnConfirmCollectSelectedNode(int32 characterId);

	UFUNCTION(BlueprintCallable)
	void OnCharInfoClick();

	UFUNCTION(BlueprintCallable)
	void OnCharacterSlotButtonClick(int32 characterIndex);

	UFUNCTION(BlueprintCallable)
	void OnBloodwebCenterButtonUnhovered();

	UFUNCTION(BlueprintCallable)
	void OnBloodwebCenterButtonSelected();

	UFUNCTION(BlueprintCallable)
	void OnBloodwebCenterButtonHovered(int32 left, int32 top, int32 width, int32 height);

	UFUNCTION(BlueprintCallable)
	void OnBloodwebCenterButtonDown();

	UFUNCTION(BlueprintCallable)
	void OnAvailableWebNodeHovered(const int32 id) const;

	UFUNCTION(BlueprintCallable)
	void OnAvailableItemsSortingChange(int32 newSorting);

	UFUNCTION(BlueprintCallable)
	void OnAvailableItemClicked(int32 clickedItemIndex);

public:
	UPanelScreen();
};

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