refactor: consolidate 26 playerNameCache.find() calls to use lookupName()

Replace 26 direct playerNameCache lookups with the existing lookupName()
helper, which also provides entity-name fallback. Eliminates duplicate
cache+entity lookup patterns in chat, social, loot, and combat handlers.
Simplifies getCachedPlayerName() to delegate to lookupName().
This commit is contained in:
Kelsi 2026-03-25 13:29:10 -07:00
parent f02fa10126
commit a0267e6e95

View file

@ -2046,8 +2046,8 @@ void GameHandler::registerOpcodeHandlers() {
std::string titleStr; std::string titleStr;
auto tit = titleNameCache_.find(titleBit); auto tit = titleNameCache_.find(titleBit);
if (tit != titleNameCache_.end() && !tit->second.empty()) { if (tit != titleNameCache_.end() && !tit->second.empty()) {
auto nameIt = playerNameCache.find(playerGuid); const auto& ln = lookupName(playerGuid);
const std::string& pName = (nameIt != playerNameCache.end()) ? nameIt->second : "you"; const std::string& pName = ln.empty() ? std::string("you") : ln;
const std::string& fmt = tit->second; const std::string& fmt = tit->second;
size_t pos = fmt.find("%s"); size_t pos = fmt.find("%s");
if (pos != std::string::npos) if (pos != std::string::npos)
@ -2384,8 +2384,7 @@ void GameHandler::registerOpcodeHandlers() {
uint32_t itemId = packet.readUInt32(); uint32_t itemId = packet.readUInt32();
uint32_t count = packet.readUInt32(); uint32_t count = packet.readUInt32();
if (isInGroup() && looterGuid != playerGuid) { if (isInGroup() && looterGuid != playerGuid) {
auto nit = playerNameCache.find(looterGuid); const auto& looterName = lookupName(looterGuid);
std::string looterName = (nit != playerNameCache.end()) ? nit->second : "";
if (!looterName.empty()) { if (!looterName.empty()) {
queryItemInfo(itemId, 0); queryItemInfo(itemId, 0);
std::string itemName = "item #" + std::to_string(itemId); std::string itemName = "item #" + std::to_string(itemId);
@ -2702,13 +2701,7 @@ void GameHandler::registerOpcodeHandlers() {
uint64_t respGuid = packet.readUInt64(); uint64_t respGuid = packet.readUInt64();
uint8_t isReady = packet.readUInt8(); uint8_t isReady = packet.readUInt8();
if (isReady) ++readyCheckReadyCount_; else ++readyCheckNotReadyCount_; if (isReady) ++readyCheckReadyCount_; else ++readyCheckNotReadyCount_;
auto nit = playerNameCache.find(respGuid); const auto& rname = lookupName(respGuid);
std::string rname;
if (nit != playerNameCache.end()) rname = nit->second;
else {
auto ent = entityManager.getEntity(respGuid);
if (ent) rname = std::static_pointer_cast<game::Unit>(ent)->getName();
}
if (!rname.empty()) { if (!rname.empty()) {
bool found = false; bool found = false;
for (auto& r : readyCheckResults_) { for (auto& r : readyCheckResults_) {
@ -2758,17 +2751,8 @@ void GameHandler::registerOpcodeHandlers() {
if (packet.getRemainingSize() < 16) return; if (packet.getRemainingSize() < 16) return;
uint64_t killerGuid = packet.readUInt64(); uint64_t killerGuid = packet.readUInt64();
uint64_t victimGuid = packet.readUInt64(); uint64_t victimGuid = packet.readUInt64();
auto nameFor = [this](uint64_t g) -> std::string { const auto& killerName = lookupName(killerGuid);
auto nit = playerNameCache.find(g); const auto& victimName = lookupName(victimGuid);
if (nit != playerNameCache.end()) return nit->second;
auto ent = entityManager.getEntity(g);
if (ent && (ent->getType() == game::ObjectType::UNIT ||
ent->getType() == game::ObjectType::PLAYER))
return std::static_pointer_cast<game::Unit>(ent)->getName();
return {};
};
std::string killerName = nameFor(killerGuid);
std::string victimName = nameFor(victimGuid);
if (!killerName.empty() && !victimName.empty()) { if (!killerName.empty() && !victimName.empty()) {
char buf[256]; char buf[256];
std::snprintf(buf, sizeof(buf), "%s killed %s.", killerName.c_str(), victimName.c_str()); std::snprintf(buf, sizeof(buf), "%s killed %s.", killerName.c_str(), victimName.c_str());
@ -2862,8 +2846,7 @@ void GameHandler::registerOpcodeHandlers() {
if (!casterName.empty()) { if (!casterName.empty()) {
resurrectCasterName_ = casterName; resurrectCasterName_ = casterName;
} else { } else {
auto nit = playerNameCache.find(casterGuid); resurrectCasterName_ = lookupName(casterGuid);
resurrectCasterName_ = (nit != playerNameCache.end()) ? nit->second : "";
} }
resurrectRequestPending_ = true; resurrectRequestPending_ = true;
fireAddonEvent("RESURRECT_REQUEST", {resurrectCasterName_}); fireAddonEvent("RESURRECT_REQUEST", {resurrectCasterName_});
@ -3268,17 +3251,17 @@ void GameHandler::registerOpcodeHandlers() {
dispatchTable_[Opcode::SMSG_BATTLEGROUND_PLAYER_JOINED] = [this](network::Packet& packet) { dispatchTable_[Opcode::SMSG_BATTLEGROUND_PLAYER_JOINED] = [this](network::Packet& packet) {
if (packet.getRemainingSize() >= 8) { if (packet.getRemainingSize() >= 8) {
uint64_t guid = packet.readUInt64(); uint64_t guid = packet.readUInt64();
auto it = playerNameCache.find(guid); const auto& name = lookupName(guid);
if (it != playerNameCache.end() && !it->second.empty()) if (!name.empty())
addSystemChatMessage(it->second + " has entered the battleground."); addSystemChatMessage(name + " has entered the battleground.");
} }
}; };
dispatchTable_[Opcode::SMSG_BATTLEGROUND_PLAYER_LEFT] = [this](network::Packet& packet) { dispatchTable_[Opcode::SMSG_BATTLEGROUND_PLAYER_LEFT] = [this](network::Packet& packet) {
if (packet.getRemainingSize() >= 8) { if (packet.getRemainingSize() >= 8) {
uint64_t guid = packet.readUInt64(); uint64_t guid = packet.readUInt64();
auto it = playerNameCache.find(guid); const auto& name = lookupName(guid);
if (it != playerNameCache.end() && !it->second.empty()) if (!name.empty())
addSystemChatMessage(it->second + " has left the battleground."); addSystemChatMessage(name + " has left the battleground.");
} }
}; };
@ -3468,10 +3451,7 @@ void GameHandler::registerOpcodeHandlers() {
auto player = std::dynamic_pointer_cast<Player>(entity); auto player = std::dynamic_pointer_cast<Player>(entity);
if (player && !player->getName().empty()) name = player->getName(); if (player && !player->getName().empty()) name = player->getName();
} }
if (name.empty()) { if (name.empty()) name = lookupName(memberGuid);
auto nit = playerNameCache.find(memberGuid);
if (nit != playerNameCache.end()) name = nit->second;
}
if (name.empty()) name = "(unknown)"; if (name.empty()) name = "(unknown)";
std::string entry = " " + name; std::string entry = " " + name;
if (memberFlags & 0x01) entry += " [Moderator]"; if (memberFlags & 0x01) entry += " [Moderator]";
@ -5784,9 +5764,9 @@ void GameHandler::registerOpcodeHandlers() {
// uint64 memberGuid — a player was added to your group via meeting stone // uint64 memberGuid — a player was added to your group via meeting stone
if (packet.getRemainingSize() >= 8) { if (packet.getRemainingSize() >= 8) {
uint64_t memberGuid = packet.readUInt64(); uint64_t memberGuid = packet.readUInt64();
auto nit = playerNameCache.find(memberGuid); const auto& memberName = lookupName(memberGuid);
if (nit != playerNameCache.end() && !nit->second.empty()) { if (!memberName.empty()) {
addSystemChatMessage("Meeting Stone: " + nit->second + addSystemChatMessage("Meeting Stone: " + memberName +
" has been added to your group."); " has been added to your group.");
} else { } else {
addSystemChatMessage("Meeting Stone: A new player has been added to your group."); addSystemChatMessage("Meeting Stone: A new player has been added to your group.");
@ -7140,10 +7120,7 @@ void GameHandler::registerOpcodeHandlers() {
std::string mentorName; std::string mentorName;
auto ent = entityManager.getEntity(mentorGuid); auto ent = entityManager.getEntity(mentorGuid);
if (auto* unit = dynamic_cast<Unit*>(ent.get())) mentorName = unit->getName(); if (auto* unit = dynamic_cast<Unit*>(ent.get())) mentorName = unit->getName();
if (mentorName.empty()) { if (mentorName.empty()) mentorName = lookupName(mentorGuid);
auto nit = playerNameCache.find(mentorGuid);
if (nit != playerNameCache.end()) mentorName = nit->second;
}
addSystemChatMessage(mentorName.empty() addSystemChatMessage(mentorName.empty()
? "A player is offering to grant you a level." ? "A player is offering to grant you a level."
: (mentorName + " is offering to grant you a level.")); : (mentorName + " is offering to grant you a level."));
@ -12435,10 +12412,7 @@ void GameHandler::sendChatMessage(ChatType type, const std::string& message, con
echo.message = message; echo.message = message;
// Look up player name // Look up player name
auto nameIt = playerNameCache.find(playerGuid); echo.senderName = lookupName(playerGuid);
if (nameIt != playerNameCache.end()) {
echo.senderName = nameIt->second;
}
if (type == ChatType::WHISPER) { if (type == ChatType::WHISPER) {
echo.type = ChatType::WHISPER_INFORM; echo.type = ChatType::WHISPER_INFORM;
@ -12474,27 +12448,7 @@ void GameHandler::handleMessageChat(network::Packet& packet) {
// Resolve sender name from entity/cache if not already set by parser // Resolve sender name from entity/cache if not already set by parser
if (data.senderName.empty() && data.senderGuid != 0) { if (data.senderName.empty() && data.senderGuid != 0) {
// Check player name cache first data.senderName = lookupName(data.senderGuid);
auto nameIt = playerNameCache.find(data.senderGuid);
if (nameIt != playerNameCache.end()) {
data.senderName = nameIt->second;
} else {
// Try entity name
auto entity = entityManager.getEntity(data.senderGuid);
if (entity) {
if (entity->getType() == ObjectType::PLAYER) {
auto player = std::dynamic_pointer_cast<Player>(entity);
if (player && !player->getName().empty()) {
data.senderName = player->getName();
}
} else if (entity->getType() == ObjectType::UNIT) {
auto unit = std::dynamic_pointer_cast<Unit>(entity);
if (unit && !unit->getName().empty()) {
data.senderName = unit->getName();
}
}
}
}
// If still unknown, proactively query the server so the UI can show names soon after. // If still unknown, proactively query the server so the UI can show names soon after.
if (data.senderName.empty()) { if (data.senderName.empty()) {
@ -12621,17 +12575,7 @@ void GameHandler::handleTextEmote(network::Packet& packet) {
} }
// Resolve sender name // Resolve sender name
std::string senderName; std::string senderName = lookupName(data.senderGuid);
auto nameIt = playerNameCache.find(data.senderGuid);
if (nameIt != playerNameCache.end()) {
senderName = nameIt->second;
} else {
auto entity = entityManager.getEntity(data.senderGuid);
if (entity) {
auto unit = std::dynamic_pointer_cast<Unit>(entity);
if (unit) senderName = unit->getName();
}
}
if (senderName.empty()) { if (senderName.empty()) {
senderName = "Unknown"; senderName = "Unknown";
queryPlayerName(data.senderGuid); queryPlayerName(data.senderGuid);
@ -12894,10 +12838,7 @@ void GameHandler::setFocus(uint64_t guid) {
if (unit && !unit->getName().empty()) { if (unit && !unit->getName().empty()) {
name = unit->getName(); name = unit->getName();
} }
if (name.empty()) { if (name.empty()) name = lookupName(guid);
auto nit = playerNameCache.find(guid);
if (nit != playerNameCache.end()) name = nit->second;
}
if (name.empty()) name = "Unknown"; if (name.empty()) name = "Unknown";
addSystemChatMessage("Focus set: " + name); addSystemChatMessage("Focus set: " + name);
LOG_INFO("Focus set: 0x", std::hex, guid, std::dec); LOG_INFO("Focus set: 0x", std::hex, guid, std::dec);
@ -13574,9 +13515,7 @@ void GameHandler::handleDuelRequested(network::Packet& packet) {
duelChallengerName_ = unit->getName(); duelChallengerName_ = unit->getName();
} }
if (duelChallengerName_.empty()) { if (duelChallengerName_.empty()) {
auto nit = playerNameCache.find(duelChallengerGuid_); duelChallengerName_ = lookupName(duelChallengerGuid_);
if (nit != playerNameCache.end())
duelChallengerName_ = nit->second;
} }
if (duelChallengerName_.empty()) { if (duelChallengerName_.empty()) {
char tmp[32]; char tmp[32];
@ -14142,8 +14081,7 @@ void GameHandler::queryGameObjectInfo(uint32_t entry, uint64_t guid) {
} }
std::string GameHandler::getCachedPlayerName(uint64_t guid) const { std::string GameHandler::getCachedPlayerName(uint64_t guid) const {
auto it = playerNameCache.find(guid); return std::string(lookupName(guid));
return (it != playerNameCache.end()) ? it->second : "";
} }
std::string GameHandler::getCachedCreatureName(uint32_t entry) const { std::string GameHandler::getCachedCreatureName(uint32_t entry) const {
@ -23683,10 +23621,8 @@ void GameHandler::handleFriendList(network::Packet& packet) {
} }
// Track as a friend GUID; resolve name via name query // Track as a friend GUID; resolve name via name query
friendGuids_.insert(guid); friendGuids_.insert(guid);
auto nit = playerNameCache.find(guid); std::string name = lookupName(guid);
std::string name; if (!name.empty()) {
if (nit != playerNameCache.end()) {
name = nit->second;
friendsCache[name] = guid; friendsCache[name] = guid;
LOG_INFO(" Friend: ", name, " status=", static_cast<int>(status)); LOG_INFO(" Friend: ", name, " status=", static_cast<int>(status));
} else { } else {
@ -23746,9 +23682,9 @@ void GameHandler::handleContactList(network::Packet& packet) {
classId = packet.readUInt32(); classId = packet.readUInt32();
} }
friendGuids_.insert(guid); friendGuids_.insert(guid);
auto nit = playerNameCache.find(guid); const auto& fname = lookupName(guid);
if (nit != playerNameCache.end()) { if (!fname.empty()) {
friendsCache[nit->second] = guid; friendsCache[fname] = guid;
} else { } else {
queryPlayerName(guid); queryPlayerName(guid);
} }
@ -23762,8 +23698,7 @@ void GameHandler::handleContactList(network::Packet& packet) {
entry.areaId = areaId; entry.areaId = areaId;
entry.level = level; entry.level = level;
entry.classId = classId; entry.classId = classId;
auto nit = playerNameCache.find(guid); entry.name = lookupName(guid);
if (nit != playerNameCache.end()) entry.name = nit->second;
contacts_.push_back(std::move(entry)); contacts_.push_back(std::move(entry));
} }
LOG_INFO("SMSG_CONTACT_LIST: mask=", lastContactListMask_, LOG_INFO("SMSG_CONTACT_LIST: mask=", lastContactListMask_,
@ -23790,8 +23725,7 @@ void GameHandler::handleFriendStatus(network::Packet& packet) {
if (cit2 != contacts_.end() && !cit2->name.empty()) { if (cit2 != contacts_.end() && !cit2->name.empty()) {
playerName = cit2->name; playerName = cit2->name;
} else { } else {
auto it = playerNameCache.find(data.guid); playerName = lookupName(data.guid);
if (it != playerNameCache.end()) playerName = it->second;
} }
} }
@ -23871,12 +23805,8 @@ void GameHandler::handleRandomRoll(network::Packet& packet) {
if (data.rollerGuid == playerGuid) { if (data.rollerGuid == playerGuid) {
rollerName = "You"; rollerName = "You";
} else { } else {
auto it = playerNameCache.find(data.rollerGuid); rollerName = lookupName(data.rollerGuid);
if (it != playerNameCache.end()) { if (rollerName.empty()) rollerName = "Someone";
rollerName = it->second;
} else {
rollerName = "Someone";
}
} }
// Build message // Build message
@ -25134,9 +25064,7 @@ void GameHandler::handleQuestConfirmAccept(network::Packet& packet) {
sharedQuestSharerName_ = unit->getName(); sharedQuestSharerName_ = unit->getName();
} }
if (sharedQuestSharerName_.empty()) { if (sharedQuestSharerName_.empty()) {
auto nit = playerNameCache.find(sharedQuestSharerGuid_); sharedQuestSharerName_ = lookupName(sharedQuestSharerGuid_);
if (nit != playerNameCache.end())
sharedQuestSharerName_ = nit->second;
} }
if (sharedQuestSharerName_.empty()) { if (sharedQuestSharerName_.empty()) {
char tmp[32]; char tmp[32];
@ -25185,9 +25113,7 @@ void GameHandler::handleSummonRequest(network::Packet& packet) {
summonerName_ = unit->getName(); summonerName_ = unit->getName();
} }
if (summonerName_.empty()) { if (summonerName_.empty()) {
auto nit = playerNameCache.find(summonerGuid_); summonerName_ = lookupName(summonerGuid_);
if (nit != playerNameCache.end())
summonerName_ = nit->second;
} }
if (summonerName_.empty()) { if (summonerName_.empty()) {
char tmp[32]; char tmp[32];
@ -25250,9 +25176,7 @@ void GameHandler::handleTradeStatus(network::Packet& packet) {
tradePeerName_ = unit->getName(); tradePeerName_ = unit->getName();
} }
if (tradePeerName_.empty()) { if (tradePeerName_.empty()) {
auto nit = playerNameCache.find(tradePeerGuid_); tradePeerName_ = lookupName(tradePeerGuid_);
if (nit != playerNameCache.end())
tradePeerName_ = nit->second;
} }
if (tradePeerName_.empty()) { if (tradePeerName_.empty()) {
char tmp[32]; char tmp[32];
@ -25628,9 +25552,9 @@ std::string GameHandler::getFormattedTitle(uint32_t bit) const {
auto it = titleNameCache_.find(bit); auto it = titleNameCache_.find(bit);
if (it == titleNameCache_.end() || it->second.empty()) return {}; if (it == titleNameCache_.end() || it->second.empty()) return {};
const auto& ln2 = lookupName(playerGuid);
static const std::string kUnknown = "unknown"; static const std::string kUnknown = "unknown";
auto nameIt = playerNameCache.find(playerGuid); const std::string& pName = ln2.empty() ? kUnknown : ln2;
const std::string& pName = (nameIt != playerNameCache.end()) ? nameIt->second : kUnknown;
const std::string& fmt = it->second; const std::string& fmt = it->second;
size_t pos = fmt.find("%s"); size_t pos = fmt.find("%s");
@ -25722,11 +25646,7 @@ void GameHandler::handleAchievementEarned(network::Packet& packet) {
if (auto* unit = getUnitByGuid(guid)) { if (auto* unit = getUnitByGuid(guid)) {
senderName = unit->getName(); senderName = unit->getName();
} }
if (senderName.empty()) { if (senderName.empty()) senderName = lookupName(guid);
auto nit = playerNameCache.find(guid);
if (nit != playerNameCache.end())
senderName = nit->second;
}
if (senderName.empty()) { if (senderName.empty()) {
char tmp[32]; char tmp[32];
std::snprintf(tmp, sizeof(tmp), "0x%llX", std::snprintf(tmp, sizeof(tmp), "0x%llX",