(svn r22977) -Codechange: Rename SetCachedEngineCounts() to GroupStatistics::UpdateAfterLoad().

This commit is contained in:
frosch 2011-10-03 17:20:56 +00:00
parent b6766c2ed5
commit b78a459613
5 changed files with 44 additions and 42 deletions

View File

@ -460,45 +460,6 @@ bool EngineOverrideManager::ResetToCurrentNewGRFConfig()
return true;
}
/**
* 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.
*/

View File

@ -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);

View File

@ -30,6 +30,8 @@ struct GroupStatistics {
~GroupStatistics();
void Clear();
static void UpdateAfterLoad();
};
/** Group data. */

View File

@ -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

View File

@ -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 */