diff options
author | Johanna Ploog <j-p-e-g@users.sourceforge.net> | 2011-03-15 18:48:50 +0100 |
---|---|---|
committer | Johanna Ploog <j-p-e-g@users.sourceforge.net> | 2011-03-15 19:07:21 +0100 |
commit | 7807426cf02d3ee206733cdbfb8a01620d7e7bb9 (patch) | |
tree | a9f7f791fdc7cef436d9bd95c9b43fe50b5fa363 /crawl-ref/source/rltiles/tool | |
parent | a507a18cc0c72aabdfd19c06d6f922a66bd85bc8 (diff) | |
download | crawl-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.cc | 30 | ||||
-rw-r--r-- | crawl-ref/source/rltiles/tool/tile_list_processor.h | 3 |
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; |