Changeset - r18142:429bd06a51e9
[Not reviewed]
master
0 5 0
frosch - 13 years ago 2011-10-03 17:20:56
frosch@openttd.org
(svn r22977) -Codechange: Rename SetCachedEngineCounts() to GroupStatistics::UpdateAfterLoad().
5 files changed with 44 insertions and 42 deletions:
0 comments (0 inline, 0 general)
src/engine.cpp
Show inline comments
 
@@ -461,45 +461,6 @@ bool EngineOverrideManager::ResetToCurre
 
}
 

	
 
/**
 
 * 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()
src/engine_func.h
Show inline comments
 
@@ -25,7 +25,6 @@ extern const uint8 _engine_offsets[4];
 

	
 
bool IsEngineBuildable(EngineID engine, VehicleType type, CompanyID company);
 
bool IsEngineRefittable(EngineID engine);
 
void SetCachedEngineCounts();
 
void SetYearEngineAgingStops();
 
void StartupOneEngine(Engine *e, Date aging_date);
 

	
src/group.h
Show inline comments
 
@@ -30,6 +30,8 @@ struct GroupStatistics {
 
	~GroupStatistics();
 

	
 
	void Clear();
 

	
 
	static void UpdateAfterLoad();
 
};
 

	
 
/** Group data. */
src/group_cmd.cpp
Show inline comments
 
@@ -54,6 +54,45 @@ void GroupStatistics::Clear()
 
	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
src/saveload/afterload.cpp
Show inline comments
 
@@ -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 @@ static void InitializeWindowsAndCaches()
 

	
 
	RecomputePrices();
 

	
 
	SetCachedEngineCounts();
 
	GroupStatistics::UpdateAfterLoad();
 

	
 
	Station::RecomputeIndustriesNearForAll();
 
	RebuildSubsidisedSourceAndDestinationCache();
 
@@ -2677,7 +2678,7 @@ void ReloadNewGRFData()
 
	ResetVehiclePosHash();
 
	AfterLoadVehicles(false);
 
	StartupEngines();
 
	SetCachedEngineCounts();
 
	GroupStatistics::UpdateAfterLoad();
 
	/* update station graphics */
 
	AfterLoadStations();
 
	/* Check and update house and town values */
0 comments (0 inline, 0 general)