From 4b464093e7e69272728afc730874d1d10a9a5d35 Mon Sep 17 00:00:00 2001 From: peter1138 Date: Wed, 4 Jan 2006 20:18:39 +0000 Subject: [PATCH] (svn r3362) Fix issue with loading old (TTD) savegames: - move call to convert from old to new train subtypes. - ensure AI is started for AI players. --- oldloader.c | 5 +++++ openttd.c | 4 ++++ vehicle.c | 7 +------ vehicle.h | 1 + 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/oldloader.c b/oldloader.c index e25b6b9f15..95573c3075 100644 --- a/oldloader.c +++ b/oldloader.c @@ -15,6 +15,8 @@ #include "signs.h" #include "debug.h" #include "depot.h" +#include "network.h" +#include "ai/ai.h" enum { HEADER_SIZE = 49, @@ -1065,6 +1067,9 @@ static bool LoadOldPlayer(LoadgameState *ls, int num) * to some harmless state, like 'loop vehicle'; 1 */ if (!IS_HUMAN_PLAYER(num) && p->ai.state == 20) p->ai.state = 1; + if (p->is_ai && (!_networking || _network_server) && _ai.enabled) + AI_StartNewAI(p->index); + return true; } diff --git a/openttd.c b/openttd.c index 7d1438d212..d14861d88d 100644 --- a/openttd.c +++ b/openttd.c @@ -1135,6 +1135,10 @@ bool AfterLoadGame(void) // Load the sprites GfxLoadSprites(); + /* Connect front and rear engines of multiheaded trains and converts + * subtype to the new format */ + if (CheckSavegameVersionOldStyle(17, 1)) ConvertOldMultiheadToNew(); + // Update current year SetDate(_date); diff --git a/vehicle.c b/vehicle.c index e82bcf66e0..c215c42a17 100644 --- a/vehicle.c +++ b/vehicle.c @@ -2252,7 +2252,7 @@ static void Save_VEHS(void) * Converts all trains to the new subtype format introduced in savegame 16.2 * It also links multiheaded engines or make them forget they are multiheaded if no suitable partner is found */ -static inline void ConvertOldMultiheadToNew(void) +void ConvertOldMultiheadToNew(void) { Vehicle *v; FOR_ALL_VEHICLES(v) { @@ -2396,11 +2396,6 @@ static void Load_VEHS(void) } } } - - /* Connect front and rear engines of multiheaded trains and converts subtype to the new format */ - if (CheckSavegameVersionOldStyle(17, 1)) { - ConvertOldMultiheadToNew(); - } } const ChunkHandler _veh_chunk_handlers[] = { diff --git a/vehicle.h b/vehicle.h index 6226348d18..d4afef496c 100644 --- a/vehicle.h +++ b/vehicle.h @@ -317,6 +317,7 @@ int32 GetTrainRunningCost(const Vehicle *v); int CheckTrainStoppedInDepot(const Vehicle *v); bool VehicleNeedsService(const Vehicle *v); +void ConvertOldMultiheadToNew(void); typedef struct GetNewVehiclePosResult { int x,y;