diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/Makefile.am | 1 | ||||
-rw-r--r-- | src/resources/beinginfo.cpp | 5 | ||||
-rw-r--r-- | src/resources/beinginfo.h | 4 | ||||
-rw-r--r-- | src/resources/db/npcdb.cpp | 7 |
5 files changed, 18 insertions, 0 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 92bf0a7e1..062a2a5e7 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -596,6 +596,7 @@ SET(SRCS resources/beingcommon.h resources/beinginfo.cpp resources/beinginfo.h + resources/beingmenuitem.h resources/chatobject.h resources/db/chardb.cpp resources/db/chardb.h diff --git a/src/Makefile.am b/src/Makefile.am index e4c94eae2..c39c7938a 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -726,6 +726,7 @@ manaplus_SOURCES += gui/widgets/avatarlistbox.cpp \ resources/beingcommon.h \ resources/beinginfo.cpp \ resources/beinginfo.h \ + resources/beingmenuitem.h \ resources/chatobject.h \ resources/db/chardb.cpp \ resources/db/chardb.h \ diff --git a/src/resources/beinginfo.cpp b/src/resources/beinginfo.cpp index 5f1704b88..8b9d72376 100644 --- a/src/resources/beinginfo.cpp +++ b/src/resources/beinginfo.cpp @@ -214,3 +214,8 @@ std::string BeingInfo::getColor(const int idx) const return std::string(); return it->second.color; } + +void BeingInfo::addMenu(const std::string &name, const std::string &command) +{ + mMenu.push_back(BeingMenuItem(name, command)); +} diff --git a/src/resources/beinginfo.h b/src/resources/beinginfo.h index 76955d2dd..aefd7a5ca 100644 --- a/src/resources/beinginfo.h +++ b/src/resources/beinginfo.h @@ -27,6 +27,7 @@ #include "being/targetcursorsize.h" +#include "resources/beingmenuitem.h" #include "resources/soundinfo.h" #include "resources/spritedisplay.h" @@ -315,6 +316,8 @@ class BeingInfo final std::string getColor(const int idx) const A_WARN_UNUSED; + void addMenu(const std::string &name, const std::string &command); + static void init(); static void clear(); @@ -326,6 +329,7 @@ class BeingInfo final Cursor::Cursor mHoverCursor; ItemSoundEvents mSounds; Attacks mAttacks; + std::vector<BeingMenuItem> mMenu; unsigned char mBlockWalkMask; BlockType::BlockType mBlockType; const std::map <int, ColorDB::ItemColor> *mColors; diff --git a/src/resources/db/npcdb.cpp b/src/resources/db/npcdb.cpp index 2c840ace2..542724e27 100644 --- a/src/resources/db/npcdb.cpp +++ b/src/resources/db/npcdb.cpp @@ -127,6 +127,13 @@ void NPCDB::loadXmlFile(const std::string &fileName) display.particles.push_back(reinterpret_cast<const char*>( spriteNode->xmlChildrenNode->content)); } + else if (xmlNameEqual(spriteNode, "menu")) + { + std::string name = XML::getProperty(spriteNode, "name", ""); + std::string command = XML::getProperty(spriteNode, + "command", ""); + currentInfo->addMenu(name, command); + } } currentInfo->setDisplay(display); |