Mercurial > hg > openttd
changeset 6304:dafe7e537d11 draft
(svn r9147) -Fix (r1770, r8161): when loadin games, enroute_from and enroute_from_xy were updated in the wrong place, causing issues with TTD savegames/scenarios.
author | peter1138 <peter1138@openttd.org> |
---|---|
date | Tue, 13 Mar 2007 21:31:09 +0000 |
parents | a2428077ccb4 |
children | 13842c0ef6a9 |
files | src/openttd.cpp src/station_cmd.cpp |
diffstat | 2 files changed, 19 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/src/openttd.cpp +++ b/src/openttd.cpp @@ -1792,6 +1792,25 @@ FOR_ALL_VEHICLES(v) { v->cargo_source_xy = IsValidStationID(v->cargo_source) ? GetStation(v->cargo_source)->xy : v->tile; } + + /* 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]; + + /* In old versions, enroute_from used 0xFF as INVALID_STATION */ + if (CheckSavegameVersion(7) && ge->enroute_from == 0xFF) { + ge->enroute_from = INVALID_STATION; + } + + ge->enroute_from_xy = IsValidStationID(ge->enroute_from) ? GetStation(ge->enroute_from)->xy : st->xy; + } + } } if (CheckSavegameVersion(45)) {
--- a/src/station_cmd.cpp +++ b/src/station_cmd.cpp @@ -2797,18 +2797,6 @@ SlObject(st, _station_desc); for (uint i = 0; i != NUM_CARGO; i++) { SlObject(&st->goods[i], _goods_desc); - - /* In older versions, enroute_from had 0xFF as INVALID_STATION, is now 0xFFFF */ - if (CheckSavegameVersion(7) && st->goods[i].enroute_from == 0xFF) { - st->goods[i].enroute_from = INVALID_STATION; - } - if (CheckSavegameVersion(44)) { - /* 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 */ - st->goods[i].enroute_from_xy = IsValidStationID(st->goods[i].enroute_from) ? GetStation(st->goods[i].enroute_from)->xy : st->xy; - } } if (st->num_specs != 0) {