# UQuestSystemBlueprintLibrary

`UQuestSystemBlueprintLibrary` belongs to the QuestSystem runtime module.

Labore labore consequat aute irure pariatur velit nostrud reprehenderit do adipiscing tempor ea irure ut. Tempor ex nulla minim voluptate voluptate velit enim nisi exercitation. Ex exercitation incididunt sint do excepteur aute consectetur et veniam ex duis sit aliqua ea.

## Declaration

```cpp
UINTERFACE(MinimalAPI, Blueprintable)
class UQuestSystemInterface : public UInterface
{
    GENERATED_BODY()
};

class IQuestSystemInterface
{
    GENERATED_BODY()

public:
    UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = "QuestSystem")
    void OnPluginActivated(bool bSuccess);

    UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = "QuestSystem")
    FMyResult ProcessData(const FMyInput& Input);

    UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = "QuestSystem")
    bool CanExecute() const;
};
```

## Members

| Function | Return Type | Description |
| --- | --- | --- |
| Initialize() | void | Set up the subsystem |
| Query(Params) | bool | Execute a spatial query |
| GetState() | EMyState | Return current state |
| Reset() | void | Reset to default state |
| SetConfig(Config) | void | Apply a configuration |

## Example

```cpp
// Unit test example
IMPLEMENT_SIMPLE_AUTOMATION_TEST(
    FQuestSystemBasicTest,
    "QuestSystem.Core.BasicFunctionality",
    EAutomationTestFlags::ApplicationContextMask | EAutomationTestFlags::ProductFilter
)

bool FQuestSystemBasicTest::RunTest(const FString& Parameters)
{
    UQuestSystemSubsystem* Subsystem = NewObject<UQuestSystemSubsystem>();
    TestNotNull(TEXT("Subsystem should be created"), Subsystem);

    Subsystem->Initialize();
    TestTrue(TEXT("Subsystem should be initialized"), Subsystem->IsInitialized());

    FMyQueryParams Params;
    Params.Radius = 500.0f;
    TestTrue(TEXT("Query params should be valid"), Params.IsValid());

    return true;
}
```