diff options
-rw-r--r-- | src/company_gui.cpp | 17 | ||||
-rw-r--r-- | src/vehicle.cpp | 15 | ||||
-rw-r--r-- | src/vehicle_func.h | 1 |
3 files changed, 20 insertions, 13 deletions
diff --git a/src/company_gui.cpp b/src/company_gui.cpp index dc8ecfc22..441572709 100644 --- a/src/company_gui.cpp +++ b/src/company_gui.cpp @@ -20,7 +20,7 @@ #include "network/network_gui.h" #include "network/network_func.h" #include "economy_func.h" -#include "vehicle_base.h" +#include "vehicle_func.h" #include "newgrf.h" #include "company_manager_face.h" #include "strings_func.h" @@ -1852,19 +1852,10 @@ struct CompanyWindow : Window break; case CW_WIDGET_DESC_VEHICLE_COUNTS: { - uint amounts[] = { 0, 0, 0, 0 }; - int y = r.top; - - const Vehicle *v; - FOR_ALL_VEHICLES(v) { - if (v->owner == c->index) { - if (v->IsPrimaryVehicle()) { - assert((size_t)v->type < lengthof(amounts)); - amounts[v->type]++; - } - } - } + uint amounts[4]; + CountCompanyVehicles((CompanyID)this->window_number, amounts); + int y = r.top; if (amounts[0] + amounts[1] + amounts[2] + amounts[3] == 0) { DrawString(r.left, r.right, y, STR_COMPANY_VIEW_VEHICLES_NONE); } else { diff --git a/src/vehicle.cpp b/src/vehicle.cpp index 0be9bb2cb..8673baef1 100644 --- a/src/vehicle.cpp +++ b/src/vehicle.cpp @@ -593,6 +593,21 @@ uint CountVehiclesInChain(const Vehicle *v) } /** + * Count the number of vehicles of a company. + * @param c Company owning the vehicles. + * @param [out] counts Array of counts. Contains the vehicle count ordered by type afterwards. + */ +void CountCompanyVehicles(CompanyID cid, uint counts[4]) +{ + for (uint i = 0; i < 4; i++) counts[i] = 0; + + const Vehicle *v; + FOR_ALL_VEHICLES(v) { + if (v->owner == cid && v->IsPrimaryVehicle()) counts[v->type]++; + } +} + +/** * Check if a vehicle is counted in num_engines in each company struct * @return true if the vehicle is counted in num_engines */ diff --git a/src/vehicle_func.h b/src/vehicle_func.h index a0b976ef4..7dc5839e5 100644 --- a/src/vehicle_func.h +++ b/src/vehicle_func.h @@ -30,6 +30,7 @@ typedef Vehicle *VehicleFromPosProc(Vehicle *v, void *data); void VehicleServiceInDepot(Vehicle *v); uint CountVehiclesInChain(const Vehicle *v); +void CountCompanyVehicles(CompanyID cid, uint counts[4]); void FindVehicleOnPos(TileIndex tile, void *data, VehicleFromPosProc *proc); void FindVehicleOnPosXY(int x, int y, void *data, VehicleFromPosProc *proc); bool HasVehicleOnPos(TileIndex tile, void *data, VehicleFromPosProc *proc); |