changeset 17644:87028d4260be draft

(svn r22416) -Fix: When action14 specified different values for the palette, the values were OR-ed. Use the last set value instead.
author frosch <frosch@openttd.org>
date Tue, 03 May 2011 20:19:57 +0000
parents f9a8beb3c108
children a758139e348a
files src/newgrf.cpp
diffstat 1 files changed, 8 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/newgrf.cpp
+++ b/src/newgrf.cpp
@@ -6527,15 +6527,20 @@
 		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;
 }