summaryrefslogtreecommitdiff
path: root/src/saveload/afterload.cpp
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2009-10-18 17:47:38 +0000
committerrubidium <rubidium@openttd.org>2009-10-18 17:47:38 +0000
commit4ad30fecdee33708bc95a8e790b4c85814c36317 (patch)
treeadd505802b1e9bf6d90260df0b1f3277c8782e1f /src/saveload/afterload.cpp
parent8a34641f48d6c74ad0347a21567c7891a96a771d (diff)
downloadopenttd-4ad30fecdee33708bc95a8e790b4c85814c36317.tar.xz
(svn r17806) -Codechange: split CargoPacket's 'afterload' to a separate function
Diffstat (limited to 'src/saveload/afterload.cpp')
-rw-r--r--src/saveload/afterload.cpp46
1 files changed, 1 insertions, 45 deletions
diff --git a/src/saveload/afterload.cpp b/src/saveload/afterload.cpp
index c08bba5ab..bcfa76885 100644
--- a/src/saveload/afterload.cpp
+++ b/src/saveload/afterload.cpp
@@ -1226,43 +1226,7 @@ bool AfterLoadGame()
}
}
- if (CheckSavegameVersion(44)) {
- Vehicle *v;
- /* If we remove a station while cargo from it is still enroute, payment calculation will assume
- * 0, 0 to be the source of the cargo, resulting in very high payments usually. v->source_xy
- * stores the coordinates, preserving them even if the station is removed. However, if a game is loaded
- * where this situation exists, the cargo-source information is lost. in this case, we set the source
- * to the current tile of the vehicle to prevent excessive profits
- */
- FOR_ALL_VEHICLES(v) {
- const VehicleCargoList::List *packets = v->cargo.Packets();
- for (VehicleCargoList::List::const_iterator it = packets->begin(); it != packets->end(); it++) {
- CargoPacket *cp = *it;
- cp->source_xy = Station::IsValidID(cp->source) ? Station::Get(cp->source)->xy : v->tile;
- cp->loaded_at_xy = cp->source_xy;
- }
- v->cargo.InvalidateCache();
- }
-
- /* Store position of the station where the goods come from, so there
- * are no very high payments when stations get removed. However, if the
- * station where the goods came from is already removed, the source
- * information is lost. In that case we set it to the position of this
- * station */
- Station *st;
- FOR_ALL_STATIONS(st) {
- for (CargoID c = 0; c < NUM_CARGO; c++) {
- GoodsEntry *ge = &st->goods[c];
-
- const StationCargoList::List *packets = ge->cargo.Packets();
- for (StationCargoList::List::const_iterator it = packets->begin(); it != packets->end(); it++) {
- CargoPacket *cp = *it;
- cp->source_xy = Station::IsValidID(cp->source) ? Station::Get(cp->source)->xy : st->xy;
- cp->loaded_at_xy = cp->source_xy;
- }
- }
- }
- }
+ CargoPacket::AfterLoad();
if (CheckSavegameVersion(45)) {
Vehicle *v;
@@ -1277,14 +1241,6 @@ bool AfterLoadGame()
}
}
- if (CheckSavegameVersion(120)) {
- /* CargoPacket's source should be either INVALID_STATION or a valid station */
- CargoPacket *cp;
- FOR_ALL_CARGOPACKETS(cp) {
- if (!Station::IsValidID(cp->source)) cp->source = INVALID_STATION;
- }
- }
-
/* Buoys do now store the owner of the previous water tile, which can never
* be OWNER_NONE. So replace OWNER_NONE with OWNER_WATER. */
if (CheckSavegameVersion(46)) {