changeset 15723:e4e81e86026e draft

(svn r20390) -Codechange: Move company vehicle counting to vehicle.cpp.
author alberth <alberth@openttd.org>
date Fri, 06 Aug 2010 19:56:14 +0000
parents 3d1ca3435ebb
children db6f7934da37
files src/company_gui.cpp src/vehicle.cpp src/vehicle_func.h
diffstat 3 files changed, 20 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- 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 {
--- 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
  */
--- 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);