Handle SMSG_QUEST_CONFIRM_ACCEPT (shared quest) with accept/decline popup

- Parse SMSG_QUEST_CONFIRM_ACCEPT (questId + title + sharerGuid),
  show chat notification with quest title and sharer name
- acceptSharedQuest() sends CMSG_QUEST_CONFIRM_ACCEPT with questId
- renderSharedQuestPopup(): shows sharer name, gold quest title,
  Accept/Decline buttons (stacked below other social popups)
This commit is contained in:
Kelsi 2026-03-09 14:14:15 -07:00
parent e793b44151
commit acde6070cf
4 changed files with 94 additions and 0 deletions

View file

@ -707,6 +707,14 @@ public:
bool hasPendingGroupInvite() const { return pendingGroupInvite; }
const std::string& getPendingInviterName() const { return pendingInviterName; }
// ---- Shared Quest ----
bool hasPendingSharedQuest() const { return pendingSharedQuest_; }
uint32_t getSharedQuestId() const { return sharedQuestId_; }
const std::string& getSharedQuestTitle() const { return sharedQuestTitle_; }
const std::string& getSharedQuestSharerName() const { return sharedQuestSharerName_; }
void acceptSharedQuest();
void declineSharedQuest();
// ---- Summon ----
bool hasPendingSummonRequest() const { return pendingSummonRequest_; }
const std::string& getSummonerName() const { return summonerName_; }
@ -1295,6 +1303,7 @@ private:
// ---- Instance lockout handler ----
void handleRaidInstanceInfo(network::Packet& packet);
void handleQuestConfirmAccept(network::Packet& packet);
void handleSummonRequest(network::Packet& packet);
void handleTradeStatus(network::Packet& packet);
void handleDuelRequested(network::Packet& packet);
@ -1654,6 +1663,13 @@ private:
bool pendingGroupInvite = false;
std::string pendingInviterName;
// Shared quest state
bool pendingSharedQuest_ = false;
uint32_t sharedQuestId_ = 0;
std::string sharedQuestTitle_;
std::string sharedQuestSharerName_;
uint64_t sharedQuestSharerGuid_ = 0;
// Summon state
bool pendingSummonRequest_ = false;
uint64_t summonerGuid_ = 0;