(svn r19218) -Feature: [NewGRF] Add CB36 support for aircraft properties 0F and 11. (Eddi)

This commit is contained in:
frosch 2010-02-22 21:46:20 +00:00
parent fee0743ba9
commit 63b01f2009
4 changed files with 13 additions and 11 deletions

View File

@ -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:

View File

@ -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;

View File

@ -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 */

View File

@ -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 {