diff options
author | Enne Walker <ennewalker@users.sourceforge.net> | 2009-12-23 23:32:52 -0500 |
---|---|---|
committer | Enne Walker <ennewalker@users.sourceforge.net> | 2009-12-24 00:15:48 -0500 |
commit | bcc249f77c1459b75b7a4f96b018a15569e675b3 (patch) | |
tree | 72ad82e9ff51f45396c95933e3583437ab5489fb /crawl-ref/source/rltiles/tool/tile.cc | |
parent | 5b9916a319a570598c8cd54e916eb10dab0eb916 (diff) | |
download | crawl-ref-bcc249f77c1459b75b7a4f96b018a15569e675b3.tar.gz crawl-ref-bcc249f77c1459b75b7a4f96b018a15569e675b3.zip |
Basic support for tile recolouring.
Added %variation, %repeat, %desat, %lum, %hue, %pal, %resetcol commands
to rltiles. Also, multiple enum synonyms can now be specified.
Documentation on all rltiles commands is forthcoming. Sorry.
Added coloured variations for a number of floor and wall tiles, removing
duplicate source art where it made sense. The variations probably need
some adjusting to look less like fruit salad.
COLOUR in a vault specification will now automatically try to pick
coloured variations of basic floor and rock wall tiles by default. It
will also pick coloured variations of any tiles specified by
FTILE/RTILE/TILE.
I'll leave it as an exercise for due to generalize this to features and
monsters. tile_dngn_coloured (and corresponding functions for other tile
sheets) can be used to look up coloured variations for a given tile
index.
Diffstat (limited to 'crawl-ref/source/rltiles/tool/tile.cc')
-rw-r--r-- | crawl-ref/source/rltiles/tool/tile.cc | 43 |
1 files changed, 36 insertions, 7 deletions
diff --git a/crawl-ref/source/rltiles/tool/tile.cc b/crawl-ref/source/rltiles/tool/tile.cc index 2febfd73b2..65d82c9b18 100644 --- a/crawl-ref/source/rltiles/tool/tile.cc +++ b/crawl-ref/source/rltiles/tool/tile.cc @@ -17,9 +17,12 @@ tile::tile(const tile &img, const char *enumnam, const char *parts) : copy(img); if (enumnam) - m_enumname = enumnam; + m_enumname.push_back(enumnam); if (parts) m_parts_ctg = parts; + + for (int i = 0; i < MAX_COLOUR; ++i) + m_variations[i] = -1; } tile::~tile() @@ -39,27 +42,37 @@ bool tile::valid() const return m_pixels && m_width && m_height; } -const std::string &tile::filename() +const std::string &tile::filename() const { return m_filename; } -const std::string &tile::enumname() +int tile::enumcount() const +{ + return m_enumname.size(); +} + +const std::string &tile::enumname(int idx) const { - return m_enumname; + return m_enumname[idx]; } -const std::string &tile::parts_ctg() +void tile::add_enumname(const std::string &name) +{ + m_enumname.push_back(name); +} + +const std::string &tile::parts_ctg() const { return m_parts_ctg; } -int tile::width() +int tile::width() const { return m_width; } -int tile::height() +int tile::height() const { return m_height; } @@ -484,3 +497,19 @@ void tile::get_bounding_box(int &x0, int &y0, int &w, int &h) w = x1 - x0 + 1; h = y1 - y0 + 1; } + +void tile::add_variation(int colour, int idx) +{ + assert(colour >= 0); + assert(colour < MAX_COLOUR); + m_variations[colour] = idx; +} + +bool tile::get_variation(int colour, int &idx) +{ + if (m_variations[colour] == -1) + return (false); + + idx = m_variations[colour]; + return (true); +} |