summaryrefslogtreecommitdiff
path: root/src/newgrf.cpp
diff options
context:
space:
mode:
authormichi_cc <michi_cc@openttd.org>2011-10-04 21:35:52 +0000
committermichi_cc <michi_cc@openttd.org>2011-10-04 21:35:52 +0000
commit71bd681d87065d093aa11195d3949cf7b7be4a07 (patch)
tree026cc10806c15b00c2948378b9538594db039224 /src/newgrf.cpp
parentc575b5bbd7c8a225ff5a2b1120c58edfc96f078d (diff)
downloadopenttd-71bd681d87065d093aa11195d3949cf7b7be4a07.tar.xz
(svn r23001) -Feature: [NewGRF] Automatically switch to a 32 bpp blitter on NewGRF indication.
Diffstat (limited to 'src/newgrf.cpp')
-rw-r--r--src/newgrf.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/newgrf.cpp b/src/newgrf.cpp
index 3266a2c25..d71479585 100644
--- a/src/newgrf.cpp
+++ b/src/newgrf.cpp
@@ -6993,6 +6993,28 @@ static bool ChangeGRFPalette(size_t len, ByteReader *buf)
return true;
}
+/** Callback function for 'INFO'->'BLTR' to set the blitter info. */
+static bool ChangeGRFBlitter(size_t len, ByteReader *buf)
+{
+ if (len != 1) {
+ grfmsg(2, "StaticGRFInfo: expected only 1 byte for 'INFO'->'BLTR' but got " PRINTF_SIZE ", ignoring this field", len);
+ buf->Skip(len);
+ } else {
+ char data = buf->ReadByte();
+ GRFPalette pal = GRFP_BLT_UNSET;
+ switch (data) {
+ case '8': pal = GRFP_BLT_UNSET; break;
+ case '3': pal = GRFP_BLT_32BPP; break;
+ default:
+ grfmsg(2, "StaticGRFInfo: unexpected value '%02x' for 'INFO'->'BLTR', ignoring this field", data);
+ return true;
+ }
+ _cur.grfconfig->palette &= ~GRFP_BLT_MASK;
+ _cur.grfconfig->palette |= pal;
+ }
+ return true;
+}
+
/** Callback function for 'INFO'->'VRSN' to the version of the NewGRF. */
static bool ChangeGRFVersion(size_t len, ByteReader *buf)
{
@@ -7282,6 +7304,7 @@ AllowedSubtags _tags_info[] = {
AllowedSubtags('DESC', ChangeGRFDescription),
AllowedSubtags('NPAR', ChangeGRFNumUsedParams),
AllowedSubtags('PALS', ChangeGRFPalette),
+ AllowedSubtags('BLTR', ChangeGRFBlitter),
AllowedSubtags('VRSN', ChangeGRFVersion),
AllowedSubtags('MINV', ChangeGRFMinVersion),
AllowedSubtags('PARA', HandleParameterInfo),