summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authoralberth <alberth@openttd.org>2010-08-06 19:56:14 +0000
committeralberth <alberth@openttd.org>2010-08-06 19:56:14 +0000
commite0e66b6ed0c1085bdaefc6ac951c043a51525975 (patch)
tree730e9811a41cae2818038c43b1bf1feb01f20234 /src
parent90a35d2e5b3728a8cd7fe1717d6c940b525cca9e (diff)
downloadopenttd-e0e66b6ed0c1085bdaefc6ac951c043a51525975.tar.xz
(svn r20390) -Codechange: Move company vehicle counting to vehicle.cpp.
Diffstat (limited to 'src')
-rw-r--r--src/company_gui.cpp17
-rw-r--r--src/vehicle.cpp15
-rw-r--r--src/vehicle_func.h1
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);