Resolve emote text from DBC for other players' text emotes

Load third-person emote text templates (othersTarget/othersNoTarget)
from EmotesText.dbc fields 3 and 7 alongside existing sender text.
Build reverse lookup map from dbcId to EmoteInfo for incoming
SMSG_TEXT_EMOTE resolution. Other players now show proper emote
descriptions like "Player dances with Target" instead of generic
"Player performs an emote" text.
This commit is contained in:
Kelsi 2026-02-14 15:11:43 -08:00
parent a90c130d6e
commit 3acb42b363
5 changed files with 118 additions and 38 deletions

View file

@ -239,6 +239,10 @@ public:
using ChatBubbleCallback = std::function<void(uint64_t, const std::string&, bool)>;
void setChatBubbleCallback(ChatBubbleCallback cb) { chatBubbleCallback_ = std::move(cb); }
// Emote animation callback: (entityGuid, animationId)
using EmoteAnimCallback = std::function<void(uint64_t, uint32_t)>;
void setEmoteAnimCallback(EmoteAnimCallback cb) { emoteAnimCallback_ = std::move(cb); }
/**
* Get chat history (recent messages)
* @param maxMessages Maximum number of messages to return (0 = all)
@ -1049,6 +1053,7 @@ private:
size_t maxChatHistory = 100; // Maximum chat messages to keep
std::vector<std::string> joinedChannels_; // Active channel memberships
ChatBubbleCallback chatBubbleCallback_;
EmoteAnimCallback emoteAnimCallback_;
// Targeting
uint64_t targetGuid = 0;