summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorglx <glx@openttd.org>2007-11-04 22:24:03 +0000
committerglx <glx@openttd.org>2007-11-04 22:24:03 +0000
commit3517ee6d54157541ad8c451a075b675c0b429506 (patch)
treecd0e25b8a0622ff40fa75f65047e24b6d9af09e1 /src
parent6c9617b4aedb25f61e2c7c300f7291e2aac31c79 (diff)
downloadopenttd-3517ee6d54157541ad8c451a075b675c0b429506.tar.xz
(svn r11381) -Fix [FS#1227]: redo the fix in a less breaking way
Diffstat (limited to 'src')
-rw-r--r--src/newgrf.cpp5
-rw-r--r--src/newgrf_config.h1
2 files changed, 4 insertions, 2 deletions
diff --git a/src/newgrf.cpp b/src/newgrf.cpp
index 9b2aafce2..f02feadaa 100644
--- a/src/newgrf.cpp
+++ b/src/newgrf.cpp
@@ -5426,7 +5426,7 @@ void LoadNewGRFFile(GRFConfig *config, uint file_index, GrfLoadingStage stage)
_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 @@ void LoadNewGRF(uint load_index, uint file_index)
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);
diff --git a/src/newgrf_config.h b/src/newgrf_config.h
index 372946bee..fe59d44c3 100644
--- a/src/newgrf_config.h
+++ b/src/newgrf_config.h
@@ -15,6 +15,7 @@ enum GCF_Flags {
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 {