diff options
author | Bjørn Lindeijer <bjorn@lindeijer.nl> | 2007-11-21 19:43:11 +0000 |
---|---|---|
committer | Bjørn Lindeijer <bjorn@lindeijer.nl> | 2007-11-21 19:43:11 +0000 |
commit | 7c7909350565c3506f8b24645cac10f3197e1fc5 (patch) | |
tree | 748ce81596f924d81cb7b6fdba84fe22a054e305 /src/resources/spritedef.cpp | |
parent | 434d0bd000576b534c51f611c09eb99b3863e1c5 (diff) | |
download | mana-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.cpp | 25 |
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); |