(svn r6858) - Fix (r6855): Handle rail vehicles with no capacity (N/A) by setting cargo type to CT_INVALID and handling it later. STR_8838_N_A is not a valid cargo type...
--- a/engine_gui.c Fri Oct 20 14:31:35 2006 +0000
+++ b/engine_gui.c Fri Oct 20 19:48:25 2006 +0000
@@ -139,7 +139,7 @@
SetDParam(5, rvi->cargo_type);
SetDParam(6, rvi->capacity << multihead);
} else {
- SetDParam(5, STR_8838_N_A);
+ SetDParam(5, CT_INVALID);
}
DrawStringMultiCenter(x, y, STR_VEHICLE_INFO_COST_WEIGHT_SPEED_POWER, maxw);
}
--- a/strings.c Fri Oct 20 14:31:35 2006 +0000
+++ b/strings.c Fri Oct 20 19:48:25 2006 +0000
@@ -731,7 +731,8 @@
// Layout now is:
// 8bit - cargo type
// 16-bit - cargo count
- StringID cargo_str = _cargoc.names_long[GetInt32(&argv)];
+ CargoID cargo = GetInt32(&argv);
+ StringID cargo_str = (cargo == CT_INVALID) ? STR_8838_N_A : _cargoc.names_long[cargo];
buff = GetStringWithArgs(buff, cargo_str, argv++);
break;
}
--- a/train_gui.c Fri Oct 20 14:31:35 2006 +0000
+++ b/train_gui.c Fri Oct 20 19:48:25 2006 +0000
@@ -269,9 +269,10 @@
};
/* Cargo type + capacity, or N/A */
- SetDParam(0, STR_8838_N_A);
- SetDParam(2, STR_EMPTY);
- if (rvi->capacity != 0) {
+ if (rvi->capacity == 0) {
+ SetDParam(0, CT_INVALID);
+ SetDParam(2, STR_EMPTY);
+ } else {
SetDParam(0, rvi->cargo_type);
SetDParam(1, (rvi->capacity * (CountArticulatedParts(engine_number) + 1)) << multihead);
SetDParam(2, STR_9842_REFITTABLE);
@@ -317,9 +318,10 @@
y += 10;
/* Cargo type + capacity, or N/A */
- SetDParam(0, STR_8838_N_A);
- SetDParam(2, STR_EMPTY);
- if (rvi->capacity != 0) {
+ if (rvi->capacity == 0) {
+ SetDParam(0, CT_INVALID);
+ SetDParam(2, STR_EMPTY);
+ } else {
SetDParam(0, rvi->cargo_type);
SetDParam(1, rvi->capacity * (CountArticulatedParts(engine_number) + 1));
SetDParam(2, refittable ? STR_9842_REFITTABLE : STR_EMPTY);