From 5aa117198821812ea4bf78c8269f81f1394fbbf3 Mon Sep 17 00:00:00 2001 From: smatz Date: Tue, 20 Jan 2009 22:33:29 +0000 Subject: (svn r15179) -Fix [FS#2560](r12096): removing of leftover level crossings (from very old savegames) failed --- src/saveload/afterload.cpp | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'src/saveload/afterload.cpp') diff --git a/src/saveload/afterload.cpp b/src/saveload/afterload.cpp index 21d11f97a..39c02f008 100644 --- a/src/saveload/afterload.cpp +++ b/src/saveload/afterload.cpp @@ -39,7 +39,6 @@ #include "../unmovable_map.h" #include "../tree_map.h" #include "../company_func.h" -#include "../command_func.h" #include "../road_cmd.h" #include "../ai/ai.hpp" @@ -1452,8 +1451,21 @@ bool AfterLoadGame() Owner o = GetTileOwner(t); if (!IsValidCompanyID(o)) { /* remove leftover rail piece from crossing (from very old savegames) */ - _current_company = o; - DoCommand(t, 0, GetCrossingRailTrack(t), DC_EXEC | DC_BANKRUPT, CMD_REMOVE_SINGLE_RAIL); + Vehicle *v = NULL, *w; + FOR_ALL_VEHICLES(w) { + if (w->type == VEH_TRAIN && w->tile == t) { + v = w; + break; + } + } + if (v != NULL) { + /* when there is a train on crossing (it could happen in TTD), set owner of crossing to train owner */ + SetTileOwner(t, v->owner); + } else { + /* else change the crossing to normal road (road vehicles won't care) */ + MakeRoadNormal(t, GetCrossingRoadBits(t), GetRoadTypes(t), GetTownIndex(t), + GetRoadOwner(t, ROADTYPE_ROAD), GetRoadOwner(t, ROADTYPE_TRAM), GetRoadOwner(t, ROADTYPE_HWAY)); + } } } } -- cgit v1.2.3-54-g00ecf