diff options
Diffstat (limited to 'src/script/api')
-rw-r--r-- | src/script/api/ai_changelog.hpp | 1 | ||||
-rw-r--r-- | src/script/api/script_group.cpp | 9 | ||||
-rw-r--r-- | src/script/api/script_group.hpp | 14 |
3 files changed, 24 insertions, 0 deletions
diff --git a/src/script/api/ai_changelog.hpp b/src/script/api/ai_changelog.hpp index 15e171027..6e3283820 100644 --- a/src/script/api/ai_changelog.hpp +++ b/src/script/api/ai_changelog.hpp @@ -20,6 +20,7 @@ * API additions: * \li AINewGRF * \li AINewGRFList + * \li AIGroup::GetNumVehicles * * \b 1.11.0 * diff --git a/src/script/api/script_group.cpp b/src/script/api/script_group.cpp index 0295c67aa..a6e2fdee2 100644 --- a/src/script/api/script_group.cpp +++ b/src/script/api/script_group.cpp @@ -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); diff --git a/src/script/api/script_group.hpp b/src/script/api/script_group.hpp index 2c27b81c6..384fea7a2 100644 --- a/src/script/api/script_group.hpp +++ b/src/script/api/script_group.hpp @@ -129,6 +129,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. * @param vehicle_id The vehicle to move to the group. |