# HG changeset patch # User alberth # Date 1281124574 0 # Node ID e4e81e86026e8348eed50f62a060ca86c5c8e8ec # Parent 3d1ca3435ebbb592f0a9e179a988a5ae63cec34a (svn r20390) -Codechange: Move company vehicle counting to vehicle.cpp. diff --git a/src/company_gui.cpp b/src/company_gui.cpp --- 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 @@ break; case CW_WIDGET_DESC_VEHICLE_COUNTS: { - uint amounts[] = { 0, 0, 0, 0 }; - int y = r.top; + uint amounts[4]; + CountCompanyVehicles((CompanyID)this->window_number, amounts); - 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]++; - } - } - } - + 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 --- a/src/vehicle.cpp +++ b/src/vehicle.cpp @@ -593,6 +593,21 @@ } /** + * 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 --- a/src/vehicle_func.h +++ b/src/vehicle_func.h @@ -30,6 +30,7 @@ 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);