Changeset - r7831:09718d610cd4
[Not reviewed]
master
0 2 0
glx - 17 years ago 2007-11-04 22:24:03
glx@openttd.org
(svn r11381) -Fix [FS#1227]: redo the fix in a less breaking way
2 files changed with 4 insertions and 2 deletions:
0 comments (0 inline, 0 general)
src/newgrf.cpp
Show inline comments
 
@@ -5423,13 +5423,13 @@ void LoadNewGRFFile(GRFConfig *config, u
 
	 * carried out.  All others are ignored, because they only need to be
 
	 * processed once at initialization.  */
 
	if (stage != GLS_FILESCAN && stage != GLS_SAFETYSCAN && stage != GLS_LABELSCAN) {
 
		_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) {
 
		DEBUG(grf, 0, "'%s' is not loaded as the maximum number of GRFs has been reached", filename);
 
		config->status = GCS_DISABLED;
 
		config->error  = CallocT<GRFError>(1);
 
@@ -5557,14 +5557,15 @@ void LoadNewGRF(uint load_index, uint fi
 
			/* @todo usererror() */
 
			if (!FioCheckFileExists(c->filename)) error("NewGRF file is missing '%s'", c->filename);
 

	
 
			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);
 
			}
 
		}
 
	}
src/newgrf_config.h
Show inline comments
 
@@ -12,12 +12,13 @@ enum GCF_Flags {
 
	GCF_SYSTEM,    ///< GRF file is an openttd-internal system grf
 
	GCF_UNSAFE,    ///< GRF file is unsafe for static usage
 
	GCF_STATIC,    ///< GRF file is used statically (can be used in any MP game)
 
	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 {
 
	GCS_UNKNOWN,      ///< The status of this grf file is unknown
 
	GCS_DISABLED,     ///< GRF file is disabled
 
	GCS_NOT_FOUND,    ///< GRF file was not found in the local cache
0 comments (0 inline, 0 general)