# DA_GameTagRegistry — Asset Implementation

> **UE5 Asset:** `/Game/Framework/Core/DA_GameTagRegistry`
> **Parent Class:** `DA_GameTagRegistry` (C++) or `PrimaryDataAsset` (BP-only)
> **Asset Type:** Data Asset

---

## Create This Asset

### Step 1: Create Data Asset
1. Content Browser → `Content/Framework/Core/`
2. Right-click → **Miscellaneous → Data Asset**
3. Class: `DA_GameTagRegistry` (if C++ compiled) OR `PrimaryDataAsset`
4. Name: `DA_GameTagRegistry`

### Step 2: Configure Class Defaults (if BP-only PrimaryDataAsset)
| Variable | Type | Value |
|----------|------|-------|
| `TagNamespace` | `Text` | `"Framework tag namespace documentation"` |
| `bIsFrameworkTag` | `Boolean` | `true` |
| `TagDataTables` | `Array<Data Table>` | Add all 11 DT_Tags_* tables |

### Step 3: Assign to GameInstance
Open `BP_GameFramework` → Class Defaults → `TagRegistry` → assign `DA_GameTagRegistry`

---

## What to Wire (BP-Only Version)

### Function: GetAllRegisteredTags
```
Inputs: none → Output: Array<GameplayTag>

[Pure Function Graph]
  ├─ Make Array<GameplayTag> → LocalTags
  ├─ ForEachLoop (TagDataTables)
  │   ├─ Branch: IsValid(Array Element)?
  │   │   True → Get Data Table Row Names
  │   │   └─ ForEachLoop (RowNames)
  │   │       └─ Get Data Table Row → Break GameplayTagTableRow → Tag
  │   │           └─ ADD to LocalTags
  └─ Return LocalTags
```

### Function: ValidateTag
```
Input: Tag (GameplayTag) → Output: Boolean

[Pure Function Graph]
  └─ Is Gameplay Tag Valid(Tag) → Return
```

### Function: GetTagDisplayName
```
Input: Tag (GameplayTag) → Output: Text

[Pure Function Graph]
  └─ Get Tag Display Name(Tag) → Return
```

---

## Test It
- [ ] Open `DA_GameTagRegistry` → verify `TagDataTables` has 11 entries
- [ ] PIE: output log shows `"N tags registered across 11 Data Tables"`
- [ ] Call `ValidateTag(Framework.Player.State.Alive)` → returns `true`
- [ ] Call `ValidateTag(Unregistered.Tag)` → returns `false`
