changeset 10781:8c81e4deb307 draft

(svn r15114) -Codechange: Add support for 8 byte action7/9 data, used as a mask for GRFID checks.
author peter1138 <peter1138@openttd.org>
date Fri, 16 Jan 2009 19:53:52 +0000
parents 2202e03eb494
children 13d0f21ff44d
files src/newgrf.cpp src/newgrf_config.cpp src/newgrf_config.h
diffstat 3 files changed, 5 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/newgrf.cpp
+++ b/src/newgrf.cpp
@@ -3963,6 +3963,7 @@
 	}
 
 	switch (paramsize) {
+		case 8: cond_val = grf_load_dword(&buf); mask = grf_load_dword(&buf); break;
 		case 4: cond_val = grf_load_dword(&buf); mask = 0xFFFFFFFF; break;
 		case 2: cond_val = grf_load_word(&buf);  mask = 0x0000FFFF; break;
 		case 1: cond_val = grf_load_byte(&buf);  mask = 0x000000FF; break;
@@ -3988,7 +3989,7 @@
 	if (param == 0x88 && condtype != 0x0B && condtype != 0x0C) {
 		/* GRF ID checks */
 
-		GRFConfig *c = GetGRFConfig(cond_val);
+		GRFConfig *c = GetGRFConfig(cond_val, mask);
 
 		if (c != NULL && HasBit(c->flags, GCF_STATIC) && !HasBit(_cur_grfconfig->flags, GCF_STATIC) && c->status != GCS_DISABLED && _networking) {
 			DisableStaticNewGRFInfluencingNonStaticNewGRFs(c);
--- a/src/newgrf_config.cpp
+++ b/src/newgrf_config.cpp
@@ -456,12 +456,12 @@
 
 
 /* Retrieve a NewGRF from the current config by its grfid */
-GRFConfig *GetGRFConfig(uint32 grfid)
+GRFConfig *GetGRFConfig(uint32 grfid, uint32 mask)
 {
 	GRFConfig *c;
 
 	for (c = _grfconfig; c != NULL; c = c->next) {
-		if (c->grfid == grfid) return c;
+		if ((c->grfid & mask) == (grfid & mask)) return c;
 	}
 
 	return NULL;
--- a/src/newgrf_config.h
+++ b/src/newgrf_config.h
@@ -82,7 +82,7 @@
 
 void ScanNewGRFFiles();
 const GRFConfig *FindGRFConfig(uint32 grfid, const uint8 *md5sum = NULL);
-GRFConfig *GetGRFConfig(uint32 grfid);
+GRFConfig *GetGRFConfig(uint32 grfid, uint32 mask = 0xFFFFFFFF);
 GRFConfig **CopyGRFConfigList(GRFConfig **dst, const GRFConfig *src, bool init_only);
 void AppendStaticGRFConfigs(GRFConfig **dst);
 void AppendToGRFConfigList(GRFConfig **dst, GRFConfig *el);