(svn r6468) -Codechange r6464: now use error() when failing refit in autoreplace to ensure that such a failure will not break a game

We should only reach this error() if there is a bug, that would otherwise make the vehicles carry a different type of cargo without telling the user
   This also kills the warning added in r6464 (oops)
This commit is contained in:
bjarni 2006-09-16 22:09:26 +00:00
parent d095ff81d6
commit 7d1baa32bf
2 changed files with 2 additions and 10 deletions

View File

@ -2906,8 +2906,6 @@ STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Make aut
STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}Replacing: {ORANGE}{SKIP}{SKIP}{STRING}
STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK} EXPERIMENTAL FEATURE {}Switch between engine and wagon replacement windows.{}Wagon replacement will only be done if the new wagon can be refitted into carrying the same type of cargo as the old one. This is checked for each wagon when the actual replacement takes place.
STR_ENGINE_NOT_BUILDABLE :{WHITE}Engine is not buildable
STR_AUTOREPLACE_FAILED :{WHITE}BUG: Autoreplace refit failure
STR_AUTOREPLACE_REFIT_FAILURE :{WHITE}{STRING} replaced into {STRING} failed to refit to {STRING}
STR_ENGINES :Engines
STR_WAGONS :Wagons

View File

@ -1779,14 +1779,8 @@ static int32 ReplaceVehicle(Vehicle **w, byte flags, int32 total_cost)
/* refit if needed */
if (replacement_cargo_type != CT_NO_REFIT) {
if (CmdFailed(DoCommand(0, new_v->index, replacement_cargo_type, DC_EXEC, CMD_REFIT_VEH(new_v->type)))) {
/* We should not be here
* being here shows a failure indicates a bug in GetNewCargoTypeForReplace() or incorrect estimation costs */
SetDParam(0, GetCustomEngineName(old_v->engine_type));
SetDParam(1, GetCustomEngineName(new_v->engine_type));
SetDParam(2, _cargoc.names_s[replacement_cargo_type]);
ShowInfo("Error: Autoreplace failed to refit (bug)");
ShowErrorMessage(STR_AUTOREPLACE_REFIT_FAILURE, STR_AUTOREPLACE_FAILED, 0 ,0);
NOT_REACHED(); // stop debug builds at this error for easier debugging
/* Being here shows a failure, which most likely is in GetNewCargoTypeForReplace() or incorrect estimation costs */
error("Autoreplace failed to refit. Replace engine %d to %d and refit to cargo %d", old_v->engine_type, new_v->engine_type, replacement_cargo_type);
}
}