summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/newgrf.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/newgrf.cpp b/src/newgrf.cpp
index 85d9a7ef8..bf99651c1 100644
--- a/src/newgrf.cpp
+++ b/src/newgrf.cpp
@@ -6527,15 +6527,20 @@ static bool ChangeGRFPalette(size_t len, ByteReader *buf)
buf->Skip(len);
} else {
char data = buf->ReadByte();
+ GRFPalette pal = GRFP_GRF_UNSET;
switch (data) {
case '*':
- case 'A': _cur_grfconfig->palette |= GRFP_GRF_ANY; break;
- case 'W': _cur_grfconfig->palette |= GRFP_GRF_WINDOWS; break;
- case 'D': _cur_grfconfig->palette |= GRFP_GRF_DOS; break;
+ case 'A': pal = GRFP_GRF_ANY; break;
+ case 'W': pal = GRFP_GRF_WINDOWS; break;
+ case 'D': pal = GRFP_GRF_DOS; break;
default:
grfmsg(2, "StaticGRFInfo: unexpected value '%02x' for 'INFO'->'PALS', ignoring this field", data);
break;
}
+ if (pal != GRFP_GRF_UNSET) {
+ _cur_grfconfig->palette &= ~GRFP_GRF_MASK;
+ _cur_grfconfig->palette |= pal;
+ }
}
return true;
}