Add: [AI] Get the number of vehicles in a given group (#9462)

pull/332/head
SamuXarick 3 years ago committed by GitHub
parent 26f7f592cd
commit 120d216b0b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -20,6 +20,7 @@
* API additions:
* \li AINewGRF
* \li AINewGRFList
* \li AIGroup::GetNumVehicles
*
* \b 1.11.0
*

@ -106,6 +106,15 @@
return GetGroupNumEngines(ScriptObject::GetCompany(), group_id, engine_id);
}
/* static */ int32 ScriptGroup::GetNumVehicles(GroupID group_id, ScriptVehicle::VehicleType vehicle_type)
{
bool valid_group = IsValidGroup(group_id);
if (!valid_group && group_id != GROUP_DEFAULT && group_id != GROUP_ALL) return -1;
if (!valid_group && (vehicle_type < ScriptVehicle::VT_RAIL || vehicle_type > ScriptVehicle::VT_AIR)) return -1;
return GetGroupNumVehicle(ScriptObject::GetCompany(), group_id, valid_group ? ::Group::Get(group_id)->vehicle_type : (::VehicleType)vehicle_type);
}
/* static */ bool ScriptGroup::MoveVehicle(GroupID group_id, VehicleID vehicle_id)
{
EnforcePrecondition(false, IsValidGroup(group_id) || group_id == GROUP_DEFAULT);

@ -128,6 +128,20 @@ public:
*/
static int32 GetNumEngines(GroupID group_id, EngineID engine_id);
/**
* Get the total number of vehicles in a given group and its sub-groups.
* @param group_id The group to get the number of vehicles in.
* @param vehicle_type The type of vehicle of the group.
* @pre IsValidGroup(group_id) || group_id == GROUP_ALL || group_id == GROUP_DEFAULT.
* @pre IsValidGroup(group_id) || vehicle_type == ScriptVehicle::VT_ROAD || vehicle_type == ScriptVehicle::VT_RAIL ||
* vehicle_type == ScriptVehicle::VT_WATER || vehicle_type == ScriptVehicle::VT_AIR
* @return The total number of vehicles in the group with id group_id and it's sub-groups.
* @note If the group is valid (neither GROUP_ALL nor GROUP_DEFAULT), the value of
* vehicle_type is retrieved from the group itself and not from the input value.
* But if the group is GROUP_ALL or GROUP_DEFAULT, then vehicle_type must be valid.
*/
static int32 GetNumVehicles(GroupID group_id, ScriptVehicle::VehicleType vehicle_type);
/**
* Move a vehicle to a group.
* @param group_id The group to move the vehicle to.

Loading…
Cancel
Save