summaryrefslogtreecommitdiff
path: root/src/resources
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2011-02-12 17:02:17 +0200
committerAndrei Karas <akaras@inbox.ru>2011-02-12 17:02:17 +0200
commit992c2920f7e1940aa293e27cf4ea7ec23668a673 (patch)
tree4328076c6585a015433cb8bb763eab687da675bc /src/resources
parent428770c113abf002e5cc0b79ae872db1f26cf283 (diff)
downloadmv-992c2920f7e1940aa293e27cf4ea7ec23668a673.tar.gz
mv-992c2920f7e1940aa293e27cf4ea7ec23668a673.tar.bz2
mv-992c2920f7e1940aa293e27cf4ea7ec23668a673.tar.xz
mv-992c2920f7e1940aa293e27cf4ea7ec23668a673.zip
Add items attribute what allow hide other sprites only by id.
Diffstat (limited to 'src/resources')
-rw-r--r--src/resources/itemdb.cpp3
-rw-r--r--src/resources/iteminfo.cpp13
-rw-r--r--src/resources/iteminfo.h7
3 files changed, 23 insertions, 0 deletions
diff --git a/src/resources/itemdb.cpp b/src/resources/itemdb.cpp
index 075104516..97a6ba1f4 100644
--- a/src/resources/itemdb.cpp
+++ b/src/resources/itemdb.cpp
@@ -205,6 +205,8 @@ void ItemDB::load()
std::string drawBefore = XML::getProperty(node, "drawBefore", "");
std::string drawAfter = XML::getProperty(node, "drawAfter", "");
std::string removeSprite = XML::getProperty(node, "removeSprite", "");
+ std::string removeSpriteIds = XML::getProperty(node, "removeSpriteIds", "");
+ std::set<int> rSprites = splitToIntSet(removeSpriteIds, ',');
std::string tags[3];
tags[0] = XML::getProperty(node, "tag",
@@ -265,6 +267,7 @@ void ItemDB::load()
itemInfo->setDrawAfter(parseSpriteName(drawAfter));
itemInfo->setDrawPriority(drawPriority);
itemInfo->setRemoveSprite(parseSpriteName(removeSprite));
+ itemInfo->setRemoveSpriteIds(rSprites);
std::string effect;
for (int i = 0; i < int(sizeof(fields) / sizeof(fields[0])); ++i)
diff --git a/src/resources/iteminfo.cpp b/src/resources/iteminfo.cpp
index 300c6bd26..f65e0396a 100644
--- a/src/resources/iteminfo.cpp
+++ b/src/resources/iteminfo.cpp
@@ -24,6 +24,8 @@
#include "resources/itemdb.h"
#include "configuration.h"
+#include <set>
+
const std::string &ItemInfo::getSprite(Gender gender) const
{
if (mView)
@@ -64,3 +66,14 @@ const std::string &ItemInfo::getSound(EquipmentSoundEvent event) const
return i == mSounds.end() ? empty : i->second[rand() % i->second.size()];
}
+
+bool ItemInfo::isRemoveSpriteId(int id) const
+{
+ if (!mRemoveSpriteIds.size()
+ || mRemoveSpriteIds.find(id) != mRemoveSpriteIds.end())
+ {
+ return true;
+ }
+
+ return false;
+} \ No newline at end of file
diff --git a/src/resources/iteminfo.h b/src/resources/iteminfo.h
index 8dbef87b7..ba7866518 100644
--- a/src/resources/iteminfo.h
+++ b/src/resources/iteminfo.h
@@ -29,6 +29,7 @@
#include <map>
#include <string>
#include <vector>
+#include <set>
enum EquipmentSoundEvent
{
@@ -220,6 +221,11 @@ class ItemInfo
void addTag(int tag)
{ mTags[tag] = 1; }
+ void setRemoveSpriteIds(std::set<int> ids)
+ { mRemoveSpriteIds = ids; }
+
+ bool isRemoveSpriteId(int id) const;
+
protected:
SpriteDisplay mDisplay; /**< Display info (like icon) */
std::string mName;
@@ -234,6 +240,7 @@ class ItemInfo
int mDrawAfter;
int mDrawPriority;
int mRemoveSprite;
+ std::set<int> mRemoveSpriteIds;
// Equipment related members.
/** Attack type, in case of weapon.