summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/rltiles/tool
diff options
context:
space:
mode:
authorJohanna Ploog <j-p-e-g@users.sourceforge.net>2011-03-15 18:48:50 +0100
committerJohanna Ploog <j-p-e-g@users.sourceforge.net>2011-03-15 19:07:21 +0100
commit7807426cf02d3ee206733cdbfb8a01620d7e7bb9 (patch)
treea9f7f791fdc7cef436d9bd95c9b43fe50b5fa363 /crawl-ref/source/rltiles/tool
parenta507a18cc0c72aabdfd19c06d6f922a66bd85bc8 (diff)
downloadcrawl-ref-7807426cf02d3ee206733cdbfb8a01620d7e7bb9.tar.gz
crawl-ref-7807426cf02d3ee206733cdbfb8a01620d7e7bb9.zip
New tiles definition param %back_sdir for background tile directory.
Works the same as %sdir except it only applies to tile combinations' background tile like the blood puddles beneath corpse tiles.
Diffstat (limited to 'crawl-ref/source/rltiles/tool')
-rw-r--r--crawl-ref/source/rltiles/tool/tile_list_processor.cc30
-rw-r--r--crawl-ref/source/rltiles/tool/tile_list_processor.h3
2 files changed, 24 insertions, 9 deletions
diff --git a/crawl-ref/source/rltiles/tool/tile_list_processor.cc b/crawl-ref/source/rltiles/tool/tile_list_processor.cc
index 0763440523..35ab7bb43e 100644
--- a/crawl-ref/source/rltiles/tool/tile_list_processor.cc
+++ b/crawl-ref/source/rltiles/tool/tile_list_processor.cc
@@ -32,7 +32,8 @@ tile_list_processor::~tile_list_processor()
m_back.resize(0);
}
-bool tile_list_processor::load_image(tile &img, const char *filename)
+bool tile_list_processor::load_image(tile &img, const char *filename,
+ bool background)
{
assert(filename);
@@ -46,15 +47,23 @@ bool tile_list_processor::load_image(tile &img, const char *filename)
""
};
- if (m_sdir != "")
+ if (m_sdir != "" || background && m_back_sdir != "")
{
+ std::vector<const char *> dirs;
+ if (m_sdir != "")
+ dirs.push_back(m_sdir.c_str());
+ if (background && m_back_sdir != "")
+ dirs.push_back(m_back_sdir.c_str());
for (unsigned int e = 0; e < num_ext; e++)
{
- sprintf(temp, "%s/%s%s", m_sdir.c_str(), filename, ext[e]);
- if (img.load(temp))
+ for (unsigned int d = 0; d < dirs.size(); d++)
{
- m_depends.push_back(temp);
- return (true);
+ sprintf(temp, "%s/%s%s", dirs[d], filename, ext[e]);
+ if (img.load(temp))
+ {
+ m_depends.push_back(temp);
+ return (true);
+ }
}
}
}
@@ -300,7 +309,7 @@ bool tile_list_processor::process_line(char *read_line, const char *list_file,
for (unsigned int i = 1; i < m_args.size(); i++)
{
tile *img = new tile();
- if (!load_image(*img, m_args[i]))
+ if (!load_image(*img, m_args[i], true))
{
fprintf(stderr, "Error(%s:%d): couldn't load image "
"'%s'.\n", list_file, line, m_args[i]);
@@ -474,6 +483,11 @@ bool tile_list_processor::process_line(char *read_line, const char *list_file,
CHECK_ARG(1);
m_sdir = m_args[1];
}
+ else if (strcmp(arg, "back_sdir") == 0)
+ {
+ CHECK_ARG(1);
+ m_back_sdir = m_args[1];
+ }
else if (strcmp(arg, "weight") == 0)
{
CHECK_ARG(1);
@@ -674,7 +688,7 @@ bool tile_list_processor::process_line(char *read_line, const char *list_file,
if (m_back.size() > 0)
{
// compose
- if (!load_image(m_compose, arg))
+ if (!load_image(m_compose, arg, true))
{
fprintf(stderr, "Error (%s:%d): couldn't load image "
"'%s'.\n", list_file, line, arg);
diff --git a/crawl-ref/source/rltiles/tool/tile_list_processor.h b/crawl-ref/source/rltiles/tool/tile_list_processor.h
index d4e334ef3b..337c0a637a 100644
--- a/crawl-ref/source/rltiles/tool/tile_list_processor.h
+++ b/crawl-ref/source/rltiles/tool/tile_list_processor.h
@@ -15,7 +15,7 @@ public:
bool process_list(const char *list_file);
bool write_data();
protected:
- bool load_image(tile &img, const char *filename);
+ bool load_image(tile &img, const char *filename, bool background = false);
bool process_line(char *read_line, const char *list_file, int line);
void add_image(tile &img, const char *enumname);
void recolour(tile &img);
@@ -39,6 +39,7 @@ protected:
std::vector<tile*> m_back;
std::string m_parts_ctg;
std::string m_sdir;
+ std::string m_back_sdir;
std::string m_prefix;
std::string m_start_value;
std::vector<std::string> m_include;