Enrich zone music from AreaTable/ZoneMusic/SoundEntries DBC chain

Add ZoneManager::enrichFromDBC() which walks AreaTable.dbc (field 8 = ZoneMusicId)
→ ZoneMusic.dbc (fields 6/7 = day/night SoundEntryIds) → SoundEntries.dbc
(fields 3-12 = files, field 23 = DirectoryBase) and appends MPQ music paths for
all zones in the DBC, covering ~2300+ areas vs the previous ~15 hardcoded entries.

Existing hardcoded paths are preserved as the primary pool; DBC paths are added
only if not already present. Called from Renderer::init() after initialize().
This commit is contained in:
Kelsi 2026-03-09 16:04:52 -07:00
parent 46f2c0df85
commit 43b9ecd857
3 changed files with 93 additions and 1 deletions

View file

@ -6,6 +6,7 @@
#include <vector>
namespace wowee {
namespace pipeline { class AssetManager; }
namespace game {
struct ZoneInfo {
@ -18,6 +19,10 @@ class ZoneManager {
public:
void initialize();
// Supplement zone music paths using AreaTable → ZoneMusic → SoundEntries DBC chain.
// Safe to call after initialize(); idempotent and additive (does not remove existing paths).
void enrichFromDBC(pipeline::AssetManager* assets);
uint32_t getZoneId(int tileX, int tileY) const;
const ZoneInfo* getZoneInfo(uint32_t zoneId) const;
std::string getRandomMusic(uint32_t zoneId);