aboutsummaryrefslogtreecommitdiff
path: root/src/game/GossipDef.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/GossipDef.cpp')
-rw-r--r--src/game/GossipDef.cpp29
1 files changed, 21 insertions, 8 deletions
diff --git a/src/game/GossipDef.cpp b/src/game/GossipDef.cpp
index 5b0d0bd1dc8..6629662d83e 100644
--- a/src/game/GossipDef.cpp
+++ b/src/game/GossipDef.cpp
@@ -29,6 +29,7 @@
GossipMenu::GossipMenu()
{
m_gItems.reserve(16); // can be set for max from most often sizes to speedup push_back and less memory use
+ m_gMenuId = 0;
}
GossipMenu::~GossipMenu()
@@ -46,13 +47,24 @@ void GossipMenu::AddMenuItem(uint8 Icon, const std::string& Message, uint32 dtSe
gItem.m_gMessage = Message;
gItem.m_gCoded = Coded;
gItem.m_gSender = dtSender;
- gItem.m_gAction = dtAction;
+ gItem.m_gOptionId = dtAction;
gItem.m_gBoxMessage = BoxMessage;
gItem.m_gBoxMoney = BoxMoney;
m_gItems.push_back(gItem);
}
+void GossipMenu::AddGossipMenuItemData(uint32 action_menu, uint32 action_poi, uint32 action_script)
+{
+ GossipMenuItemData pItemData;
+
+ pItemData.m_gAction_menu = action_menu;
+ pItemData.m_gAction_poi = action_poi;
+ pItemData.m_gAction_script = action_script;
+
+ m_gItemsData.push_back(pItemData);
+}
+
void GossipMenu::AddMenuItem(uint8 Icon, const std::string& Message, bool Coded)
{
AddMenuItem( Icon, Message, 0, 0, "", 0, Coded);
@@ -79,7 +91,7 @@ uint32 GossipMenu::MenuItemAction( unsigned int ItemId )
{
if ( ItemId >= m_gItems.size() ) return 0;
- return m_gItems[ ItemId ].m_gAction;
+ return m_gItems[ ItemId ].m_gOptionId;
}
bool GossipMenu::MenuItemCoded( unsigned int ItemId )
@@ -92,6 +104,7 @@ bool GossipMenu::MenuItemCoded( unsigned int ItemId )
void GossipMenu::ClearMenu()
{
m_gItems.clear();
+ m_gItemsData.clear();
}
PlayerMenu::PlayerMenu( WorldSession *session ) : pSession(session)
@@ -124,13 +137,13 @@ bool PlayerMenu::GossipOptionCoded( unsigned int Selection )
return mGossipMenu.MenuItemCoded( Selection );
}
-void PlayerMenu::SendGossipMenu( uint32 TitleTextId, uint64 npcGUID )
+void PlayerMenu::SendGossipMenu(uint32 TitleTextId, uint64 objectGUID)
{
- WorldPacket data( SMSG_GOSSIP_MESSAGE, (100) ); // guess size
- data << uint64(npcGUID);
- data << uint32(0); // new 2.4.0
- data << uint32( TitleTextId );
- data << uint32( mGossipMenu.MenuItemCount() ); // max count 0x10
+ WorldPacket data(SMSG_GOSSIP_MESSAGE, (100)); // guess size
+ data << uint64(objectGUID);
+ data << uint32(mGossipMenu.GetMenuId()); // new 2.4.0
+ data << uint32(TitleTextId);
+ data << uint32(mGossipMenu.MenuItemCount()); // max count 0x10
for (uint32 iI = 0; iI < mGossipMenu.MenuItemCount(); ++iI )
{