changeset 2814:768940415fab draft

(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.
author peter1138 <peter1138@openttd.org>
date Wed, 04 Jan 2006 20:18:39 +0000
parents d5bd9ee4e23c
children 76e0d7970d05
files oldloader.c openttd.c vehicle.c vehicle.h
diffstat 4 files changed, 11 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- 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 @@
 	 * 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;
 }
 
--- a/openttd.c
+++ b/openttd.c
@@ -1135,6 +1135,10 @@
 	// 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);
 
--- a/vehicle.c
+++ b/vehicle.c
@@ -2252,7 +2252,7 @@
  *  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 @@
 			}
 		}
 	}
-
-	/* 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[] = {
--- a/vehicle.h
+++ b/vehicle.h
@@ -317,6 +317,7 @@
 int CheckTrainStoppedInDepot(const Vehicle *v);
 
 bool VehicleNeedsService(const Vehicle *v);
+void ConvertOldMultiheadToNew(void);
 
 typedef struct GetNewVehiclePosResult {
 	int x,y;