summaryrefslogtreecommitdiff
path: root/src/resources
diff options
context:
space:
mode:
Diffstat (limited to 'src/resources')
-rw-r--r--src/resources/beinginfo.cpp5
-rw-r--r--src/resources/beinginfo.h4
-rw-r--r--src/resources/db/npcdb.cpp7
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);