summaryrefslogtreecommitdiff
path: root/src/resources/spritedef.cpp
diff options
context:
space:
mode:
authorBjørn Lindeijer <bjorn@lindeijer.nl>2007-11-21 19:43:11 +0000
committerBjørn Lindeijer <bjorn@lindeijer.nl>2007-11-21 19:43:11 +0000
commit7c7909350565c3506f8b24645cac10f3197e1fc5 (patch)
tree748ce81596f924d81cb7b6fdba84fe22a054e305 /src/resources/spritedef.cpp
parent434d0bd000576b534c51f611c09eb99b3863e1c5 (diff)
downloadMana-7c7909350565c3506f8b24645cac10f3197e1fc5.tar.gz
Mana-7c7909350565c3506f8b24645cac10f3197e1fc5.tar.bz2
Mana-7c7909350565c3506f8b24645cac10f3197e1fc5.tar.xz
Mana-7c7909350565c3506f8b24645cac10f3197e1fc5.zip
Merged revisions 3705-3711,3714,3718,3721-3722,3729-3731,3735,3742 via svnmerge from
https://themanaworld.svn.sourceforge.net/svnroot/themanaworld/tmw/trunk (dynamic recoloring of sprites and related changes) ........ r3705 | gmelquio | 2007-11-03 10:58:25 +0100 (Sat, 03 Nov 2007) | 1 line Fixed double load of hair graphics. ........ r3706 | gmelquio | 2007-11-03 22:04:51 +0100 (Sat, 03 Nov 2007) | 1 line Added automatic recoloring of images. Inspired by fungos' ideas (PR #41). ........ r3707 | gmelquio | 2007-11-03 22:08:21 +0100 (Sat, 03 Nov 2007) | 1 line Experimented recoloring on scorpions. ........ r3708 | gmelquio | 2007-11-04 12:52:44 +0100 (Sun, 04 Nov 2007) | 1 line Tightened palette handling. ........ r3709 | gmelquio | 2007-11-04 12:54:31 +0100 (Sun, 04 Nov 2007) | 1 line Experimented with scorpions again. ........ r3710 | gmelquio | 2007-11-04 16:40:37 +0100 (Sun, 04 Nov 2007) | 1 line Applied recoloring to hair styles. ........ r3711 | gmelquio | 2007-11-04 17:50:37 +0100 (Sun, 04 Nov 2007) | 1 line Converted slimes to recoloring. ........ r3742 | gmelquio | 2007-11-16 14:16:00 +0100 (Fri, 16 Nov 2007) | 1 line Sped up recoloring of transparent pixels. ........
Diffstat (limited to 'src/resources/spritedef.cpp')
-rw-r--r--src/resources/spritedef.cpp25
1 files changed, 16 insertions, 9 deletions
diff --git a/src/resources/spritedef.cpp b/src/resources/spritedef.cpp
index 45a52d2e..de6f8d0b 100644
--- a/src/resources/spritedef.cpp
+++ b/src/resources/spritedef.cpp
@@ -25,14 +25,14 @@
#include "spritedef.h"
-#include "../log.h"
-
-#include "animation.h"
#include "action.h"
-#include "resourcemanager.h"
-#include "imageset.h"
+#include "animation.h"
+#include "dye.h"
#include "image.h"
+#include "imageset.h"
+#include "resourcemanager.h"
+#include "../log.h"
#include "../utils/xml.h"
Action*
@@ -53,7 +53,14 @@ SpriteDef *SpriteDef::load(std::string const &animationFile, int variant)
{
int size;
ResourceManager *resman = ResourceManager::getInstance();
- char *data = (char*) resman->loadFile(animationFile.c_str(), size);
+
+ std::string::size_type pos = animationFile.find('|');
+ std::string palettes;
+ if (pos != std::string::npos)
+ palettes = animationFile.substr(pos + 1);
+
+ char *data = (char*) resman->loadFile
+ (animationFile.substr(0, pos).c_str(), size);
if (!data) return NULL;
@@ -89,7 +96,7 @@ SpriteDef *SpriteDef::load(std::string const &animationFile, int variant)
{
if (xmlStrEqual(node->name, BAD_CAST "imageset"))
{
- def->loadImageSet(node);
+ def->loadImageSet(node, palettes);
}
else if (xmlStrEqual(node->name, BAD_CAST "action"))
{
@@ -125,13 +132,13 @@ void SpriteDef::substituteActions()
substituteAction(ACTION_DEAD, ACTION_HURT);
}
-void
-SpriteDef::loadImageSet(xmlNodePtr node)
+void SpriteDef::loadImageSet(xmlNodePtr node, std::string const &palettes)
{
int width = XML::getProperty(node, "width", 0);
int height = XML::getProperty(node, "height", 0);
std::string name = XML::getProperty(node, "name", "");
std::string imageSrc = XML::getProperty(node, "src", "");
+ Dye::instantiate(imageSrc, palettes);
ResourceManager *resman = ResourceManager::getInstance();
ImageSet *imageSet = resman->getImageSet(imageSrc, width, height);