# UPrimeDialogForgeComponent

`UPrimeDialogForgeComponent` belongs to the PrimeDialog Forge runtime module.

Sint consequat cillum sint in commodo voluptate ea sint consectetur tempor laboris in ipsum amet. Reprehenderit exercitation adipiscing reprehenderit esse esse cillum lorem nisi velit reprehenderit voluptate magna. Enim incididunt tempor ad in in in fugiat ipsum fugiat nisi nulla adipiscing. Ex dolor ad ut elit excepteur aliquip velit laboris cillum sit velit nostrud minim.

## Declaration

```cpp
// Declare delegates for event-driven communication
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnStateChanged, EMyState, NewState);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnProgressUpdated, float, Progress, FString, Message);

UPROPERTY(BlueprintAssignable, Category = "Events")
FOnStateChanged OnStateChanged;

UPROPERTY(BlueprintAssignable, Category = "Events")
FOnProgressUpdated OnProgressUpdated;

// Broadcasting events
void UMyManager::UpdateState(EMyState NewState)
{
    CurrentState = NewState;
    OnStateChanged.Broadcast(NewState);
    OnProgressUpdated.Broadcast(GetProgress(), GetStatusMessage());
}
```

## Members

| Event | Parameters | Description |
| --- | --- | --- |
| OnStateChanged | EMyState NewState | Fired when state transitions |
| OnProgressUpdated | float Progress, FString Message | Fired on progress change |
| OnError | FString ErrorMessage, int32 Code | Fired on error |
| OnInitialized | bool bSuccess | Fired after initialization |

## Example

```cpp
// Load configuration from data asset
UMyConfigAsset* Config = LoadObject<UMyConfigAsset>(
    nullptr,
    TEXT("/Game/Config/DefaultPluginConfig.DefaultPluginConfig")
);

if (Config)
{
    Settings.MaxPoolSize = Config->MaxPoolSize;
    Settings.TickRate = Config->TickRate;
    Settings.bEnableDebugDraw = Config->bEnableDebugDraw;
    Settings.LogVerbosity = Config->LogVerbosity;

    UE_LOG(LogPrimeDialog Forge, Log, TEXT("Configuration loaded: PoolSize=%d, TickRate=%.2f"),
        Settings.MaxPoolSize, Settings.TickRate);
}
```