diff options
Diffstat (limited to 'src/resources')
-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 |
3 files changed, 16 insertions, 0 deletions
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); |