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/resourcemanager.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/resourcemanager.cpp')
-rw-r--r-- | src/resources/resourcemanager.cpp | 43 |
1 files changed, 35 insertions, 8 deletions
diff --git a/src/resources/resourcemanager.cpp b/src/resources/resourcemanager.cpp index e507835a..3368d05b 100644 --- a/src/resources/resourcemanager.cpp +++ b/src/resources/resourcemanager.cpp @@ -28,6 +28,7 @@ #include <physfs.h> #include <SDL_image.h> +#include "dye.h" #include "image.h" #include "music.h" #include "soundeffect.h" @@ -204,12 +205,6 @@ Resource *ResourceManager::load(std::string const &path, loader fun) return get(path, ResourceLoader::load, &l); } -Image* -ResourceManager::getImage(const std::string &idPath) -{ - return static_cast<Image*>(load(idPath, Image::load)); -} - Music* ResourceManager::getMusic(const std::string &idPath) { @@ -222,6 +217,38 @@ ResourceManager::getSoundEffect(const std::string &idPath) return static_cast<SoundEffect*>(load(idPath, SoundEffect::load)); } +struct DyedImageLoader +{ + ResourceManager *manager; + std::string path; + static Resource *load(void *v) + { + DyedImageLoader *l = static_cast< DyedImageLoader * >(v); + std::string path = l->path; + std::string::size_type p = path.find('|'); + Dye *d = NULL; + if (p != std::string::npos) + { + d = new Dye(path.substr(p + 1)); + path = path.substr(0, p); + } + int fileSize; + void *buffer = l->manager->loadFile(path, fileSize); + if (!buffer) return NULL; + Resource *res = d ? Image::load(buffer, fileSize, *d) + : Image::load(buffer, fileSize); + free(buffer); + delete d; + return res; + } +}; + +Image *ResourceManager::getImage(std::string const &idPath) +{ + DyedImageLoader l = { this, idPath }; + return static_cast<Image*>(get(idPath, DyedImageLoader::load, &l)); +} + struct ImageSetLoader { ResourceManager *manager; @@ -258,8 +285,8 @@ struct SpriteDefLoader } }; -SpriteDef* -ResourceManager::getSprite(const std::string &path, int variant) +SpriteDef *ResourceManager::getSprite + (std::string const &path, int variant) { SpriteDefLoader l = { path, variant }; std::stringstream ss; |