From 63b01f2009be96797bc3a08c6391516604e00e86 Mon Sep 17 00:00:00 2001 From: frosch Date: Mon, 22 Feb 2010 21:46:20 +0000 Subject: [PATCH] (svn r19218) -Feature: [NewGRF] Add CB36 support for aircraft properties 0F and 11. (Eddi) --- src/engine.cpp | 6 +++--- src/newgrf.cpp | 4 ++-- src/newgrf_properties.h | 2 ++ src/vehicle.cpp | 12 ++++++------ 4 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/engine.cpp b/src/engine.cpp index f3d8133ec0..8e6c41ba00 100644 --- a/src/engine.cpp +++ b/src/engine.cpp @@ -184,12 +184,12 @@ uint Engine::GetDisplayDefaultCapacity(uint16 *mail_capacity) const return GetEngineProperty(this->index, PROP_SHIP_CARGO_CAPACITY, this->u.ship.capacity); case VEH_AIRCRAFT: { - uint capacity = this->u.air.passenger_capacity; + uint capacity = GetEngineProperty(this->index, PROP_AIRCRAFT_PASSENGER_CAPACITY, this->u.air.passenger_capacity);; CargoID cargo = this->GetDefaultCargoType(); if (IsCargoInClass(cargo, CC_PASSENGERS)) { - if (mail_capacity != NULL) *mail_capacity = this->u.air.mail_capacity; + if (mail_capacity != NULL) *mail_capacity = GetEngineProperty(this->index, PROP_AIRCRAFT_MAIL_CAPACITY, this->u.air.mail_capacity); } else { - capacity += this->u.air.mail_capacity; + capacity += GetEngineProperty(this->index, PROP_AIRCRAFT_MAIL_CAPACITY, this->u.air.mail_capacity); } switch (cargo) { case CT_PASSENGERS: diff --git a/src/newgrf.cpp b/src/newgrf.cpp index 786d33959d..ba322df5ce 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -1049,11 +1049,11 @@ static ChangeInfoResult AircraftVehicleChangeInfo(uint engine, int numinfo, int avi->running_cost = buf->ReadByte(); break; - case 0x0F: // Passenger capacity + case PROP_AIRCRAFT_PASSENGER_CAPACITY: // 0x0F Passenger capacity avi->passenger_capacity = buf->ReadWord(); break; - case 0x11: // Mail capacity + case PROP_AIRCRAFT_MAIL_CAPACITY: // 0x11 Mail capacity avi->mail_capacity = buf->ReadByte(); break; diff --git a/src/newgrf_properties.h b/src/newgrf_properties.h index 758791cafb..2f21352e00 100644 --- a/src/newgrf_properties.h +++ b/src/newgrf_properties.h @@ -39,6 +39,8 @@ enum PropertyID { PROP_AIRCRAFT_COST_FACTOR = 0x0B, ///< Purchase cost PROP_AIRCRAFT_SPEED = 0x0C, ///< Max. speed: 1 unit = 8 mph = 12.8 km-ish/h PROP_AIRCRAFT_RUNNING_COST_FACTOR = 0x0E, ///< Yearly runningcost + PROP_AIRCRAFT_PASSENGER_CAPACITY = 0x0F, ///< Passenger Capacity + PROP_AIRCRAFT_MAIL_CAPACITY = 0x11, ///< Mail Capacity }; #endif /* NEWGRF_PROPERTIES_H */ diff --git a/src/vehicle.cpp b/src/vehicle.cpp index 4cf0af4d90..f0a1d40daf 100644 --- a/src/vehicle.cpp +++ b/src/vehicle.cpp @@ -1468,7 +1468,7 @@ uint GetVehicleCapacity(const Vehicle *v, uint16 *mail_capacity) if (!e->CanCarryCargo()) return 0; if (mail_capacity != NULL && e->type == VEH_AIRCRAFT && IsCargoInClass(v->cargo_type, CC_PASSENGERS)) { - *mail_capacity = e->u.air.mail_capacity; + *mail_capacity = GetVehicleProperty(v, PROP_AIRCRAFT_MAIL_CAPACITY, e->u.air.mail_capacity); } CargoID default_cargo = e->GetDefaultCargoType(); @@ -1483,10 +1483,10 @@ uint GetVehicleCapacity(const Vehicle *v, uint16 *mail_capacity) /* Get capacity according to property resp. CB */ uint capacity; switch (e->type) { - case VEH_TRAIN: capacity = GetVehicleProperty(v, PROP_TRAIN_CARGO_CAPACITY, e->u.rail.capacity); break; - case VEH_ROAD: capacity = GetVehicleProperty(v, PROP_ROADVEH_CARGO_CAPACITY, e->u.road.capacity); break; - case VEH_SHIP: capacity = GetVehicleProperty(v, PROP_SHIP_CARGO_CAPACITY, e->u.ship.capacity); break; - case VEH_AIRCRAFT: capacity = e->u.air.passenger_capacity; break; + case VEH_TRAIN: capacity = GetVehicleProperty(v, PROP_TRAIN_CARGO_CAPACITY, e->u.rail.capacity); break; + case VEH_ROAD: capacity = GetVehicleProperty(v, PROP_ROADVEH_CARGO_CAPACITY, e->u.road.capacity); break; + case VEH_SHIP: capacity = GetVehicleProperty(v, PROP_SHIP_CARGO_CAPACITY, e->u.ship.capacity); break; + case VEH_AIRCRAFT: capacity = GetVehicleProperty(v, PROP_AIRCRAFT_PASSENGER_CAPACITY, e->u.air.passenger_capacity); break; default: NOT_REACHED(); } @@ -1495,7 +1495,7 @@ uint GetVehicleCapacity(const Vehicle *v, uint16 *mail_capacity) if (e->type != VEH_SHIP) { if (e->type == VEH_AIRCRAFT) { if (!IsCargoInClass(v->cargo_type, CC_PASSENGERS)) { - capacity += e->u.air.mail_capacity; + capacity += GetVehicleProperty(v, PROP_AIRCRAFT_MAIL_CAPACITY, e->u.air.mail_capacity); } if (v->cargo_type == CT_MAIL) return capacity; } else {