|
@@ -5417,25 +5417,25 @@ void LoadNewGRFFile(GRFConfig *config, u
|
|
|
* started. If a game is loaded, only its active .grfs will be
|
|
|
* reactivated, unless "loadallgraphics on" is used. A .grf file is
|
|
|
* considered active if its action 8 has been processed, i.e. its
|
|
|
* action 8 hasn't been skipped using an action 7.
|
|
|
*
|
|
|
* During activation, only actions 0, 1, 2, 3, 4, 5, 7, 8, 9, 0A and 0B are
|
|
|
* 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);
|
|
|
config->error->severity = STR_NEWGRF_ERROR_MSG_FATAL;
|
|
|
config->error->message = STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED;
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
FioOpenFile(file_index, filename);
|
|
@@ -5551,26 +5551,27 @@ void LoadNewGRF(uint load_index, uint fi
|
|
|
_cur_stage = stage;
|
|
|
_cur_spriteid = load_index;
|
|
|
for (GRFConfig *c = _grfconfig; c != NULL; c = c->next) {
|
|
|
if (c->status == GCS_DISABLED || c->status == GCS_NOT_FOUND) continue;
|
|
|
if (stage > GLS_INIT && HASBIT(c->flags, GCF_INIT_ONLY)) continue;
|
|
|
|
|
|
/* @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);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/* Call any functions that should be run after GRFs have been loaded. */
|
|
|
AfterLoadGRFs();
|
|
|
}
|
|
|
|
|
|
bool HasGrfMiscBit(GrfMiscBit bit)
|