summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2007-09-01 08:04:08 +0000
committerrubidium <rubidium@openttd.org>2007-09-01 08:04:08 +0000
commit0df355bbda0e97edb0c642188db663620dd2e4f6 (patch)
tree537bc6b71caed3b98d3d887fd5a2ef1a1d954b5a
parent1f7f4f6f6265b7c3f40e01501974ec9810c946d2 (diff)
downloadopenttd-0df355bbda0e97edb0c642188db663620dd2e4f6.tar.xz
(svn r11030) -Revert r11016, Fix [FS#1178]: the way to determine whether a station should get goods was not done properly.
-rw-r--r--src/economy.cpp1
-rw-r--r--src/openttd.cpp10
-rw-r--r--src/saveload.cpp2
-rw-r--r--src/station_cmd.cpp3
4 files changed, 13 insertions, 3 deletions
diff --git a/src/economy.cpp b/src/economy.cpp
index c20a7aca6..b46c37796 100644
--- a/src/economy.cpp
+++ b/src/economy.cpp
@@ -1629,7 +1629,6 @@ static void LoadUnloadVehicle(Vehicle *v, int *cargo_left)
ge->cargo.MoveTo(&v->cargo, cap, CargoList::MTA_CARGO_LOAD, st->xy);
- SETBIT(ge->acceptance_pickup, GoodsEntry::PICKUP);
st->time_since_load = 0;
st->last_vehicle_type = v->type;
diff --git a/src/openttd.cpp b/src/openttd.cpp
index f17f459cb..07aaefd3a 100644
--- a/src/openttd.cpp
+++ b/src/openttd.cpp
@@ -2169,6 +2169,16 @@ bool AfterLoadGame()
}
}
+ if (CheckSavegameVersion(74)) {
+ Station *st;
+ FOR_ALL_STATIONS(st) {
+ for (CargoID c = 0; c < NUM_CARGO; c++) {
+ st->goods[c].last_speed = 0;
+ if (st->goods[c].cargo.Count() != 0) SETBIT(st->goods[c].acceptance_pickup, GoodsEntry::PICKUP);
+ }
+ }
+ }
+
return true;
}
diff --git a/src/saveload.cpp b/src/saveload.cpp
index 68b4fa808..d9e0ddedd 100644
--- a/src/saveload.cpp
+++ b/src/saveload.cpp
@@ -29,7 +29,7 @@
#include "strings.h"
#include <list>
-extern const uint16 SAVEGAME_VERSION = 73;
+extern const uint16 SAVEGAME_VERSION = 74;
uint16 _sl_version; ///< the major savegame version identifier
byte _sl_minor_version; ///< the minor savegame version, DO NOT USE!
diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp
index fd2442ef2..19d838b0c 100644
--- a/src/station_cmd.cpp
+++ b/src/station_cmd.cpp
@@ -2532,6 +2532,7 @@ void ModifyStationRatingAround(TileIndex tile, PlayerID owner, int amount, uint
static void UpdateStationWaiting(Station *st, CargoID type, uint amount)
{
st->goods[type].cargo.Append(new CargoPacket(st->index, amount));
+ SETBIT(st->goods[type].acceptance_pickup, GoodsEntry::PICKUP);
InvalidateWindow(WC_STATION_VIEW, st->index);
st->MarkTilesDirty(true);
@@ -2619,7 +2620,7 @@ uint MoveGoodsToStation(TileIndex tile, int w, int h, CargoID type, uint amount)
if (!st->IsBuoy() &&
(st->town->exclusive_counter == 0 || st->town->exclusivity == st->owner) && // check exclusive transport rights
st->goods[type].rating != 0 && // when you've got the lowest rating you can get, it's better not to give cargo anymore
- (!_patches.selectgoods || HASBIT(st->goods[type].acceptance_pickup, GoodsEntry::PICKUP)) && // we are servicing the station (or cargo is dumped on all stations)
+ (!_patches.selectgoods || st->goods[type].last_speed != 0) && // we are servicing the station (or cargo is dumped on all stations)
((st->facilities & ~FACIL_BUS_STOP) != 0 || IsCargoInClass(type, CC_PASSENGERS)) && // if we have other fac. than a bus stop, or the cargo is passengers
((st->facilities & ~FACIL_TRUCK_STOP) != 0 || !IsCargoInClass(type, CC_PASSENGERS))) { // if we have other fac. than a cargo bay or the cargo is not passengers
if (_patches.modified_catchment) {