diff options
author | win32 <none@none> | 2009-12-20 13:35:08 +0200 |
---|---|---|
committer | win32 <none@none> | 2009-12-20 13:35:08 +0200 |
commit | 7c9f6b4bc37eec7b94aaba1cd8912bd5c0054e2a (patch) | |
tree | 6dde39dad95c2ce3d688890082cd66d66abb878e /src/game/GossipDef.cpp | |
parent | 31c6b10a192671562f38f17f9e6270979ebe417c (diff) |
Merge MaNGOS, Gossip System. Autor NoFantasy.
* DB support required
* Closes #859
--HG--
branch : trunk
Diffstat (limited to 'src/game/GossipDef.cpp')
-rw-r--r-- | src/game/GossipDef.cpp | 29 |
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 ) { |