// ©2023 Batty Bovine Productions, LLC. All Rights Reserved.

#pragma once

#include "CoreMinimal.h"

#include "SEdComboActionGraphNode.h"
#include "EdGraph/EdGraphNode.h"

#include "EdComboActionGraphNode.generated.h"

DECLARE_LOG_CATEGORY_EXTERN(LogEdComboActionGraphNode, Log, All);


/**
 * 
 */
UCLASS(MinimalAPI)
class UEdComboActionGraphNode : public UEdGraphNode
{
	GENERATED_BODY()
	
public:
	UEdComboActionGraphNode();

	void SetComboActionGraphNode(UComboActionGraphNode *NewNode);
	class UEdComboActionGraph *GetEdComboActionGraph() const;

	virtual void AllocateDefaultPins() override;
	virtual FText GetNodeTitle(ENodeTitleType::Type TitleType) const override;
	virtual void PrepareForCopying() override;
	virtual void AutowireNewNode(UEdGraphPin *FromPin) override;

	virtual FLinearColor GetBackgroundColor() const;
	virtual UEdGraphPin *GetInputPin() const;
	virtual UEdGraphPin *GetOutputPin() const;

	virtual bool CanUserDeleteNode() const override;
	virtual bool CanDuplicateNode() const override;

	virtual bool CanUserPasteNodes() const;

	virtual FText GetTooltipText() const override;
	virtual FSlateIcon GetIconAndTint(FLinearColor &OutColor) const override;

#if WITH_EDITOR
	virtual void PostEditUndo() override;
	virtual void PostEditChangeProperty(FPropertyChangedEvent &PropertyChangedEvent) override;
#endif

	UPROPERTY(VisibleAnywhere, Instanced, Category="Combo Action Graph")
		class UComboActionGraphNode *ComboActionGraphNode;

	SEdComboActionGraphNode *SEdNode;

private:
	bool bAllowCopy;
	bool bAllowDelete;
	bool bAllowDuplicate;
	bool bAllowPaste;
};
