mirror of https://github.com/OpenTTD/OpenTTD.git
(svn r19877) -Change: Name invalid engines, cargos and industries 'invalid', if the player removed the supplying NewGRFs.
This commit is contained in:
parent
0040e88b7f
commit
393134ed69
|
@ -2433,6 +2433,13 @@ STR_NEWGRF_BUGGY :{WHITE}NewGRF '
|
|||
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}
|
||||
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -998,7 +998,7 @@ static char *FormatString(char *buff, const char *str, int64 *argv, uint casei,
|
|||
|
||||
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);
|
||||
|
|
Loading…
Reference in New Issue