fix(Core/Gossips): Properly send packet with questgiver query handler. (#12290)

Fixes #12215
This commit is contained in:
UltraNix
2022-07-06 14:05:45 +02:00
committed by GitHub
parent 7814ac68cc
commit c3d8340e6b
4 changed files with 33 additions and 6 deletions

View File

@@ -29,6 +29,7 @@ GossipMenu::GossipMenu()
{
_menuId = 0;
_locale = DEFAULT_LOCALE;
_senderGUID.Clear();
}
GossipMenu::~GossipMenu()
@@ -188,8 +189,10 @@ void PlayerMenu::ClearMenus()
_questMenu.ClearMenu();
}
void PlayerMenu::SendGossipMenu(uint32 titleTextId, ObjectGuid objectGUID) const
void PlayerMenu::SendGossipMenu(uint32 titleTextId, ObjectGuid objectGUID)
{
_gossipMenu.SetSenderGUID(objectGUID);
WorldPacket data(SMSG_GOSSIP_MESSAGE, 24 + _gossipMenu.GetMenuItemCount() * 100 + _questMenu.GetMenuItemCount() * 75); // guess size
data << objectGUID;
data << uint32(_gossipMenu.GetMenuId()); // new 2.4.0
@@ -234,8 +237,10 @@ void PlayerMenu::SendGossipMenu(uint32 titleTextId, ObjectGuid objectGUID) const
_session->SendPacket(&data);
}
void PlayerMenu::SendCloseGossip() const
void PlayerMenu::SendCloseGossip()
{
_gossipMenu.SetSenderGUID(ObjectGuid::Empty);
WorldPacket data(SMSG_GOSSIP_COMPLETE, 0);
_session->SendPacket(&data);
}

View File

@@ -213,11 +213,15 @@ public:
return _menuItems;
}
void SetSenderGUID(ObjectGuid guid) { _senderGUID = guid; }
[[nodiscard]] ObjectGuid GetSenderGUID() const { return _senderGUID; }
private:
GossipMenuItemContainer _menuItems;
GossipMenuItemDataContainer _menuItemData;
uint32 _menuId;
LocaleConstant _locale;
ObjectGuid _senderGUID;
};
class QuestMenu
@@ -266,8 +270,8 @@ public:
[[nodiscard]] uint32 GetGossipOptionAction(uint32 selection) const { return _gossipMenu.GetMenuItemAction(selection); }
[[nodiscard]] bool IsGossipOptionCoded(uint32 selection) const { return _gossipMenu.IsMenuItemCoded(selection); }
void SendGossipMenu(uint32 titleTextId, ObjectGuid objectGUID) const;
void SendCloseGossip() const;
void SendGossipMenu(uint32 titleTextId, ObjectGuid objectGUID);
void SendCloseGossip();
void SendPointOfInterest(uint32 poiId) const;
/*********************************************************/