Changeset - r25810:eaed796ad8c9
[Not reviewed]
master
0 1 0
rubidium42 - 3 years ago 2021-07-11 09:23:47
rubidium42@users.noreply.github.com
Remove: arbitrary limit on number of statically loaded NewGRFs (#9431)
1 file changed with 0 insertions and 9 deletions:
0 comments (0 inline, 0 general)
src/newgrf.cpp
Show inline comments
 
@@ -71,25 +71,24 @@ const std::vector<GRFFile *> &GetAllGRFF
 
}
 

	
 
/** Miscellaneous GRF features, set by Action 0x0D, parameter 0x9E */
 
byte _misc_grf_features = 0;
 

	
 
/** 32 * 8 = 256 flags. Apparently TTDPatch uses this many.. */
 
static uint32 _ttdpatch_flags[8];
 

	
 
/** Indicates which are the newgrf features currently loaded ingame */
 
GRFLoadedFeatures _loaded_newgrf_features;
 

	
 
static const uint MAX_SPRITEGROUP = UINT8_MAX; ///< Maximum GRF-local ID for a spritegroup.
 
static const uint MAX_GRF_COUNT = 128; ///< Maximum number of NewGRF files that could be loaded.
 

	
 
/** Temporary data during loading of GRFs */
 
struct GrfProcessingState {
 
private:
 
	/** Definition of a single Action1 spriteset */
 
	struct SpriteSet {
 
		SpriteID sprite;  ///< SpriteID of the first sprite of the set.
 
		uint num_sprites; ///< Number of sprites in the set.
 
	};
 

	
 
	/** Currently referenceable spritesets */
 
	std::map<uint, SpriteSet> spritesets[GSF_END];
 
@@ -9845,32 +9844,24 @@ void LoadNewGRF(uint load_index, uint nu
 
			if (stage == GLS_LABELSCAN) InitNewGRFFile(c);
 

	
 
			if (!HasBit(c->flags, GCF_STATIC) && !HasBit(c->flags, GCF_SYSTEM)) {
 
				if (num_non_static == NETWORK_MAX_GRF_COUNT) {
 
					Debug(grf, 0, "'{}' is not loaded as the maximum number of non-static GRFs has been reached", c->filename);
 
					c->status = GCS_DISABLED;
 
					c->error  = new GRFError(STR_NEWGRF_ERROR_MSG_FATAL, STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED);
 
					continue;
 
				}
 
				num_non_static++;
 
			}
 

	
 
			if (num_grfs >= MAX_GRF_COUNT) {
 
				Debug(grf, 0, "'{}' is not loaded as the maximum number of file slots has been reached", c->filename);
 
				c->status = GCS_DISABLED;
 
				c->error  = new GRFError(STR_NEWGRF_ERROR_MSG_FATAL, STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED);
 
				continue;
 
			}
 
			num_grfs++;
 

	
 
			LoadNewGRFFile(c, stage, subdir, false);
 
			if (stage == GLS_RESERVE) {
 
				SetBit(c->flags, GCF_RESERVED);
 
			} else if (stage == GLS_ACTIVATION) {
 
				ClrBit(c->flags, GCF_RESERVED);
 
				assert(GetFileByGRFID(c->ident.grfid) == _cur.grffile);
 
				ClearTemporaryNewGRFData(_cur.grffile);
 
				BuildCargoTranslationMap();
 
				Debug(sprite, 2, "LoadNewGRF: Currently {} sprites are loaded", _cur.spriteid);
 
			} else if (stage == GLS_INIT && HasBit(c->flags, GCF_INIT_ONLY)) {
 
				/* We're not going to activate this, so free whatever data we allocated */
 
				ClearTemporaryNewGRFData(_cur.grffile);
0 comments (0 inline, 0 general)