From e0e66b6ed0c1085bdaefc6ac951c043a51525975 Mon Sep 17 00:00:00 2001 From: alberth Date: Fri, 6 Aug 2010 19:56:14 +0000 Subject: (svn r20390) -Codechange: Move company vehicle counting to vehicle.cpp. --- src/company_gui.cpp | 17 ++++------------- src/vehicle.cpp | 15 +++++++++++++++ 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 @@ -592,6 +592,21 @@ uint CountVehiclesInChain(const Vehicle *v) return count; } +/** + * 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); -- cgit v1.2.3-70-g09d2