mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-04-17 09:33:51 +00:00
ui: resolve chat sender names at render time to fix [Say] prefix
When SMSG_MESSAGECHAT arrives before the entity has spawned or its name is cached, senderName is empty and messages fell through to the generic '[Say] message' branch. Fix: - GameHandler::lookupName(guid): checks playerNameCache then entity manager (Unit subclass cast) at call time - Chat display: resolves senderName via lookupName() at render time so messages show "Name says: msg" even if the name was unavailable when the packet was first parsed
This commit is contained in:
parent
4987388ce7
commit
942df21c66
2 changed files with 34 additions and 8 deletions
|
|
@ -823,6 +823,22 @@ public:
|
|||
|
||||
// Player GUID
|
||||
uint64_t getPlayerGuid() const { return playerGuid; }
|
||||
|
||||
// Look up a display name for any guid: checks playerNameCache then entity manager.
|
||||
// Returns empty string if unknown. Used by chat display to resolve names at render time.
|
||||
const std::string& lookupName(uint64_t guid) const {
|
||||
static const std::string kEmpty;
|
||||
auto it = playerNameCache.find(guid);
|
||||
if (it != playerNameCache.end()) return it->second;
|
||||
auto entity = entityManager.getEntity(guid);
|
||||
if (entity) {
|
||||
if (auto* unit = dynamic_cast<const Unit*>(entity.get())) {
|
||||
if (!unit->getName().empty()) return unit->getName();
|
||||
}
|
||||
}
|
||||
return kEmpty;
|
||||
}
|
||||
|
||||
uint8_t getPlayerClass() const {
|
||||
const Character* ch = getActiveCharacter();
|
||||
return ch ? static_cast<uint8_t>(ch->characterClass) : 0;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue