diff options
author | Pekka Lampila <pekka.lampila@iki.fi> | 2013-12-13 19:58:35 +0200 |
---|---|---|
committer | Pekka Lampila <pekka.lampila@iki.fi> | 2014-02-17 04:44:29 +0200 |
commit | 6d263bff17afaba6edb675d117ab4fcbfbec40af (patch) | |
tree | 2ca4cf5cd625310b02865321f3ed8ab443757f6e /crawl-ref/source/colour.cc | |
parent | dfe176c6f7673884184b20c91bdd23e45a609688 (diff) | |
download | crawl-ref-6d263bff17afaba6edb675d117ab4fcbfbec40af.tar.gz crawl-ref-6d263bff17afaba6edb675d117ab4fcbfbec40af.zip |
Allow minimap colour options to be set with hex codes and used in WebTiles.
This changes the default WebTiles minimap colours to match local tiles.
To get the previous default values use:
tile_floor_col = #a9a9a9
tile_door_col = #a52a2a
tile_item_col = #008000
tile_friendly_col = #ee9090
tile_peaceful_col = #ee9090
tile_plant_col = #006400
tile_upstairs_col = #0000ff
tile_downstairs_col = #ff00ff
tile_excl_centre_col = #00008b
tile_excluded_col = #008b8b
Diffstat (limited to 'crawl-ref/source/colour.cc')
-rw-r--r-- | crawl-ref/source/colour.cc | 78 |
1 files changed, 53 insertions, 25 deletions
diff --git a/crawl-ref/source/colour.cc b/crawl-ref/source/colour.cc index c3cae9a7d8..b6b1b56f19 100644 --- a/crawl-ref/source/colour.cc +++ b/crawl-ref/source/colour.cc @@ -673,37 +673,65 @@ int element_colour(int element, bool no_random, const coord_def& loc) } #ifdef USE_TILE -static string tile_cols[24] = -{ - "black", "darkgrey", "grey", "lightgrey", "white", - "blue", "lightblue", "darkblue", - "green", "lightgreen", "darkgreen", - "cyan", "lightcyan", "darkcyan", - "red", "lightred", "darkred", - "magenta", "lightmagenta", "darkmagenta", - "yellow", "lightyellow", "darkyellow", "brown" -}; +static int _hex(char c) +{ + if (c >= '0' && c <= '9') + return c - '0'; + if (c >= 'a' && c <= 'f') + return 10 + c - 'a'; + if (c >= 'A' && c <= 'F') + return 10 + c - 'A'; + return 0; +} -unsigned int str_to_tile_colour(string colour) +VColour str_to_tile_colour(string colour) { if (colour.empty()) - return 0; - - lowercase(colour); - - if (colour == "darkgray") - colour = "darkgrey"; - else if (colour == "gray") - colour = "grey"; - else if (colour == "lightgray") - colour = "lightgrey"; + return VColour(0, 0, 0); - for (unsigned int i = 0; i < 24; i++) + if (colour[0] == '#' && colour.length() == 7) { - if (tile_cols[i] == colour) - return i; + return VColour((_hex(colour[1]) << 4) + _hex(colour[2]), + (_hex(colour[3]) << 4) + _hex(colour[4]), + (_hex(colour[5]) << 4) + _hex(colour[6])); + } + else + { + lowercase(colour); + + if (colour == "darkgray") + colour = "darkgrey"; + else if (colour == "gray") + colour = "grey"; + else if (colour == "lightgray") + colour = "lightgrey"; + + if (colour == "black") return VColour( 0, 0, 0); + else if (colour == "darkgrey") return VColour(128, 128, 128); + else if (colour == "grey") return VColour(160, 160, 160); + else if (colour == "lightgrey") return VColour(192, 192, 192); + else if (colour == "white") return VColour(255, 255, 255); + else if (colour == "blue") return VColour( 0, 64, 255); + else if (colour == "lightblue") return VColour(128, 128, 255); + else if (colour == "darkblue") return VColour( 0, 32, 128); + else if (colour == "green") return VColour( 0, 255, 0); + else if (colour == "lightgreen") return VColour(128, 255, 128); + else if (colour == "darkgreen") return VColour( 0, 128, 0); + else if (colour == "cyan") return VColour( 0, 255, 255); + else if (colour == "lightcyan") return VColour( 64, 255, 255); + else if (colour == "darkcyan") return VColour( 0, 128, 128); + else if (colour == "red") return VColour(255, 0, 0); + else if (colour == "lightred") return VColour(255, 128, 128); + else if (colour == "darkred") return VColour(128, 0, 0); + else if (colour == "magenta") return VColour(192, 0, 255); + else if (colour == "lightmagenta") return VColour(255, 128, 255); + else if (colour == "darkmagenta") return VColour( 96, 0, 128); + else if (colour == "yellow") return VColour(255, 255, 0); + else if (colour == "lightyellow") return VColour(255, 255, 64); + else if (colour == "darkyellow") return VColour(128, 128, 0); + else if (colour == "brown") return VColour(165, 91, 0); + else return VColour(0, 0, 0); } - return 0; } #endif |