summaryrefslogtreecommitdiff
path: root/src/train_gui.cpp
diff options
context:
space:
mode:
authorfrosch <frosch@openttd.org>2012-02-25 20:47:16 +0000
committerfrosch <frosch@openttd.org>2012-02-25 20:47:16 +0000
commit031f6ee611676b11a627e12e1d16fa033c2de589 (patch)
tree813a4f181c3ab0d45276397b9830dd436bd0468e /src/train_gui.cpp
parentb4e136130208a7ef085799e85c7475cbb27e9312 (diff)
downloadopenttd-031f6ee611676b11a627e12e1d16fa033c2de589.tar.xz
(svn r23991) -Fix [FS#5076]: Also display the cargo subtype for vehicles which have no capacity, but a subtype.
Diffstat (limited to 'src/train_gui.cpp')
-rw-r--r--src/train_gui.cpp30
1 files changed, 21 insertions, 9 deletions
diff --git a/src/train_gui.cpp b/src/train_gui.cpp
index 74c7bade1..5d5fe3ab7 100644
--- a/src/train_gui.cpp
+++ b/src/train_gui.cpp
@@ -186,14 +186,16 @@ static CargoSummary _cargo_summary;
*/
static void TrainDetailsCargoTab(const CargoSummaryItem *item, int left, int right, int y)
{
- StringID str = STR_VEHICLE_DETAILS_CARGO_EMPTY;
-
+ StringID str;
if (item->amount > 0) {
SetDParam(0, item->cargo);
SetDParam(1, item->amount);
SetDParam(2, item->source);
SetDParam(3, _settings_game.vehicle.freight_trains);
str = FreightWagonMult(item->cargo) > 1 ? STR_VEHICLE_DETAILS_CARGO_FROM_MULT : STR_VEHICLE_DETAILS_CARGO_FROM;
+ } else {
+ SetDParam(0, STR_QUANTITY_N_A);
+ str = item->cargo == INVALID_CARGO ? STR_LTBLUE_STRING : STR_VEHICLE_DETAILS_CARGO_EMPTY;
}
DrawString(left, right, y, str);
@@ -231,11 +233,19 @@ static void TrainDetailsInfoTab(const Vehicle *v, int left, int right, int y)
*/
static void TrainDetailsCapacityTab(const CargoSummaryItem *item, int left, int right, int y)
{
- SetDParam(0, item->cargo);
- SetDParam(1, item->capacity);
- SetDParam(4, item->subtype);
- SetDParam(5, _settings_game.vehicle.freight_trains);
- DrawString(left, right, y, FreightWagonMult(item->cargo) > 1 ? STR_VEHICLE_INFO_CAPACITY_MULT : STR_VEHICLE_INFO_CAPACITY);
+ StringID str;
+ if (item->cargo != INVALID_CARGO) {
+ SetDParam(0, item->cargo);
+ SetDParam(1, item->capacity);
+ SetDParam(4, item->subtype);
+ SetDParam(5, _settings_game.vehicle.freight_trains);
+ str = FreightWagonMult(item->cargo) > 1 ? STR_VEHICLE_INFO_CAPACITY_MULT : STR_VEHICLE_INFO_CAPACITY;
+ } else {
+ /* Draw subtype only */
+ SetDParam(0, item->subtype);
+ str = STR_VEHICLE_INFO_NO_CAPACITY;
+ }
+ DrawString(left, right, y, str);
}
/**
@@ -247,11 +257,12 @@ static void GetCargoSummaryOfArticulatedVehicle(const Train *v, CargoSummary *su
{
summary->Clear();
do {
- if (v->cargo_cap == 0) continue;
+ if (!v->GetEngine()->CanCarryCargo()) continue;
CargoSummaryItem new_item;
- new_item.cargo = v->cargo_type;
+ new_item.cargo = v->cargo_cap > 0 ? v->cargo_type : INVALID_CARGO;
new_item.subtype = GetCargoSubtypeText(v);
+ if (new_item.cargo == INVALID_CARGO && new_item.subtype == STR_EMPTY) continue;
CargoSummaryItem *item = summary->Find(new_item);
if (item == summary->End()) {
@@ -395,6 +406,7 @@ void DrawTrainDetails(const Train *v, int left, int right, int y, int vscroll_po
if (i < _cargo_summary.Length()) {
TrainDetailsCapacityTab(&_cargo_summary[i], data_left, data_right, py);
} else {
+ SetDParam(0, STR_EMPTY);
DrawString(data_left, data_right, py, STR_VEHICLE_INFO_NO_CAPACITY);
}
break;