# marlamin/wownaminglib architecture

> Architecture diagram of the GitHub repository marlamin/wownaminglib, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-15). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/marlamin/wownaminglib
- Repository: https://github.com/marlamin/wownaminglib

## Overview

WoWNamingLib is a WIP library for assigning descriptive names to World of Warcraft files. The principal workflow is an external caller invoking Namer’s naming routines; domain namers inspect game data and propose file names, which NewFileManager collects for retrieval or output. CASC access and DBC/WDB data loading support those routines. The graph reflects documented purpose and SOURCE INDEX references; unsampled relationships are omitted rather than inferred.

Main entry points: [`WoWNamingLib/Namer.cs`](https://github.com/marlamin/wownaminglib/blob/main/WoWNamingLib/Namer.cs) (Naming facade), [`WoWNamingLib/Services/NewFileManager.cs`](https://github.com/marlamin/wownaminglib/blob/main/WoWNamingLib/Services/NewFileManager.cs) (Name collection), [`WoWNamingLib/Namers/Music.cs`](https://github.com/marlamin/wownaminglib/blob/main/WoWNamingLib/Namers/Music.cs) (Music assets), [`WoWNamingLib/Namers/Map.cs`](https://github.com/marlamin/wownaminglib/blob/main/WoWNamingLib/Namers/Map.cs) (Map assets)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_orchestration["Naming orchestration"]
  node_namer["Naming facade<br/>[Namer.cs]"]
  node_newfiles["Name collection<br/>[NewFileManager.cs]"]
end

subgraph group_domains["Asset naming"]
  node_collectable["Collectables<br/>[Collectable.cs]"]
  node_creature["Creature displays"]
  node_interface["Interface assets<br/>[Interface.cs]"]
  node_itemtexture["Item textures<br/>[ItemTexture.cs]"]
  node_map["Map assets<br/>[Map.cs]"]
  node_model["Models and housing<br/>[Model.cs]"]
  node_housing["Player housing<br/>[PlayerHousing.cs]"]
  node_music["Music assets<br/>[Music.cs]"]
  node_sound["Sound assets<br/>[Sound.cs]"]
  node_scenes["Scene scripts<br/>[SceneScript.cs]"]
  node_othernamers["Other asset namers"]
end

subgraph group_services["Data and services"]
  node_casc["CASC access<br/>[CASCManager.cs]"]
  node_dbc["DBC loading<br/>[DBCManager.cs]"]
  node_wdb["WDB loading<br/>[WDBManager.cs]"]
  node_battlenet["Battle.net API<br/>[BattleNetAPI.cs]"]
  node_soundkits["Sound kit lookup<br/>[SoundKitHelper.cs]"]
end

subgraph group_utilities["Parsing utilities"]
  node_sceneparser["Scene parser"]
  node_datastore["Data store<br/>[DataStore.cs]"]
end

node_caller(("Library caller"))

node_caller -.->|"invokes naming"| node_namer
node_namer -->|"records names"| node_newfiles
node_namer -->|"dispatches to"| node_collectable
node_namer -->|"dispatches to"| node_creature
node_namer -->|"dispatches to"| node_interface
node_namer -->|"dispatches to"| node_itemtexture
node_namer -->|"dispatches to"| node_map
node_namer -->|"dispatches to"| node_model
node_namer -->|"dispatches to"| node_housing
node_namer -->|"dispatches to"| node_music
node_namer -->|"dispatches to"| node_sound
node_namer -->|"dispatches to"| node_scenes
node_namer -->|"dispatches to"| node_othernamers
node_namer -->|"loads data"| node_dbc
node_namer -->|"uses data"| node_wdb
node_collectable -->|"records names"| node_newfiles
node_creature -->|"records names"| node_newfiles
node_interface -->|"records names"| node_newfiles
node_itemtexture -->|"records names"| node_newfiles
node_map -->|"records names"| node_newfiles
node_map -->|"reads files"| node_casc
node_model -->|"records names"| node_newfiles
node_model -->|"reads files"| node_casc
node_housing -->|"records names"| node_newfiles
node_housing -->|"uses API"| node_battlenet
node_music -->|"records names"| node_newfiles
node_music -->|"looks up kits"| node_soundkits
node_music -->|"parses scripts"| node_sceneparser
node_sound -->|"records names"| node_newfiles
node_sound -->|"uses lookup"| node_soundkits
node_scenes -->|"parses scripts"| node_sceneparser
node_othernamers -.->|"records names"| node_newfiles
node_dbc -.->|"reads game data"| node_casc
node_wdb -->|"uses storage"| node_datastore

click node_namer "https://github.com/marlamin/wownaminglib/blob/main/WoWNamingLib/Namer.cs"
click node_newfiles "https://github.com/marlamin/wownaminglib/blob/main/WoWNamingLib/Services/NewFileManager.cs"
click node_collectable "https://github.com/marlamin/wownaminglib/blob/main/WoWNamingLib/Namers/Collectable.cs"
click node_creature "https://github.com/marlamin/wownaminglib/blob/main/WoWNamingLib/Namers/CreatureDisplayInfo.cs"
click node_interface "https://github.com/marlamin/wownaminglib/blob/main/WoWNamingLib/Namers/Interface.cs"
click node_itemtexture "https://github.com/marlamin/wownaminglib/blob/main/WoWNamingLib/Namers/ItemTexture.cs"
click node_map "https://github.com/marlamin/wownaminglib/blob/main/WoWNamingLib/Namers/Map.cs"
click node_model "https://github.com/marlamin/wownaminglib/blob/main/WoWNamingLib/Namers/Model.cs"
click node_housing "https://github.com/marlamin/wownaminglib/blob/main/WoWNamingLib/Namers/PlayerHousing.cs"
click node_music "https://github.com/marlamin/wownaminglib/blob/main/WoWNamingLib/Namers/Music.cs"
click node_sound "https://github.com/marlamin/wownaminglib/blob/main/WoWNamingLib/Namers/Sound.cs"
click node_scenes "https://github.com/marlamin/wownaminglib/blob/main/WoWNamingLib/Namers/SceneScript.cs"
click node_othernamers "https://github.com/marlamin/wownaminglib/tree/main/WoWNamingLib/Namers"
click node_casc "https://github.com/marlamin/wownaminglib/blob/main/WoWNamingLib/Services/CASCManager.cs"
click node_dbc "https://github.com/marlamin/wownaminglib/blob/main/WoWNamingLib/Services/DBCManager.cs"
click node_wdb "https://github.com/marlamin/wownaminglib/blob/main/WoWNamingLib/Services/WDBManager.cs"
click node_battlenet "https://github.com/marlamin/wownaminglib/blob/main/WoWNamingLib/Services/BattleNetAPI.cs"
click node_soundkits "https://github.com/marlamin/wownaminglib/blob/main/WoWNamingLib/Services/SoundKitHelper.cs"
click node_sceneparser "https://github.com/marlamin/wownaminglib/blob/main/WoWNamingLib/Utils/SceneScriptParser.cs"
click node_datastore "https://github.com/marlamin/wownaminglib/blob/main/WoWNamingLib/Utils/DataStore.cs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_namer,node_newfiles toneBlue
class node_collectable,node_creature,node_interface,node_itemtexture,node_map,node_model,node_housing,node_music,node_sound,node_scenes,node_othernamers toneAmber
class node_casc,node_dbc,node_wdb,node_battlenet,node_soundkits toneMint
class node_sceneparser,node_datastore toneRose
class node_caller toneIndigo
```

## Components

### Naming orchestration

- [Naming facade](https://github.com/marlamin/wownaminglib/blob/main/WoWNamingLib/Namer.cs): `WoWNamingLib/Namer.cs`
- [Name collection](https://github.com/marlamin/wownaminglib/blob/main/WoWNamingLib/Services/NewFileManager.cs): `WoWNamingLib/Services/NewFileManager.cs`

### Asset naming

- [Collectables](https://github.com/marlamin/wownaminglib/blob/main/WoWNamingLib/Namers/Collectable.cs): `WoWNamingLib/Namers/Collectable.cs`
- [Creature displays](https://github.com/marlamin/wownaminglib/blob/main/WoWNamingLib/Namers/CreatureDisplayInfo.cs): `WoWNamingLib/Namers/CreatureDisplayInfo.cs`
- [Interface assets](https://github.com/marlamin/wownaminglib/blob/main/WoWNamingLib/Namers/Interface.cs): `WoWNamingLib/Namers/Interface.cs`
- [Item textures](https://github.com/marlamin/wownaminglib/blob/main/WoWNamingLib/Namers/ItemTexture.cs): `WoWNamingLib/Namers/ItemTexture.cs`
- [Map assets](https://github.com/marlamin/wownaminglib/blob/main/WoWNamingLib/Namers/Map.cs): `WoWNamingLib/Namers/Map.cs`
- [Models and housing](https://github.com/marlamin/wownaminglib/blob/main/WoWNamingLib/Namers/Model.cs): `WoWNamingLib/Namers/Model.cs`
- [Player housing](https://github.com/marlamin/wownaminglib/blob/main/WoWNamingLib/Namers/PlayerHousing.cs): `WoWNamingLib/Namers/PlayerHousing.cs`
- [Music assets](https://github.com/marlamin/wownaminglib/blob/main/WoWNamingLib/Namers/Music.cs): `WoWNamingLib/Namers/Music.cs`
- [Sound assets](https://github.com/marlamin/wownaminglib/blob/main/WoWNamingLib/Namers/Sound.cs): `WoWNamingLib/Namers/Sound.cs`
- [Scene scripts](https://github.com/marlamin/wownaminglib/blob/main/WoWNamingLib/Namers/SceneScript.cs): `WoWNamingLib/Namers/SceneScript.cs`
- [Other asset namers](https://github.com/marlamin/wownaminglib/tree/main/WoWNamingLib/Namers): `WoWNamingLib/Namers`

### Data and services

- [CASC access](https://github.com/marlamin/wownaminglib/blob/main/WoWNamingLib/Services/CASCManager.cs): `WoWNamingLib/Services/CASCManager.cs`
- [DBC loading](https://github.com/marlamin/wownaminglib/blob/main/WoWNamingLib/Services/DBCManager.cs): `WoWNamingLib/Services/DBCManager.cs`
- [WDB loading](https://github.com/marlamin/wownaminglib/blob/main/WoWNamingLib/Services/WDBManager.cs): `WoWNamingLib/Services/WDBManager.cs`
- [Battle.net API](https://github.com/marlamin/wownaminglib/blob/main/WoWNamingLib/Services/BattleNetAPI.cs): `WoWNamingLib/Services/BattleNetAPI.cs`
- [Sound kit lookup](https://github.com/marlamin/wownaminglib/blob/main/WoWNamingLib/Services/SoundKitHelper.cs): `WoWNamingLib/Services/SoundKitHelper.cs`

### Parsing utilities

- [Scene parser](https://github.com/marlamin/wownaminglib/blob/main/WoWNamingLib/Utils/SceneScriptParser.cs): `WoWNamingLib/Utils/SceneScriptParser.cs`
- [Data store](https://github.com/marlamin/wownaminglib/blob/main/WoWNamingLib/Utils/DataStore.cs): `WoWNamingLib/Utils/DataStore.cs`

### Other components

- **Library caller**

## Connections

- Library caller → Naming facade: invokes naming (evidence: `README.md`)
- Naming facade → Name collection: records names (evidence: `WoWNamingLib/Namer.cs`)
- Naming facade → Collectables: dispatches to (evidence: `WoWNamingLib/Namer.cs`)
- Naming facade → Creature displays: dispatches to (evidence: `WoWNamingLib/Namer.cs`)
- Naming facade → Interface assets: dispatches to (evidence: `WoWNamingLib/Namer.cs`)
- Naming facade → Item textures: dispatches to (evidence: `WoWNamingLib/Namer.cs`)
- Naming facade → Map assets: dispatches to (evidence: `WoWNamingLib/Namer.cs`)
- Naming facade → Models and housing: dispatches to (evidence: `WoWNamingLib/Namer.cs`)
- Naming facade → Player housing: dispatches to (evidence: `WoWNamingLib/Namer.cs`)
- Naming facade → Music assets: dispatches to (evidence: `WoWNamingLib/Namer.cs`)
- Naming facade → Sound assets: dispatches to (evidence: `WoWNamingLib/Namer.cs`)
- Naming facade → Scene scripts: dispatches to (evidence: `WoWNamingLib/Namer.cs`)
- Naming facade → Other asset namers: dispatches to (evidence: `WoWNamingLib/Namer.cs`)
- Naming facade → DBC loading: loads data (evidence: `WoWNamingLib/Namer.cs`)
- Naming facade → WDB loading: uses data (evidence: `WoWNamingLib/Services/WDBManager.cs`)
- Collectables → Name collection: records names (evidence: `WoWNamingLib/Namers/Collectable.cs`)
- Creature displays → Name collection: records names (evidence: `WoWNamingLib/Namers/CreatureDisplayInfo.cs`)
- Interface assets → Name collection: records names (evidence: `WoWNamingLib/Namers/Interface.cs`)
- Item textures → Name collection: records names (evidence: `WoWNamingLib/Namers/ItemTexture.cs`)
- Map assets → Name collection: records names (evidence: `WoWNamingLib/Namers/Map.cs`)
- Map assets → CASC access: reads files (evidence: `WoWNamingLib/Namers/Map.cs`)
- Models and housing → Name collection: records names (evidence: `WoWNamingLib/Namers/Model.cs`)
- Models and housing → CASC access: reads files (evidence: `WoWNamingLib/Namers/Model.cs`)
- Player housing → Name collection: records names (evidence: `WoWNamingLib/Namers/PlayerHousing.cs`)
- Player housing → Battle.net API: uses API (evidence: `WoWNamingLib/Namers/PlayerHousing.cs`)
- Music assets → Name collection: records names (evidence: `WoWNamingLib/Namers/Music.cs`)
- Music assets → Sound kit lookup: looks up kits (evidence: `WoWNamingLib/Namers/Music.cs`)
- Music assets → Scene parser: parses scripts (evidence: `WoWNamingLib/Namers/Music.cs`)
- Sound assets → Name collection: records names (evidence: `WoWNamingLib/Namers/Sound.cs`)
- Sound assets → Sound kit lookup: uses lookup (evidence: `WoWNamingLib/Namers/Sound.cs`)
- Scene scripts → Scene parser: parses scripts (evidence: `WoWNamingLib/Namers/SceneScript.cs`)
- Other asset namers → Name collection: records names (evidence: `WoWNamingLib/Namers/DBFilesClient.cs`)
- DBC loading → CASC access: reads game data
- WDB loading → Data store: uses storage (evidence: `WoWNamingLib/Services/WDBManager.cs`)
