summaryrefslogtreecommitdiff
path: root/src/resources
diff options
context:
space:
mode:
Diffstat (limited to 'src/resources')
-rw-r--r--src/resources/iteminfo.cpp44
-rw-r--r--src/resources/iteminfo.h16
-rw-r--r--src/resources/itemmanager.cpp12
3 files changed, 61 insertions, 11 deletions
diff --git a/src/resources/iteminfo.cpp b/src/resources/iteminfo.cpp
new file mode 100644
index 00000000..5d39d832
--- /dev/null
+++ b/src/resources/iteminfo.cpp
@@ -0,0 +1,44 @@
+/*
+ * The Mana World
+ * Copyright 2004 The Mana World Development Team
+ *
+ * This file is part of The Mana World.
+ *
+ * The Mana World is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * any later version.
+ *
+ * The Mana World is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with The Mana World; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include "iteminfo.h"
+
+#include "resourcemanager.h"
+
+Image*
+ItemInfo::getImage() {
+ if (mImage == NULL && mImageName != "") {
+ mImage = ResourceManager::getInstance()->getImage(mImageName);
+ }
+ return mImage;
+}
+
+void
+ItemInfo::setImage(const std::string &image) {
+ mImageName = "graphics/items/" + image;
+}
+
+ItemInfo::~ItemInfo() {
+ if (mImage != NULL){
+ mImage->decRef();
+ }
+}
diff --git a/src/resources/iteminfo.h b/src/resources/iteminfo.h
index 54e7907b..afa2e857 100644
--- a/src/resources/iteminfo.h
+++ b/src/resources/iteminfo.h
@@ -26,6 +26,8 @@
#include <string>
+#include "image.h"
+
/**
* Defines a class for storing item infos.
*/
@@ -38,7 +40,8 @@ class ItemInfo
* Constructor.
*/
ItemInfo():
- mImage(0),
+ mImage(NULL),
+ mImageName(""),
mArt(0),
mType(0),
mWeight(0),
@@ -59,10 +62,10 @@ class ItemInfo
getName() { return mName; }
void
- setImage(short image) { mImage = image; }
+ setImage(const std::string &image);
- short
- getImage() { return mImage; }
+ Image*
+ getImage();
void
setDescription(const std::string &description)
@@ -101,9 +104,10 @@ class ItemInfo
/**
* Destructor.
*/
- ~ItemInfo() {}
+ ~ItemInfo();
- short mImage;
+ Image* mImage;
+ std::string mImageName;
short mArt;
std::string mName;
std::string mDescription;
diff --git a/src/resources/itemmanager.cpp b/src/resources/itemmanager.cpp
index 63c0b036..a497b3c8 100644
--- a/src/resources/itemmanager.cpp
+++ b/src/resources/itemmanager.cpp
@@ -68,8 +68,8 @@ ItemManager::ItemManager()
for (node = node->xmlChildrenNode; node != NULL; node = node->next)
{
- int id = 0, image = 0, art = 0, type = 0, weight = 0, slot = 0;
- std::string name = "", description = "", effect = "";
+ int id = 0, art = 0, type = 0, weight = 0, slot = 0;
+ std::string name = "", description = "", effect = "", image = "";
if (!xmlStrEqual(node->name, BAD_CAST "item")) {
continue;
@@ -77,7 +77,7 @@ ItemManager::ItemManager()
xmlChar *prop = NULL;
READ_PROP(node, prop, "id", id, atoi);
- READ_PROP(node, prop, "image", image, atoi);
+ READ_PROP(node, prop, "image", image, );
READ_PROP(node, prop, "art", art, atoi);
READ_PROP(node, prop, "name", name, );
READ_PROP(node, prop, "description", description, );
@@ -86,6 +86,7 @@ ItemManager::ItemManager()
READ_PROP(node, prop, "weight", weight, atoi);
READ_PROP(node, prop, "slot", slot, atoi);
+
if (id && name != "")
{
ItemInfo *itemInfo = new ItemInfo();
@@ -100,6 +101,7 @@ ItemManager::ItemManager()
mItemInfos[id] = itemInfo;
}
+
if (id == 0)
{
logger->log("Item Manager: An item has no ID in items.xml!");
@@ -109,7 +111,7 @@ ItemManager::ItemManager()
logger->log("Item Manager: An item has no name in items.xml!");
}
- if (image == 0)
+ if (image == "")
{
logger->log("Item Manager: Missing image parameter for item: %i. %s",
id, name.c_str());
@@ -141,7 +143,7 @@ ItemManager::ItemManager()
}
if (slot == 0)
{
- logger->log("Item Manager: Missing image parameter for item: %i. %s",
+ logger->log("Item Manager: Missing slot parameter for item: %i. %s",
id, name.c_str());
}