Changeset - r15232:23efec4c269d
[Not reviewed]
master
0 3 0
frosch - 14 years ago 2010-05-21 20:51:00
frosch@openttd.org
(svn r19877) -Change: Name invalid engines, cargos and industries 'invalid', if the player removed the supplying NewGRFs.
3 files changed with 45 insertions and 1 deletions:
0 comments (0 inline, 0 general)
src/lang/english.txt
Show inline comments
 
@@ -2433,6 +2433,13 @@ STR_NEWGRF_BUGGY                        
 
STR_NEWGRF_BUGGY_ARTICULATED_CARGO                              :{WHITE}Cargo/refit information for '{1:ENGINE}' differs from purchase list after construction. This might cause autorenew/-replace to fail refitting correctly.
 
STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK                    :{WHITE}'{1:STRING}' caused an endless loop in the production callback.
 

	
 
# 'User removed essential NewGRFs'-placeholders for stuff without specs.
 
STR_NEWGRF_INVALID_CARGO                                        :<invalid cargo>
 
STR_NEWGRF_INVALID_CARGO_ABBREV                                 :??
 
STR_NEWGRF_INVALID_CARGO_QUANTITY                               :{COMMA} of <invalid cargo>
 
STR_NEWGRF_INVALID_ENGINE                                       :<invalid engine>
 
STR_NEWGRF_INVALID_INDUSTRYTYPE                                 :<invalid industry>
 

	
 
# Sign list window
 
STR_SIGN_LIST_CAPTION                                           :{WHITE}Sign List - {COMMA} Sign{P "" s}
 

	
src/newgrf.cpp
Show inline comments
 
@@ -6455,6 +6455,34 @@ static void CalculateRefitMasks()
 
	}
 
}
 

	
 
/** Check for invalid engines */
 
static void FinaliseEngineArray()
 
{
 
	Engine *e;
 

	
 
	FOR_ALL_ENGINES(e) {
 
		if (e->grffile == NULL) {
 
			const EngineIDMapping &eid = _engine_mngr[e->index];
 
			if (eid.grfid != INVALID_GRFID || eid.internal_id != eid.substitute_id) {
 
				e->info.string_id = STR_NEWGRF_INVALID_ENGINE;
 
			}
 
		}
 
	}
 
}
 

	
 
/** Check for invalid cargos */
 
static void FinaliseCargoArray()
 
{
 
	for (CargoID c = 0; c < NUM_CARGO; c++) {
 
		CargoSpec *cs = CargoSpec::Get(c);
 
		if (!cs->IsValid()) {
 
			cs->name = cs->name_single = cs->units_volume = STR_NEWGRF_INVALID_CARGO;
 
			cs->quantifier = STR_NEWGRF_INVALID_CARGO_QUANTITY;
 
			cs->abbrev = STR_NEWGRF_INVALID_CARGO_ABBREV;
 
		}
 
	}
 
}
 

	
 
/** Add all new houses to the house array. House properties can be set at any
 
 * time in the GRF file, so we can only add a house spec to the house array
 
 * after the file has finished loading. We also need to check the dates, due to
 
@@ -6583,6 +6611,9 @@ static void FinaliseIndustriesArray()
 
				indsp->conflicting[i] = MapNewGRFIndustryType(indsp->conflicting[i], indsp->grf_prop.grffile->grfid);
 
			}
 
		}
 
		if (!indsp->enabled) {
 
			indsp->name = STR_NEWGRF_INVALID_INDUSTRYTYPE;
 
		}
 
	}
 
}
 

	
 
@@ -6963,9 +6994,15 @@ static void AfterLoadGRFs()
 
	}
 
	_grf_line_to_action6_sprite_override.clear();
 

	
 
	/* Polish cargos */
 
	FinaliseCargoArray();
 

	
 
	/* Pre-calculate all refit masks after loading GRF files. */
 
	CalculateRefitMasks();
 

	
 
	/* Polish engines */
 
	FinaliseEngineArray();
 

	
 
	/* Set the block size in the depot windows based on vehicle sprite sizes */
 
	InitDepotWindowBlockSizes();
 

	
src/strings.cpp
Show inline comments
 
@@ -998,7 +998,7 @@ static char *FormatString(char *buff, co
 

	
 
				assert(e != NULL);
 

	
 
				if (e->name != NULL) {
 
				if (e->name != NULL && e->info.string_id != STR_NEWGRF_INVALID_ENGINE) {
 
					buff = strecpy(buff, e->name, last);
 
				} else {
 
					buff = GetStringWithArgs(buff, e->info.string_id, NULL, last);
0 comments (0 inline, 0 general)