diff options
author | rubidium <rubidium@openttd.org> | 2009-10-18 17:47:38 +0000 |
---|---|---|
committer | rubidium <rubidium@openttd.org> | 2009-10-18 17:47:38 +0000 |
commit | 4ad30fecdee33708bc95a8e790b4c85814c36317 (patch) | |
tree | add505802b1e9bf6d90260df0b1f3277c8782e1f /src/saveload/afterload.cpp | |
parent | 8a34641f48d6c74ad0347a21567c7891a96a771d (diff) | |
download | openttd-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.cpp | 46 |
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)) { |