summaryrefslogtreecommitdiff
path: root/src/saveload/station_sl.cpp
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2009-12-04 20:52:19 +0000
committerrubidium <rubidium@openttd.org>2009-12-04 20:52:19 +0000
commitfac2f8ce1ad9b527bbfdd1b80b727282a1e84e73 (patch)
tree534ac167cbfaa6800571d6acd6c58f5782439507 /src/saveload/station_sl.cpp
parent65b3e38beab6454ec67eae26f30db548a84d437d (diff)
downloadopenttd-fac2f8ce1ad9b527bbfdd1b80b727282a1e84e73.tar.xz
(svn r18404) -Codechange: link drive through stops better together
-Feature: make penalty for road stop occupancy user configurable -Fix [FS#1944]: road vehicles would not pick an empty drive through stop. Now they will *if* the penalty for driving around is less than the occupancy penalty -Fix [FS#1495]: long (articulated) road vehicles could block loading of others when the following road vehicle already got 'permission' to go to the next bay even when it could not reach it -Change: improve the throughput of the drive through road stops by letting them stop closer together
Diffstat (limited to 'src/saveload/station_sl.cpp')
-rw-r--r--src/saveload/station_sl.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/saveload/station_sl.cpp b/src/saveload/station_sl.cpp
index 6c52e7cf6..a25eb556d 100644
--- a/src/saveload/station_sl.cpp
+++ b/src/saveload/station_sl.cpp
@@ -15,6 +15,7 @@
#include "../roadstop_base.h"
#include "../vehicle_base.h"
#include "../newgrf_station.h"
+#include "../station_map.h"
#include "saveload.h"
#include "table/strings.h"
@@ -108,6 +109,25 @@ void AfterLoadStations()
}
}
+/**
+ * (Re)building of road stop caches after loading a savegame.
+ */
+void AfterLoadRoadStops()
+{
+ /* First construct the drive through entries */
+ RoadStop *rs;
+ FOR_ALL_ROADSTOPS(rs) {
+ if (IsDriveThroughStopTile(rs->xy)) rs->MakeDriveThrough();
+ }
+ /* And then rebuild the data in those entries */
+ FOR_ALL_ROADSTOPS(rs) {
+ if (!HasBit(rs->status, RoadStop::RSSFB_BASE_ENTRY)) continue;
+
+ rs->GetEntry(DIAGDIR_NE)->Rebuild(rs);
+ rs->GetEntry(DIAGDIR_NW)->Rebuild(rs);
+ }
+}
+
static const SaveLoad _roadstop_desc[] = {
SLE_VAR(RoadStop, xy, SLE_UINT32),
SLE_CONDNULL(1, 0, 44),