Changeset - r18327:3f476c73b5cb
[Not reviewed]
master
0 9 0
frosch - 13 years ago 2011-11-09 16:38:50
frosch@openttd.org
(svn r23173) -Codechange: Rename GetVehicleCapacity() to Engine::DetermineCapacity().
9 files changed with 74 insertions and 73 deletions:
0 comments (0 inline, 0 general)
src/aircraft_cmd.cpp
Show inline comments
 
@@ -306,7 +306,7 @@ CommandCost CmdBuildAircraft(TileIndex t
 

	
 
		v->InvalidateNewGRFCacheOfChain();
 

	
 
		v->cargo_cap = GetVehicleCapacity(v, &u->cargo_cap);
 
		v->cargo_cap = e->DetermineCapacity(v, &u->cargo_cap);
 

	
 
		v->InvalidateNewGRFCacheOfChain();
 

	
src/engine.cpp
Show inline comments
 
@@ -196,6 +196,72 @@ bool Engine::CanCarryCargo() const
 
	return this->GetDefaultCargoType() != CT_INVALID;
 
}
 

	
 

	
 
/**
 
 * Determines capacity of a given vehicle from scratch.
 
 * For aircraft the main capacity is determined. Mail might be present as well.
 
 * @note Keep this function consistent with Engine::GetDisplayDefaultCapacity().
 
 * @param v Vehicle of interest
 
 * @param mail_capacity returns secondary cargo (mail) capacity of aircraft
 
 * @return Capacity
 
 */
 
uint Engine::DetermineCapacity(const Vehicle *v, uint16 *mail_capacity) const
 
{
 
	assert(this->index == v->engine_type);
 
	if (mail_capacity != NULL) *mail_capacity = 0;
 

	
 
	if (!this->CanCarryCargo()) return 0;
 

	
 
	if (mail_capacity != NULL && this->type == VEH_AIRCRAFT && IsCargoInClass(v->cargo_type, CC_PASSENGERS)) {
 
		*mail_capacity = GetVehicleProperty(v, PROP_AIRCRAFT_MAIL_CAPACITY, this->u.air.mail_capacity);
 
	}
 
	CargoID default_cargo = this->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(this->info.callback_mask, CBM_VEHICLE_REFIT_CAPACITY) &&
 
			(default_cargo != v->cargo_type || v->cargo_subtype != 0)) {
 
		uint16 callback = GetVehicleCallback(CBID_VEHICLE_REFIT_CAPACITY, 0, 0, this->index, v);
 
		if (callback != CALLBACK_FAILED) return callback;
 
	}
 

	
 
	/* Get capacity according to property resp. CB */
 
	uint capacity;
 
	switch (this->type) {
 
		case VEH_TRAIN:    capacity = GetVehicleProperty(v, PROP_TRAIN_CARGO_CAPACITY,        this->u.rail.capacity); break;
 
		case VEH_ROAD:     capacity = GetVehicleProperty(v, PROP_ROADVEH_CARGO_CAPACITY,      this->u.road.capacity); break;
 
		case VEH_SHIP:     capacity = GetVehicleProperty(v, PROP_SHIP_CARGO_CAPACITY,         this->u.ship.capacity); break;
 
		case VEH_AIRCRAFT: capacity = GetVehicleProperty(v, PROP_AIRCRAFT_PASSENGER_CAPACITY, this->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 (this->type != VEH_SHIP) {
 
		if (this->type == VEH_AIRCRAFT) {
 
			if (!IsCargoInClass(v->cargo_type, CC_PASSENGERS)) {
 
				capacity += GetVehicleProperty(v, PROP_AIRCRAFT_MAIL_CAPACITY, this->u.air.mail_capacity);
 
			}
 
			if (v->cargo_type == CT_MAIL) return capacity;
 
		} else {
 
			switch (default_cargo) {
 
				case CT_PASSENGERS: break;
 
				case CT_MAIL:
 
				case CT_GOODS: capacity *= 2; break;
 
				default:       capacity *= 4; break;
 
			}
 
		}
 
		switch (v->cargo_type) {
 
			case CT_PASSENGERS: break;
 
			case CT_MAIL:
 
			case CT_GOODS: capacity /= 2; break;
 
			default:       capacity /= 4; break;
 
		}
 
	}
 

	
 
	return capacity;
 
}
 

	
 
/**
 
 * Determines the default cargo capacity of an engine for display purposes.
 
 *
 
@@ -203,7 +269,7 @@ bool Engine::CanCarryCargo() const
 
 * For multiheaded engines this is the capacity of both heads.
 
 * For articulated engines use GetCapacityOfArticulatedParts
 
 *
 
 * @note Keep this function consistent with GetVehicleCapacity().
 
 * @note Keep this function consistent with Engine::DetermineCapacity().
 
 * @param mail_capacity returns secondary cargo (mail) capacity of aircraft
 
 * @return The default capacity
 
 * @see GetDefaultCargoType
src/engine_base.h
Show inline comments
 
@@ -83,6 +83,8 @@ struct Engine : EnginePool::PoolItem<&_e
 
		return this->info.cargo_type;
 
	}
 

	
 
	uint DetermineCapacity(const Vehicle *v, uint16 *mail_capacity = NULL) const;
 

	
 
	bool CanCarryCargo() const;
 
	uint GetDisplayDefaultCapacity(uint16 *mail_capacity = NULL) const;
 
	Money GetRunningCost() const;
src/roadveh_cmd.cpp
Show inline comments
 
@@ -290,7 +290,7 @@ CommandCost CmdBuildRoadVehicle(TileInde
 

	
 
		/* Call various callbacks after the whole consist has been constructed */
 
		for (RoadVehicle *u = v; u != NULL; u = u->Next()) {
 
			u->cargo_cap = GetVehicleCapacity(u);
 
			u->cargo_cap = u->GetEngine()->DetermineCapacity(u);
 
			v->InvalidateNewGRFCache();
 
			u->InvalidateNewGRFCache();
 
		}
src/ship_cmd.cpp
Show inline comments
 
@@ -675,7 +675,7 @@ CommandCost CmdBuildShip(TileIndex tile,
 

	
 
		v->InvalidateNewGRFCacheOfChain();
 

	
 
		v->cargo_cap = GetVehicleCapacity(v);
 
		v->cargo_cap = e->DetermineCapacity(v);
 

	
 
		v->InvalidateNewGRFCacheOfChain();
 

	
src/train_cmd.cpp
Show inline comments
 
@@ -216,7 +216,7 @@ void Train::ConsistChanged(bool same_len
 
			}
 
		}
 

	
 
		u->cargo_cap = GetVehicleCapacity(u);
 
		u->cargo_cap = e_u->DetermineCapacity(u);
 
		u->vcache.cached_cargo_age_period = GetVehicleProperty(u, PROP_TRAIN_CARGO_AGE_PERIOD, e_u->info.cargo_age_period);
 

	
 
		/* check the vehicle length (callback) */
src/vehicle.cpp
Show inline comments
 
@@ -1794,71 +1794,6 @@ PaletteID GetVehiclePalette(const Vehicl
 
}
 

	
 
/**
 
 * Determines capacity of a given vehicle from scratch.
 
 * For aircraft the main capacity is determined. Mail might be present as well.
 
 * @note Keep this function consistent with Engine::GetDisplayDefaultCapacity().
 
 * @param v Vehicle of interest
 
 * @param mail_capacity returns secondary cargo (mail) capacity of aircraft
 
 * @return Capacity
 
 */
 
uint GetVehicleCapacity(const Vehicle *v, uint16 *mail_capacity)
 
{
 
	if (mail_capacity != NULL) *mail_capacity = 0;
 
	const Engine *e = v->GetEngine();
 

	
 
	if (!e->CanCarryCargo()) return 0;
 

	
 
	if (mail_capacity != NULL && e->type == VEH_AIRCRAFT && IsCargoInClass(v->cargo_type, CC_PASSENGERS)) {
 
		*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) &&
 
			(default_cargo != v->cargo_type || v->cargo_subtype != 0)) {
 
		uint16 callback = GetVehicleCallback(CBID_VEHICLE_REFIT_CAPACITY, 0, 0, v->engine_type, 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 = 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 += 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:
 
				case CT_GOODS: capacity *= 2; break;
 
				default:       capacity *= 4; break;
 
			}
 
		}
 
		switch (v->cargo_type) {
 
			case CT_PASSENGERS: break;
 
			case CT_MAIL:
 
			case CT_GOODS: capacity /= 2; break;
 
			default:       capacity /= 4; break;
 
		}
 
	}
 

	
 
	return capacity;
 
}
 

	
 
/**
 
 * Delete all implicit orders which were not reached.
 
 */
 
void Vehicle::DeleteUnreachedImplicitOrders()
src/vehicle_cmd.cpp
Show inline comments
 
@@ -324,7 +324,7 @@ static CommandCost RefitVehicle(Vehicle 
 
		}
 

	
 
		uint16 mail_capacity = 0;
 
		uint amount = GetVehicleCapacity(v, &mail_capacity);
 
		uint amount = e->DetermineCapacity(v, &mail_capacity);
 
		total_capacity += amount;
 
		/* mail_capacity will always be zero if the vehicle is not an aircraft. */
 
		total_mail_capacity += mail_capacity;
src/vehicle_func.h
Show inline comments
 
@@ -112,8 +112,6 @@ const struct Livery *GetEngineLivery(Eng
 
SpriteID GetEnginePalette(EngineID engine_type, CompanyID company);
 
SpriteID GetVehiclePalette(const Vehicle *v);
 

	
 
uint GetVehicleCapacity(const Vehicle *v, uint16 *mail_capacity = NULL);
 

	
 
extern const uint32 _veh_build_proc_table[];
 
extern const uint32 _veh_sell_proc_table[];
 
extern const uint32 _veh_refit_proc_table[];
0 comments (0 inline, 0 general)