summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpeter1138 <peter1138@openttd.org>2006-01-04 20:18:39 +0000
committerpeter1138 <peter1138@openttd.org>2006-01-04 20:18:39 +0000
commit28668bc30b1a1c9867bb88ec02cbbca499d099d5 (patch)
tree0023f060e36599542eb0542969bba61ff0e4a72e
parentb6721d7e95167d483e54b069c994c0ba91333122 (diff)
downloadopenttd-28668bc30b1a1c9867bb88ec02cbbca499d099d5.tar.xz
(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.
-rw-r--r--oldloader.c5
-rw-r--r--openttd.c4
-rw-r--r--vehicle.c7
-rw-r--r--vehicle.h1
4 files changed, 11 insertions, 6 deletions
diff --git a/oldloader.c b/oldloader.c
index e25b6b9f1..95573c307 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 7d1438d21..d14861d88 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 e82bcf66e..c215c42a1 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 6226348d1..d4afef496 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;