mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-24 00:00:13 +00:00
Fix voice gender using server data and update loading screen UI
- Use authoritative playerRace/playerGender at spawn for voice profiles instead of unreliable model name parsing - Support nonbinary gender with useFemaleModel body type fallback - Move voice setup into spawnPlayerCharacter() for all spawn paths - Remove legacy single-player default Human Male clip preloading - Make loading screen text black and move progress bar to top
This commit is contained in:
parent
efc7e65dfc
commit
f2f6ffd2cd
5 changed files with 58 additions and 15 deletions
|
|
@ -2545,6 +2545,32 @@ void Application::spawnPlayerCharacter() {
|
|||
static_cast<int>(spawnPos.z), ")");
|
||||
playerCharacterSpawned = true;
|
||||
|
||||
// Set voice profile to match character race/gender
|
||||
if (auto* asm_ = renderer->getActivitySoundManager()) {
|
||||
const char* raceFolder = "Human";
|
||||
const char* raceBase = "Human";
|
||||
switch (playerRace_) {
|
||||
case game::Race::HUMAN: raceFolder = "Human"; raceBase = "Human"; break;
|
||||
case game::Race::ORC: raceFolder = "Orc"; raceBase = "Orc"; break;
|
||||
case game::Race::DWARF: raceFolder = "Dwarf"; raceBase = "Dwarf"; break;
|
||||
case game::Race::NIGHT_ELF: raceFolder = "NightElf"; raceBase = "NightElf"; break;
|
||||
case game::Race::UNDEAD: raceFolder = "Scourge"; raceBase = "Scourge"; break;
|
||||
case game::Race::TAUREN: raceFolder = "Tauren"; raceBase = "Tauren"; break;
|
||||
case game::Race::GNOME: raceFolder = "Gnome"; raceBase = "Gnome"; break;
|
||||
case game::Race::TROLL: raceFolder = "Troll"; raceBase = "Troll"; break;
|
||||
case game::Race::BLOOD_ELF: raceFolder = "BloodElf"; raceBase = "BloodElf"; break;
|
||||
case game::Race::DRAENEI: raceFolder = "Draenei"; raceBase = "Draenei"; break;
|
||||
default: break;
|
||||
}
|
||||
bool useFemaleVoice = (playerGender_ == game::Gender::FEMALE);
|
||||
if (playerGender_ == game::Gender::NONBINARY && gameHandler) {
|
||||
if (const game::Character* ch = gameHandler->getActiveCharacter()) {
|
||||
useFemaleVoice = ch->useFemaleModel;
|
||||
}
|
||||
}
|
||||
asm_->setCharacterVoiceProfile(std::string(raceFolder), std::string(raceBase), !useFemaleVoice);
|
||||
}
|
||||
|
||||
// Track which character's appearance this instance represents so we can
|
||||
// respawn if the user logs into a different character without restarting.
|
||||
spawnedPlayerGuid_ = gameHandler ? gameHandler->getActiveCharacterGuid() : 0;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue