diff options
Diffstat (limited to 'src/resources')
-rw-r--r-- | src/resources/itemdb.cpp | 4 | ||||
-rw-r--r-- | src/resources/iteminfo.cpp | 28 | ||||
-rw-r--r-- | src/resources/iteminfo.h | 22 | ||||
-rw-r--r-- | src/resources/resourcemanager.cpp | 6 |
4 files changed, 11 insertions, 49 deletions
diff --git a/src/resources/itemdb.cpp b/src/resources/itemdb.cpp index e8ad393b..71bd898a 100644 --- a/src/resources/itemdb.cpp +++ b/src/resources/itemdb.cpp @@ -55,7 +55,7 @@ void ItemDB::load() mUnknown = new ItemInfo(); mUnknown->setName("Unknown item"); - mUnknown->setImage(""); + mUnknown->setImageName(""); mUnknown->setSprite("error.xml", 0); mUnknown->setSprite("error.xml", 1); @@ -97,7 +97,7 @@ void ItemDB::load() if (id) { ItemInfo *itemInfo = new ItemInfo(); - itemInfo->setImage(image); + itemInfo->setImageName(image); itemInfo->setName((name == "") ? "Unnamed" : name); itemInfo->setDescription(description); itemInfo->setEffect(effect); diff --git a/src/resources/iteminfo.cpp b/src/resources/iteminfo.cpp index 82c46e3c..f1ebd0a9 100644 --- a/src/resources/iteminfo.cpp +++ b/src/resources/iteminfo.cpp @@ -23,36 +23,8 @@ #include "iteminfo.h" -#include "resourcemanager.h" -#include "image.h" #include "itemdb.h" -ItemInfo::~ItemInfo() -{ - if (mImage) - { - mImage->decRef(); - } -} - -void -ItemInfo::setImage(const std::string &image) -{ - if (mImage) - { - mImage->decRef(); - } - - ResourceManager *resman = ResourceManager::getInstance(); - mImageName = "graphics/items/" + image; - mImage = ResourceManager::getInstance()->getImage(mImageName); - - if (!mImage) - { - mImage = resman->getImage("graphics/gui/unknown-item.png"); - } -} - const std::string& ItemInfo::getSprite(int gender) const { diff --git a/src/resources/iteminfo.h b/src/resources/iteminfo.h index 2726a012..680c8d61 100644 --- a/src/resources/iteminfo.h +++ b/src/resources/iteminfo.h @@ -30,8 +30,6 @@ #include "spritedef.h" -class Image; - enum EquipmentSoundEvent { EQUIP_EVENT_STRIKE, @@ -49,7 +47,6 @@ class ItemInfo * Constructor. */ ItemInfo(): - mImage(NULL), mType(0), mWeight(0), mView(0), @@ -57,21 +54,17 @@ class ItemInfo { } - /** - * Destructor. - */ - ~ItemInfo(); - void setName(const std::string &name) { mName = name; } const std::string& getName() const { return mName; } - void setImage(const std::string &image); + void setImageName(const std::string &imageName) + { mImageName = imageName; } - Image* getImage() const - { return mImage; } + const std::string& getImageName() const + { return mImageName; } void setDescription(const std::string &description) { mDescription = description; } @@ -116,13 +109,6 @@ class ItemInfo protected: std::string mImageName; /**< The filename of the icon image. */ - - /* TODO (BL): I do not think the item info should keep a reference to - * the item icon. It would probably be better if this was kept in the - * Item class, so that the images can be lazily instantiated and also - * unloaded when no longer used. - */ - Image *mImage; /**< The loaded icon image. */ std::string mName; std::string mDescription; /**< Short description. */ std::string mEffect; /**< Description of effects. */ diff --git a/src/resources/resourcemanager.cpp b/src/resources/resourcemanager.cpp index 9c109257..ef8671a8 100644 --- a/src/resources/resourcemanager.cpp +++ b/src/resources/resourcemanager.cpp @@ -98,11 +98,15 @@ ResourceManager::~ResourceManager() void ResourceManager::cleanUp(Resource *res) { - logger->log("ResourceManager::~ResourceManager() cleaning up %d " + if (res->mRefCount > 0) + { + logger->log("ResourceManager::~ResourceManager() cleaning up %d " "reference%s to %s", res->mRefCount, (res->mRefCount == 1) ? "" : "s", res->mIdPath.c_str()); + } + delete res; } |