diff options
Diffstat (limited to 'src/game/GossipDef.h')
-rw-r--r-- | src/game/GossipDef.h | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/game/GossipDef.h b/src/game/GossipDef.h index b70348f1715..88c15f334a1 100644 --- a/src/game/GossipDef.h +++ b/src/game/GossipDef.h @@ -17,14 +17,19 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + #ifndef TRINITYCORE_GOSSIP_H #define TRINITYCORE_GOSSIP_H + #include "Common.h" #include "QuestDef.h" #include "NPCHandler.h" + class WorldSession; + #define GOSSIP_MAX_MENU_ITEMS 64 // client supported items unknown, but provided number must be enough #define DEFAULT_GOSSIP_MESSAGE 0xffffff + //POI icons. Many more exist, list not complete. enum Poi_Icon { @@ -70,6 +75,7 @@ enum Poi_Icon ICON_POI_RWHORSE = 39, // Red and White Horse ICON_POI_REDHORSE = 40 // Red Horse }; + struct GossipMenuItem { uint8 m_gIcon; @@ -80,94 +86,123 @@ struct GossipMenuItem std::string m_gBoxMessage; uint32 m_gBoxMoney; }; + typedef std::vector<GossipMenuItem> GossipMenuItemList; + struct QuestMenuItem { uint32 m_qId; uint8 m_qIcon; }; + typedef std::vector<QuestMenuItem> QuestMenuItemList; + class TRINITY_DLL_SPEC GossipMenu { public: GossipMenu(); ~GossipMenu(); + void AddMenuItem(uint8 Icon, const std::string& Message, bool Coded = false); void AddMenuItem(uint8 Icon, const std::string& Message, uint32 dtSender, uint32 dtAction, const std::string& BoxMessage, uint32 BoxMoney, bool Coded = false); + // for using from scripts, don't must be inlined void AddMenuItem(uint8 Icon, char const* Message, bool Coded = false); void AddMenuItem(uint8 Icon, char const* Message, uint32 dtSender, uint32 dtAction, char const* BoxMessage, uint32 BoxMoney, bool Coded = false); + unsigned int MenuItemCount() const { return m_gItems.size(); } + bool Empty() const { return m_gItems.empty(); } + GossipMenuItem const& GetItem( unsigned int Id ) { return m_gItems[ Id ]; } + uint32 MenuItemSender( unsigned int ItemId ); uint32 MenuItemAction( unsigned int ItemId ); bool MenuItemCoded( unsigned int ItemId ); + void ClearMenu(); + protected: GossipMenuItemList m_gItems; }; + class QuestMenu { public: QuestMenu(); ~QuestMenu(); + void AddMenuItem( uint32 QuestId, uint8 Icon); void ClearMenu(); + uint8 MenuItemCount() const { return m_qItems.size(); } + bool Empty() const { return m_qItems.empty(); } + bool HasItem( uint32 questid ); + QuestMenuItem const& GetItem( uint16 Id ) { return m_qItems[ Id ]; } + protected: QuestMenuItemList m_qItems; }; + class TRINITY_DLL_SPEC PlayerMenu { private: GossipMenu mGossipMenu; QuestMenu mQuestMenu; WorldSession* pSession; + public: PlayerMenu( WorldSession *Session ); ~PlayerMenu(); + GossipMenu& GetGossipMenu() { return mGossipMenu; } QuestMenu& GetQuestMenu() { return mQuestMenu; } + bool Empty() const { return mGossipMenu.Empty() && mQuestMenu.Empty(); } + void ClearMenus(); uint32 GossipOptionSender( unsigned int Selection ); uint32 GossipOptionAction( unsigned int Selection ); bool GossipOptionCoded( unsigned int Selection ); + void SendGossipMenu( uint32 TitleTextId, uint64 npcGUID ); void CloseGossip(); void SendPointOfInterest( float X, float Y, uint32 Icon, uint32 Flags, uint32 Data, const char * locName ); void SendPointOfInterest( uint32 poi_id ); void SendTalking( uint32 textID ); void SendTalking( char const * title, char const * text ); + /*********************************************************/ /*** QUEST SYSTEM ***/ /*********************************************************/ void SendQuestGiverStatus( uint8 questStatus, uint64 npcGUID ); + void SendQuestGiverQuestList( QEmote eEmote, const std::string& Title, uint64 npcGUID ); + void SendQuestQueryResponse ( Quest const *pQuest ); void SendQuestGiverQuestDetails( Quest const *pQuest, uint64 npcGUID, bool ActivateAccept); + void SendQuestGiverOfferReward( Quest const* pQuest, uint64 npcGUID, bool EnableNext ); void SendQuestGiverRequestItems( Quest const *pQuest, uint64 npcGUID, bool Completable, bool CloseOnCancel ); }; |