Changeset - r14631:5e82747104db
[Not reviewed]
master
0 4 0
frosch - 15 years ago 2010-02-22 21:46:20
frosch@openttd.org
(svn r19218) -Feature: [NewGRF] Add CB36 support for aircraft properties 0F and 11. (Eddi)
4 files changed with 13 insertions and 11 deletions:
0 comments (0 inline, 0 general)
src/engine.cpp
Show inline comments
 
@@ -181,18 +181,18 @@ uint Engine::GetDisplayDefaultCapacity(u
 
			return GetEngineProperty(this->index, PROP_ROADVEH_CARGO_CAPACITY, this->u.road.capacity);
 

	
 
		case VEH_SHIP:
 
			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:
 
				case CT_MAIL:       return capacity;
 
				case CT_GOODS:      return capacity / 2;
 
				default:            return capacity / 4;
src/newgrf.cpp
Show inline comments
 
@@ -1046,17 +1046,17 @@ static ChangeInfoResult AircraftVehicleC
 
				break;
 

	
 
			case PROP_AIRCRAFT_RUNNING_COST_FACTOR: // 0x0E Running cost factor
 
				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;
 

	
 
			case 0x12: // SFX
 
				avi->sfx = buf->ReadByte();
 
				break;
src/newgrf_properties.h
Show inline comments
 
@@ -36,9 +36,11 @@ enum PropertyID {
 
	PROP_SHIP_CARGO_CAPACITY                    = 0x0D, ///< Capacity
 
	PROP_SHIP_RUNNING_COST_FACTOR               = 0x0F, ///< Yearly runningcost
 

	
 
	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 */
src/vehicle.cpp
Show inline comments
 
@@ -1465,13 +1465,13 @@ uint GetVehicleCapacity(const Vehicle *v
 
	if (mail_capacity != NULL) *mail_capacity = 0;
 
	const Engine *e = Engine::Get(v->engine_type);
 

	
 
	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();
 

	
 
	/* Check the refit capacity callback if we are not in the default configuration.
 
	 * Note: This might change to become more consistent/flexible/sane, esp. when default cargo is first refittable. */
 
	if (HasBit(e->info.callback_mask, CBM_VEHICLE_REFIT_CAPACITY) &&
 
@@ -1480,25 +1480,25 @@ uint GetVehicleCapacity(const Vehicle *v
 
		if (callback != CALLBACK_FAILED) return callback;
 
	}
 

	
 
	/* 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();
 
	}
 

	
 
	/* Apply multipliers depending on cargo- and vehicletype.
 
	 * Note: This might change to become more consistent/flexible. */
 
	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 {
 
			switch (default_cargo) {
 
				case CT_PASSENGERS: break;
 
				case CT_MAIL:
0 comments (0 inline, 0 general)