// Neoeon Interactive 2026
#pragma once
#include "CoreMinimal.h"
#include "GameplayTagContainer.h"
#include "Engine/DataAsset.h"
#include "OLBase/CoreEnumerations.h"
#include "OLPrimaryDataAssetBase.generated.h"
/**
*
*/
UCLASS(Abstract, Blueprintable)
class PROJECTOTHERLIGHT_API UOLPrimaryDataAssetBase : public UPrimaryDataAsset
{
GENERATED_BODY()
public:
// --- Identification ---
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Identity")
FString AssetID;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "UI")
FText DisplayName;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "UI")
FText Description;
// --- Rarity ---
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Gameplay")
EItemRarity Rarity = EItemRarity::Common;
// --- Flexible Tags ---
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Gameplay")
FGameplayTagContainer Tags;
// --- Generic Inventory Info ---
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Inventory", meta=(ClampMin="1"))
int32 MaxStack = 1;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Inventory")
float Weight = 1.0f;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Inventory")
bool bIsConsumable = false;
// --- Runtime / Inventory Instance ID ---
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Transient, Category = "Runtime")
FString InstanceID;
};