From dbfd156eb6df4648b05661beb152735ad05fb28e Mon Sep 17 00:00:00 2001 From: frosch Date: Tue, 3 May 2011 20:19:57 +0000 Subject: [PATCH] (svn r22416) -Fix: When action14 specified different values for the palette, the values were OR-ed. Use the last set value instead. --- src/newgrf.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/newgrf.cpp b/src/newgrf.cpp index 85d9a7ef8a..bf99651c13 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; }