Changeset - r15714:f437c5ad189f
[Not reviewed]
master
0 1 0
alberth - 14 years ago 2010-08-06 20:10:53
alberth@openttd.org
(svn r20391) -Fix [FS#3993]: Prevent buying more vehicles than allowed.
1 file changed with 20 insertions and 0 deletions:
0 comments (0 inline, 0 general)
src/vehicle.cpp
Show inline comments
 
@@ -1321,8 +1321,28 @@ UnitID FreeUnitIDGenerator::NextID()
 
	return this->curid;
 
}
 

	
 
/**
 
 * Get an unused unit number for a vehicle (if allowed).
 
 * @param type Type of vehicle
 
 * @return A unused unit number for the given type of vehicle if it is allowed to build one, else \c UINT16_MAX.
 
 */
 
UnitID GetFreeUnitNumber(VehicleType type)
 
{
 
	/* Check whether it is allowed to build another vehicle. */
 
	uint max_veh;
 
	switch (type) {
 
		case VEH_TRAIN:    max_veh = _settings_game.vehicle.max_trains;   break;
 
		case VEH_ROAD:     max_veh = _settings_game.vehicle.max_roadveh;  break;
 
		case VEH_SHIP:     max_veh = _settings_game.vehicle.max_ships;    break;
 
		case VEH_AIRCRAFT: max_veh = _settings_game.vehicle.max_aircraft; break;
 
		default: NOT_REACHED();
 
	}
 

	
 
	uint amounts[4];
 
	CountCompanyVehicles(_current_company, amounts);
 
	assert((uint)type < lengthof(amounts));
 
	if (amounts[type] >= max_veh) return UINT16_MAX; // Currently already at the limit, no room to make a new one.
 

	
 
	FreeUnitIDGenerator gen(type, _current_company);
 

	
 
	return gen.NextID();
0 comments (0 inline, 0 general)