(svn r13681) -Revert (r13678, r13677): the fixes didn't work in all cases (assertions on savegame loads).

-Fix [FS#2102]: but now in a hopefully beter way.
This commit is contained in:
rubidium 2008-07-08 15:10:23 +00:00
parent 03d32e12fb
commit d974acac89
4 changed files with 16 additions and 20 deletions

View File

@ -495,10 +495,13 @@ int32 SettingsDisableElrail(int32 p1)
}
}
/* setup total power for trains */
/* Fix the total power and acceleration for trains */
FOR_ALL_VEHICLES(v) {
/* power is cached only for front engines */
if (v->type == VEH_TRAIN && IsFrontEngine(v)) TrainPowerChanged(v);
/* power and acceleration is cached only for front engines */
if (v->type == VEH_TRAIN && IsFrontEngine(v)) {
TrainPowerChanged(v);
UpdateTrainAcceleration(v);
}
}
FOR_ALL_PLAYERS(p) p->avail_railtypes = GetPlayerRailtypes(p->index);

View File

@ -1265,8 +1265,6 @@ static bool InitializeWindowsAndCaches()
}
}
InitializeVehicleCaches();
SetCachedEngineCounts();
/* Towns have a noise controlled number of airports system

View File

@ -275,8 +275,17 @@ void AfterLoadVehicles(bool clear_te_id)
}
FOR_ALL_VEHICLES(v) {
assert(v->First() != NULL);
assert(v->first != NULL);
if (v->type == VEH_TRAIN && (IsFrontEngine(v) || IsFreeWagon(v))) {
if (IsFrontEngine(v)) v->u.rail.last_speed = v->cur_speed; // update displayed train speed
TrainConsistChanged(v);
} else if (v->type == VEH_ROAD && IsRoadVehFront(v)) {
RoadVehUpdateCache(v);
}
}
FOR_ALL_VEHICLES(v) {
switch (v->type) {
case VEH_ROAD:
v->u.road.roadtype = HasBit(EngInfo(v->engine_type)->misc_flags, EF_ROAD_TRAM) ? ROADTYPE_TRAM : ROADTYPE_ROAD;
@ -312,19 +321,6 @@ void AfterLoadVehicles(bool clear_te_id)
}
}
void InitializeVehicleCaches()
{
Vehicle *v;
FOR_ALL_VEHICLES(v) {
if (v->type == VEH_TRAIN && (IsFrontEngine(v) || IsFreeWagon(v))) {
if (IsFrontEngine(v)) v->u.rail.last_speed = v->cur_speed; // update displayed train speed
TrainConsistChanged(v);
} else if (v->type == VEH_ROAD && IsRoadVehFront(v)) {
RoadVehUpdateCache(v);
}
}
}
Vehicle::Vehicle()
{
this->type = VEH_INVALID;

View File

@ -191,7 +191,6 @@ DECLARE_OLD_POOL(Vehicle, Vehicle, 9, 125)
struct SaveLoad;
extern const SaveLoad *GetVehicleDescription(VehicleType vt);
extern void AfterLoadVehicles(bool clear_te_id);
extern void InitializeVehicleCaches();
struct LoadgameState;
extern bool LoadOldVehicle(LoadgameState *ls, int num);