changeset 7831:fa9e8633d075 draft

(svn r11381) -Fix [FS#1227]: redo the fix in a less breaking way
author glx <glx@openttd.org>
date Sun, 04 Nov 2007 22:24:03 +0000
parents 8c69a1f02856
children 1f9fb5d427f9
files src/newgrf.cpp src/newgrf_config.h
diffstat 2 files changed, 4 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/newgrf.cpp
+++ b/src/newgrf.cpp
@@ -5426,7 +5426,7 @@
 		_cur_grffile = GetFileByFilename(filename);
 		if (_cur_grffile == NULL) error("File '%s' lost in cache.\n", filename);
 		if (stage == GLS_RESERVE && config->status != GCS_INITIALISED) return;
-		if (stage == GLS_ACTIVATION && config->status != GCS_INITIALISED) return;
+		if (stage == GLS_ACTIVATION && !HASBIT(config->flags, GCF_RESERVED)) return;
 	}
 
 	if (file_index > LAST_GRF_SLOT) {
@@ -5560,8 +5560,9 @@
 			if (stage == GLS_LABELSCAN) InitNewGRFFile(c, _cur_spriteid);
 			LoadNewGRFFile(c, slot++, stage);
 			if (stage == GLS_RESERVE) {
-				if (c->status == GCS_ACTIVATED) c->status = GCS_INITIALISED;
+				SETBIT(c->flags, GCF_RESERVED);
 			} else if (stage == GLS_ACTIVATION) {
+				CLRBIT(c->flags, GCF_RESERVED);
 				ClearTemporaryNewGRFData();
 				BuildCargoTranslationMap();
 				DEBUG(sprite, 2, "LoadNewGRF: Currently %i sprites are loaded", _cur_spriteid);
--- a/src/newgrf_config.h
+++ b/src/newgrf_config.h
@@ -15,6 +15,7 @@
 	GCF_COMPATIBLE,///< GRF file does not exactly match the requested GRF (different MD5SUM), but grfid matches)
 	GCF_COPY,      ///< The data is copied from a grf in _all_grfs
 	GCF_INIT_ONLY, ///< GRF file is processed up to GLS_INIT
+	GCF_RESERVED,  ///< GRF file passed GLS_RESERVE stage
 };
 
 enum GRFStatus {