mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-23 07:40:14 +00:00
game: implement Classic SMSG_FRIEND_LIST and full SMSG_CONTACT_LIST parsing
Classic 1.12 and TBC use SMSG_FRIEND_LIST (not SMSG_CONTACT_LIST) to send the initial friend list at login. Previously this packet was silently dropped, leaving friendsCache empty and breaking /friend remove and note operations for Classic players. - Add handleFriendList(): parses Classic format (u8 count, then per-entry: u64 guid + u8 status + optional area/level/class if online) - Add handleContactList(): fully parses WotLK SMSG_CONTACT_LIST entries (previously only read mask+count header and dropped all entries) - Both handlers populate friendGuids_ and call queryPlayerName() for unknown GUIDs; handleNameQueryResponse() now backfills friendsCache when a name resolves for a known friend GUID - Clear friendGuids_ on disconnect alongside playerNameCache
This commit is contained in:
parent
ab0828a4ce
commit
23878e530f
2 changed files with 102 additions and 18 deletions
|
|
@ -1537,6 +1537,8 @@ private:
|
|||
void handleWho(network::Packet& packet);
|
||||
|
||||
// ---- Social handlers ----
|
||||
void handleFriendList(network::Packet& packet); // Classic SMSG_FRIEND_LIST
|
||||
void handleContactList(network::Packet& packet); // WotLK SMSG_CONTACT_LIST (full parse)
|
||||
void handleFriendStatus(network::Packet& packet);
|
||||
void handleRandomRoll(network::Packet& packet);
|
||||
|
||||
|
|
@ -1656,6 +1658,7 @@ private:
|
|||
|
||||
// ---- Friend list cache ----
|
||||
std::unordered_map<std::string, uint64_t> friendsCache; // name -> guid
|
||||
std::unordered_set<uint64_t> friendGuids_; // all known friend GUIDs (for name backfill)
|
||||
uint32_t lastContactListMask_ = 0;
|
||||
uint32_t lastContactListCount_ = 0;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue