diff options
author | Andrei Karas <akaras@inbox.ru> | 2011-02-12 17:02:17 +0200 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2011-02-12 17:02:17 +0200 |
commit | 992c2920f7e1940aa293e27cf4ea7ec23668a673 (patch) | |
tree | 4328076c6585a015433cb8bb763eab687da675bc /src/resources | |
parent | 428770c113abf002e5cc0b79ae872db1f26cf283 (diff) | |
download | manaplus-992c2920f7e1940aa293e27cf4ea7ec23668a673.tar.gz manaplus-992c2920f7e1940aa293e27cf4ea7ec23668a673.tar.bz2 manaplus-992c2920f7e1940aa293e27cf4ea7ec23668a673.tar.xz manaplus-992c2920f7e1940aa293e27cf4ea7ec23668a673.zip |
Add items attribute what allow hide other sprites only by id.
Diffstat (limited to 'src/resources')
-rw-r--r-- | src/resources/itemdb.cpp | 3 | ||||
-rw-r--r-- | src/resources/iteminfo.cpp | 13 | ||||
-rw-r--r-- | src/resources/iteminfo.h | 7 |
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. |