summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorglx <glx@openttd.org>2019-11-26 01:28:03 +0100
committerCharles Pigott <charlespigott@googlemail.com>2019-12-23 17:30:13 +0000
commit42144ecd562ee05423e16452cc999929296b138c (patch)
tree8f31fec9ef64cd4e627147b4622daa1ef4a7fd28
parentb769eb30c43ccbc4e60b8b7df024253ac55d2265 (diff)
downloadopenttd-42144ecd562ee05423e16452cc999929296b138c.tar.xz
Add: a TextColour flag to ignore colour changes from strings
-rw-r--r--src/gfx.cpp2
-rw-r--r--src/gfx_layout.h2
-rw-r--r--src/gfx_type.h1
3 files changed, 3 insertions, 2 deletions
diff --git a/src/gfx.cpp b/src/gfx.cpp
index 478acc1f2..db024c9c7 100644
--- a/src/gfx.cpp
+++ b/src/gfx.cpp
@@ -316,7 +316,7 @@ static void SetColourRemap(TextColour colour)
* would be invisible at best, but it actually makes it illegible. */
bool no_shade = (colour & TC_NO_SHADE) != 0 || colour == TC_BLACK;
bool raw_colour = (colour & TC_IS_PALETTE_COLOUR) != 0;
- colour &= ~(TC_NO_SHADE | TC_IS_PALETTE_COLOUR);
+ colour &= ~(TC_NO_SHADE | TC_IS_PALETTE_COLOUR | TC_FORCED);
_string_colourremap[1] = raw_colour ? (byte)colour : _string_colourmap[colour];
_string_colourremap[2] = no_shade ? 0 : 1;
diff --git a/src/gfx_layout.h b/src/gfx_layout.h
index c8f563591..4854be6e5 100644
--- a/src/gfx_layout.h
+++ b/src/gfx_layout.h
@@ -46,7 +46,7 @@ struct FontState {
inline void SetColour(TextColour c)
{
assert(c >= TC_BLUE && c <= TC_BLACK);
- this->cur_colour = c;
+ if ((this->cur_colour & TC_FORCED) == 0) this->cur_colour = c;
}
/**
diff --git a/src/gfx_type.h b/src/gfx_type.h
index 1dac6729b..6fca2228d 100644
--- a/src/gfx_type.h
+++ b/src/gfx_type.h
@@ -267,6 +267,7 @@ enum TextColour {
TC_IS_PALETTE_COLOUR = 0x100, ///< Colour value is already a real palette colour index, not an index of a StringColour.
TC_NO_SHADE = 0x200, ///< Do not add shading to this text colour.
+ TC_FORCED = 0x400, ///< Ignore colour changes from strings.
};
DECLARE_ENUM_AS_BIT_SET(TextColour)