Fix SoundEntries.dbc field indices for SMSG_PLAY_MUSIC and remove dead NpcVoiceManager code

Correct SoundEntries.dbc field access in the PlayMusic callback: file names are at
fields 3-12 (not 2-11) and DirectoryBase is at field 23 (not 22). Field 2 is the
Name label string, not a file path.

Remove dead detectVoiceType(creatureEntry) from NpcVoiceManager — it was never
called; actual voice detection uses detectVoiceTypeFromDisplayId() in Application.
This commit is contained in:
Kelsi 2026-03-09 16:01:29 -07:00
parent 9c3faa0e16
commit 46f2c0df85
3 changed files with 3 additions and 11 deletions

View file

@ -74,7 +74,6 @@ private:
void loadVoiceSounds(); void loadVoiceSounds();
bool loadSound(const std::string& path, VoiceSample& sample); bool loadSound(const std::string& path, VoiceSample& sample);
VoiceType detectVoiceType(uint32_t creatureEntry) const;
void playSound(uint64_t npcGuid, VoiceType voiceType, SoundCategory category, const glm::vec3& position); void playSound(uint64_t npcGuid, VoiceType voiceType, SoundCategory category, const glm::vec3& position);
pipeline::AssetManager* assetManager_ = nullptr; pipeline::AssetManager* assetManager_ = nullptr;

View file

@ -373,12 +373,5 @@ void NpcVoiceManager::playFlee(uint64_t npcGuid, VoiceType voiceType, const glm:
playSound(npcGuid, voiceType, SoundCategory::FLEE, position); playSound(npcGuid, voiceType, SoundCategory::FLEE, position);
} }
VoiceType NpcVoiceManager::detectVoiceType(uint32_t creatureEntry) const {
// TODO: Use CreatureTemplate.dbc or other data to map creature entry to voice type
// For now, return generic
(void)creatureEntry;
return VoiceType::GENERIC;
}
} // namespace audio } // namespace audio
} // namespace wowee } // namespace wowee

View file

@ -2109,10 +2109,10 @@ void Application::setupUICallbacks() {
int32_t idx = dbc->findRecordById(soundId); int32_t idx = dbc->findRecordById(soundId);
if (idx < 0) return; if (idx < 0) return;
// SoundEntries.dbc (WotLK): fields 2-11 = Name[0..9], field 22 = DirectoryBase // SoundEntries.dbc (WotLK): field 2 = Name (label), fields 3-12 = File[0..9], field 23 = DirectoryBase
const uint32_t row = static_cast<uint32_t>(idx); const uint32_t row = static_cast<uint32_t>(idx);
std::string dir = dbc->getString(row, 22); std::string dir = dbc->getString(row, 23);
for (uint32_t f = 2; f <= 11; ++f) { for (uint32_t f = 3; f <= 12; ++f) {
std::string name = dbc->getString(row, f); std::string name = dbc->getString(row, f);
if (name.empty()) continue; if (name.empty()) continue;
std::string path = dir.empty() ? name : dir + "\\" + name; std::string path = dir.empty() ? name : dir + "\\" + name;