Changeset - r9622:87db2c291409
[Not reviewed]
master
0 3 0
rubidium - 16 years ago 2008-07-06 11:08:40
rubidium@openttd.org
(svn r13678) -Fix (r13677): electric trains from pre elrail savegames would get stopped on load.
3 files changed with 25 insertions and 21 deletions:
0 comments (0 inline, 0 general)
src/openttd.cpp
Show inline comments
 
@@ -1265,6 +1265,8 @@ static bool InitializeWindowsAndCaches()
 
		}
 
	}
 

	
 
	InitializeVehicleCaches();
 

	
 
	SetCachedEngineCounts();
 

	
 
	/* Towns have a noise controlled number of airports system
 
@@ -1382,16 +1384,6 @@ bool AfterLoadGame()
 
	/* reinit the landscape variables (landscape might have changed) */
 
	InitializeLandscapeVariables(true);
 

	
 
	/* from version 38 we have optional elrails, since we cannot know the
 
	 * preference of a user, let elrails enabled; it can be disabled manually */
 
	if (CheckSavegameVersion(38)) _settings_game.vehicle.disable_elrails = false;
 

	
 
	/* Do the same as when elrails were enabled/disabled manually just now.
 
	 * This needs to be done before AfterLoadVehicles because that relies on
 
	 * the compatible railtypes and such to be correct. */
 
	SettingsDisableElrail(_settings_game.vehicle.disable_elrails);
 
	InitializeRailGUI();
 

	
 
	/* Update all vehicles */
 
	AfterLoadVehicles(true);
 

	
 
@@ -1963,6 +1955,13 @@ bool AfterLoadGame()
 
		}
 
	}
 

	
 
	/* from version 38 we have optional elrails, since we cannot know the
 
	 * preference of a user, let elrails enabled; it can be disabled manually */
 
	if (CheckSavegameVersion(38)) _settings_game.vehicle.disable_elrails = false;
 
	/* do the same as when elrails were enabled/disabled manually just now */
 
	SettingsDisableElrail(_settings_game.vehicle.disable_elrails);
 
	InitializeRailGUI();
 

	
 
	/* From version 53, the map array was changed for house tiles to allow
 
	 * space for newhouses grf features. A new byte, m7, was also added. */
 
	if (CheckSavegameVersion(53)) {
src/vehicle.cpp
Show inline comments
 
@@ -275,17 +275,8 @@ void AfterLoadVehicles(bool clear_te_id)
 
	}
 

	
 
	FOR_ALL_VEHICLES(v) {
 
		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) {
 
		assert(v->First() != NULL);
 

	
 
		switch (v->type) {
 
			case VEH_ROAD:
 
				v->u.road.roadtype = HasBit(EngInfo(v->engine_type)->misc_flags, EF_ROAD_TRAM) ? ROADTYPE_TRAM : ROADTYPE_ROAD;
 
@@ -321,6 +312,19 @@ 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;
src/vehicle_base.h
Show inline comments
 
@@ -191,6 +191,7 @@ DECLARE_OLD_POOL(Vehicle, Vehicle, 9, 12
 
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);
 

	
0 comments (0 inline, 0 general)