summaryrefslogtreecommitdiff
path: root/src/resources
diff options
context:
space:
mode:
Diffstat (limited to 'src/resources')
-rw-r--r--src/resources/itemdb.cpp4
-rw-r--r--src/resources/iteminfo.cpp28
-rw-r--r--src/resources/iteminfo.h22
-rw-r--r--src/resources/resourcemanager.cpp6
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;
}