summaryrefslogtreecommitdiff
path: root/src/build_vehicle_gui.cpp
diff options
context:
space:
mode:
authorfrosch <frosch@openttd.org>2009-10-31 17:48:09 +0000
committerfrosch <frosch@openttd.org>2009-10-31 17:48:09 +0000
commit67cae40ec158c5df92348ce37d3ed2832abd5426 (patch)
treeacc65e62de519d9e63a268178dbe5df45192e905 /src/build_vehicle_gui.cpp
parent4ee589d86d02f6e320f195fc1b4e2667853a01ec (diff)
downloadopenttd-67cae40ec158c5df92348ce37d3ed2832abd5426.tar.xz
(svn r17926) -Fix (r9352): Make the decision whether aircraft carry mail consistent. Now always the cargo class decides.
Diffstat (limited to 'src/build_vehicle_gui.cpp')
-rw-r--r--src/build_vehicle_gui.cpp31
1 files changed, 16 insertions, 15 deletions
diff --git a/src/build_vehicle_gui.cpp b/src/build_vehicle_gui.cpp
index 917250cb0..8a1c204a3 100644
--- a/src/build_vehicle_gui.cpp
+++ b/src/build_vehicle_gui.cpp
@@ -277,15 +277,14 @@ static int CDECL AircraftEngineCargoSorter(const EngineID *a, const EngineID *b)
const Engine *e_a = Engine::Get(*a);
const Engine *e_b = Engine::Get(*b);
- int va = e_a->GetDisplayDefaultCapacity();
- int vb = e_b->GetDisplayDefaultCapacity();
+ uint16 mail_a, mail_b;
+ int va = e_a->GetDisplayDefaultCapacity(&mail_a);
+ int vb = e_b->GetDisplayDefaultCapacity(&mail_b);
int r = va - vb;
if (r == 0) {
- /* The planes has the same passenger capacity. Check mail capacity instead */
- va = e_a->u.air.mail_capacity;
- vb = e_b->u.air.mail_capacity;
- r = va - vb;
+ /* The planes have the same passenger capacity. Check mail capacity instead */
+ r = mail_a - mail_b;
if (r == 0) {
/* Use EngineID to sort instead since we want consistent sorting */
@@ -519,7 +518,7 @@ static int DrawRoadVehPurchaseInfo(int left, int right, int y, EngineID engine_n
}
/* Draw ship specific details */
-static int DrawShipPurchaseInfo(int left, int right, int y, EngineID engine_number, const ShipVehicleInfo *svi, bool refittable)
+static int DrawShipPurchaseInfo(int left, int right, int y, EngineID engine_number, bool refittable)
{
const Engine *e = Engine::Get(engine_number);
@@ -545,7 +544,7 @@ static int DrawShipPurchaseInfo(int left, int right, int y, EngineID engine_numb
}
/* Draw aircraft specific details */
-static int DrawAircraftPurchaseInfo(int left, int right, int y, EngineID engine_number, const AircraftVehicleInfo *avi, bool refittable)
+static int DrawAircraftPurchaseInfo(int left, int right, int y, EngineID engine_number, bool refittable)
{
const Engine *e = Engine::Get(engine_number);
CargoID cargo = e->GetDefaultCargoType();
@@ -557,17 +556,19 @@ static int DrawAircraftPurchaseInfo(int left, int right, int y, EngineID engine_
y += FONT_HEIGHT_NORMAL;
/* Cargo capacity */
- if (cargo == CT_INVALID || cargo == CT_PASSENGERS) {
- SetDParam(0, CT_PASSENGERS);
- SetDParam(1, e->GetDisplayDefaultCapacity());
+ uint16 mail_capacity;
+ uint capacity = e->GetDisplayDefaultCapacity(&mail_capacity);
+ if (mail_capacity > 0) {
+ SetDParam(0, cargo);
+ SetDParam(1, capacity);
SetDParam(2, CT_MAIL);
- SetDParam(3, avi->mail_capacity);
+ SetDParam(3, mail_capacity);
DrawString(left, right, y, STR_PURCHASE_INFO_AIRCRAFT_CAPACITY);
} else {
/* Note, if the default capacity is selected by the refit capacity
* callback, then the capacity shown is likely to be incorrect. */
SetDParam(0, cargo);
- SetDParam(1, e->GetDisplayDefaultCapacity());
+ SetDParam(1, capacity);
SetDParam(2, refittable ? STR_PURCHASE_INFO_REFITTABLE : STR_EMPTY);
DrawString(left, right, y, STR_PURCHASE_INFO_CAPACITY);
}
@@ -633,11 +634,11 @@ int DrawVehiclePurchaseInfo(int left, int right, int y, EngineID engine_number)
break;
case VEH_SHIP:
- y = DrawShipPurchaseInfo(left, right, y, engine_number, &e->u.ship, refittable);
+ y = DrawShipPurchaseInfo(left, right, y, engine_number, refittable);
break;
case VEH_AIRCRAFT:
- y = DrawAircraftPurchaseInfo(left, right, y, engine_number, &e->u.air, refittable);
+ y = DrawAircraftPurchaseInfo(left, right, y, engine_number, refittable);
break;
}