changeset 18152:545be3b5f43e draft

(svn r22977) -Codechange: Rename SetCachedEngineCounts() to GroupStatistics::UpdateAfterLoad().
author frosch <frosch@openttd.org>
date Mon, 03 Oct 2011 17:20:56 +0000
parents 98b63013cba3
children ca071969f8d7
files src/engine.cpp src/engine_func.h src/group.h src/group_cmd.cpp src/saveload/afterload.cpp
diffstat 5 files changed, 44 insertions(+), 42 deletions(-) [+]
line wrap: on
line diff
--- a/src/engine.cpp
+++ b/src/engine.cpp
@@ -461,45 +461,6 @@
 }
 
 /**
- * Sets cached values in Company::num_vehicles and Group::num_vehicles
- */
-void SetCachedEngineCounts()
-{
-	size_t engines = Engine::GetPoolSize();
-
-	/* Set up the engine count for all companies */
-	Company *c;
-	FOR_ALL_COMPANIES(c) {
-		free(c->num_engines);
-		c->num_engines = CallocT<EngineID>(engines);
-	}
-
-	/* Recalculate */
-	Group *g;
-	FOR_ALL_GROUPS(g) {
-		g->statistics.Clear();
-	}
-
-	const Vehicle *v;
-	FOR_ALL_VEHICLES(v) {
-		if (!v->IsEngineCountable()) continue;
-
-		assert(v->engine_type < engines);
-
-		Company::Get(v->owner)->num_engines[v->engine_type]++;
-
-		if (v->group_id == DEFAULT_GROUP) continue;
-
-		g = Group::Get(v->group_id);
-		assert(v->type == g->vehicle_type);
-		assert(v->owner == g->owner);
-
-		g->statistics.num_engines[v->engine_type]++;
-		if (v->IsPrimaryVehicle()) g->statistics.num_vehicle++;
-	}
-}
-
-/**
  * Initialise the engine pool with the data from the original vehicles.
  */
 void SetupEngines()
--- a/src/engine_func.h
+++ b/src/engine_func.h
@@ -25,7 +25,6 @@
 
 bool IsEngineBuildable(EngineID engine, VehicleType type, CompanyID company);
 bool IsEngineRefittable(EngineID engine);
-void SetCachedEngineCounts();
 void SetYearEngineAgingStops();
 void StartupOneEngine(Engine *e, Date aging_date);
 
--- a/src/group.h
+++ b/src/group.h
@@ -30,6 +30,8 @@
 	~GroupStatistics();
 
 	void Clear();
+
+	static void UpdateAfterLoad();
 };
 
 /** Group data. */
--- a/src/group_cmd.cpp
+++ b/src/group_cmd.cpp
@@ -54,6 +54,45 @@
 	this->num_engines = CallocT<uint16>(Engine::GetPoolSize());
 }
 
+/**
+ * Update all caches after loading a game, changing NewGRF etc..
+ */
+/* static */ void GroupStatistics::UpdateAfterLoad()
+{
+	size_t engines = Engine::GetPoolSize();
+
+	/* Set up the engine count for all companies */
+	Company *c;
+	FOR_ALL_COMPANIES(c) {
+		free(c->num_engines);
+		c->num_engines = CallocT<EngineID>(engines);
+	}
+
+	/* Recalculate */
+	Group *g;
+	FOR_ALL_GROUPS(g) {
+		g->statistics.Clear();
+	}
+
+	const Vehicle *v;
+	FOR_ALL_VEHICLES(v) {
+		if (!v->IsEngineCountable()) continue;
+
+		assert(v->engine_type < engines);
+
+		Company::Get(v->owner)->num_engines[v->engine_type]++;
+
+		if (v->group_id == DEFAULT_GROUP) continue;
+
+		g = Group::Get(v->group_id);
+		assert(v->type == g->vehicle_type);
+		assert(v->owner == g->owner);
+
+		g->statistics.num_engines[v->engine_type]++;
+		if (v->IsPrimaryVehicle()) g->statistics.num_vehicle++;
+	}
+}
+
 
 /**
  * Update the num engines of a groupID. Decrease the old one and increase the new one
--- a/src/saveload/afterload.cpp
+++ b/src/saveload/afterload.cpp
@@ -52,6 +52,7 @@
 #include "../core/backup_type.hpp"
 #include "../smallmap_gui.h"
 #include "../news_func.h"
+#include "../group.h"
 
 #include "table/strings.h"
 
@@ -252,7 +253,7 @@
 
 	RecomputePrices();
 
-	SetCachedEngineCounts();
+	GroupStatistics::UpdateAfterLoad();
 
 	Station::RecomputeIndustriesNearForAll();
 	RebuildSubsidisedSourceAndDestinationCache();
@@ -2677,7 +2678,7 @@
 	ResetVehiclePosHash();
 	AfterLoadVehicles(false);
 	StartupEngines();
-	SetCachedEngineCounts();
+	GroupStatistics::UpdateAfterLoad();
 	/* update station graphics */
 	AfterLoadStations();
 	/* Check and update house and town values */